| 
    
            
         
         | 
    
  | 
Как найти в таблице в справочнике нужную ссылку | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        apdate by    
     28.06.21 
            ✎
    12:16 
 | 
         
        Всем привет!
 
        Имеем справочник в нем таблица в таблице одна колонка "Группа" далее имеем цикл по товарам мне нужно ка кто быстро проверить нету ли родителя в таблице справочника что выше? как реализовать да и можно ли вообще?  | 
|||
| 
    1
    
        1Сергей    
     28.06.21 
            ✎
    12:20 
 | 
         
        Если запросы запрещены по религиозным соображениям, то делать второй цикл по табличной части.
 
        (Если я правильно сванговал что такое таблица в справочнике)  | 
|||
| 
    2
    
        apdate by    
     28.06.21 
            ✎
    12:22 
 | 
         
        да верно не  хочу писать запросы 
 
        а без цикла нету метода? в массиве вроде(ж) есть (ошибаюсь)?  | 
|||
| 
    3
    
        apdate by    
     28.06.21 
            ✎
    12:23 
 | 
         
        если нету такого метода помогите с запросом? пожалуйста :-)     
         | 
|||
| 
    4
    
        Бишбармак    
     28.06.21 
            ✎
    12:24 
 | 
         
        1) Товары в массив
 
        2) а) Массив и б) "ту таблицу" в запрос 3) В запросе ГДЕ родитель в "ту таблицу".  | 
|||
| 
    5
    
        1Сергей    
     28.06.21 
            ✎
    12:28 
 | 
         
        (3) НаятиСтроки     
         | 
|||
| 
    6
    
        apdate by    
     28.06.21 
            ✎
    12:29 
 | 
         
        (5) СпрСсылка.ИмяТаб.НайтиСтроки("Колонка","Знач") верно?     
         | 
|||
| 
    7
    
        apdate by    
     28.06.21 
            ✎
    12:31 
 | 
         
        В СП 
 
        ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Номенклатура", ТекТовар); НайденныеСтроки = Состав.НайтиСтроки(ПараметрыОтбора); кто такой "Состав" Ссылка на справочник верно?  | 
|||
| 
    8
    
        1Сергей    
     28.06.21 
            ✎
    12:32 
 | 
         
        (7) нет, это табличная часть     
         | 
|||
| 
    9
    
        apdate by    
     28.06.21 
            ✎
    12:32 
 | 
         
        (7) туплю извините на ИмяСправочника.Ссылка.ИмяТаблицы?     
         | 
|||
| 
    10
    
        1Сергей    
     28.06.21 
            ✎
    12:32 
 | 
         
        Мы ведь не про семерку?     
         | 
|||
| 
    11
    
        apdate by    
     28.06.21 
            ✎
    12:33 
 | 
         
        (8) спасибо! очень помогли )     
         | 
|||
| 
    12
    
        apdate by    
     28.06.21 
            ✎
    12:33 
 | 
         
        ))) нет но в 8 есть этот метод и вроде подходит )     
         | 
|||
| 
    13
    
        1Сергей    
     28.06.21 
            ✎
    12:33 
 | 
         
        (9) нет. Ссылка на конкретный элемент справочника, или справочникобъект     
         | 
|||
| 
    14
    
        apdate by    
     28.06.21 
            ✎
    12:35 
 | 
         
        (13) :-) да я это и имел в виду (понедельник видимо морожу (     
         | 
|||
| 
    15
    
        apdate by    
     28.06.21 
            ✎
    12:50 
 | 
         
        (0) не все-же морожу (
 
        В общем есть справочник НастройкиАндроид у него есть таблица с одним полем "ГруппыИсключения" В модуле в процедуре которая подписана на событие при записи получаю все элементы номенклатуры мне необходимо проверить не в иерархии ли она групп исключения помогите с запросом что то не догоняю (  | 
|||
| 
    16
    
        apdate by    
     28.06.21 
            ✎
    12:56 
 | 
         
        Выбрать
 
        ГруппаИсключение ИЗ Не Знаю Как Задать Здесь Таблицу?? ГДЕ Номенклатура НЕ В ИЕРАРХИИ (Так-же не знаю что писать здесь)  | 
|||
| 
    17
    
        apdate by    
     28.06.21 
            ✎
    12:57 
 | 
         
        но по сути мнедаже не нужны строки и т д мне нужно получить ложь не в иерархии и истину если в иерархии     
         | 
|||
| 
    18
    
        apdate by    
     28.06.21 
            ✎
    13:15 
 | 
         
        Что то не получается
 
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварПереданный.Ссылка |ИЗ | ТоварПереданный КАК ТоварПереданный |ГДЕ | ТоварПереданный.Ссылка В ИЕРАРХИИ(&ГруппыИсключений)"; Запрос.УстановитьПараметр("ТоварПереданный", Род); Запрос.УстановитьПараметр("ГруппыИсключений", УзелОбмена.ГруппыИсключения); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА  | 
|||
| 
    19
    
        apdate by    
     28.06.21 
            ✎
    13:23 
 | 
         
        может можно как то получить ссылку на группу по уровню
 
        пример Товар.Родитель[0]?? ато с запросами у меня косяк (  | 
|||
| 
    20
    
        apdate by    
     28.06.21 
            ✎
    13:37 
 | 
         
        Запрос = Новый Запрос;
 
        Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение)"; Запрос.УстановитьПараметр("ГруппаИсключение", Здесь можно ли задать несколько грпп?); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла;  | 
|||
| 
    21
    
        apdate by    
     28.06.21 
            ✎
    13:37 
 | 
         
        можно ли указать не одну группу а список групп и проверять в иерархии ли?     
         | 
|||
| 
    22
    
        apdate by    
     28.06.21 
            ✎
    13:41 
 | 
         
        В общем пока написал так (
 
        Функция ОтвечаетТребованиям(УзелОбмена, Товар) ВИерархии = Ложь; Если УзелОбмена.ГруппыИсключения.Количество() > 0 Тогда Для каждого ГруппИскл Из УзелОбмена.ГруппыИсключения Цикл //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение) | И Номенклатура.Ссылка = &ВыбТовар"; Запрос.УстановитьПараметр("ВыбТовар", Товар); Запрос.УстановитьПараметр("ГруппаИсключение", ГруппИскл.ГруппаИсключения); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ВИерархии = Истина; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецЦикла; КонецЕсли; Возврат ВИерархии; КонецФункции  | 
|||
| 
    23
    
        apdate by    
     28.06.21 
            ✎
    13:46 
 | 
         
        (22) так все работает верно но нельзя ли ка кто ускорить или упростить или и то и другое?     
         | 
|||
| 
    24
    
        Мультук    
     гуру 
    28.06.21 
            ✎
    14:07 
 | 
         
        (22) 
 
        МассивГруппИсключений = УзелОбмена.ГруппыИсключения.ВыгрузитьКолонку("ГруппаИсключения"); Запрос.УстановитьПараметр("ГруппаИсключение", МассивГруппИсключений); Цикл - не нужен  | 
|||
| 
    25
    
        Мультук    
     гуру 
    28.06.21 
            ✎
    14:10 
 | 
         
        (22) 
 
        ВИерархии = не РезультатЗапроса.Пустой(); Цикл "Пока" тоже не нужен.  | 
|||
| 
    26
    
        apdate by    
     28.06.21 
            ✎
    14:13 
 | 
         
        что то (24) не хочет отрабатывать (
 
        Функция ОтвечаетТребованиям(УзелОбмена, Товар) Отвечает = Истина; Если УзелОбмена.ГруппыИсключения.Количество() > 0 Тогда МассивГруппИсключений = УзелОбмена.ГруппыИсключения.ВыгрузитьКолонку("ГруппаИсключения"); //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение) | И Номенклатура.Ссылка = &ВыбТовар | И Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И Номенклатура.ФайлКартинки <> ЗНАЧЕНИЕ(Справочник.НоменклатураПрисоединенныеФайлы.ПустаяСсылка) | И Номенклатура.ФайлКартинки.ПометкаУдаления = &ПометкаУдаления"; Запрос.УстановитьПараметр("ВыбТовар", Товар); Запрос.УстановитьПараметр("ГруппаИсключение", МассивГруппИсключений); Запрос.УстановитьПараметр("ПометкаУдаления", Ложь); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Отвечает = Ложь; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецЕсли; Возврат Отвечает; КонецФункции  | 
|||
| 
    27
    
        apdate by    
     28.06.21 
            ✎
    14:26 
 | 
         
        (26) простите я совсем уже морожу вс еработает (сам установил что ы только с картинками было и т д
 
        а в итоге перезаписывал не тот товар ( все работает спасибо большое! Функция ОтвечаетТребованиям(УзелОбмена, Товар) Отвечает = Истина; Если УзелОбмена.ГруппыИсключения.Количество() > 0 Тогда МассивГруппИсключений = УзелОбмена.ГруппыИсключения.ВыгрузитьКолонку("ГруппаИсключения"); //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение) | И Номенклатура.Ссылка = &ВыбТовар"; Запрос.УстановитьПараметр("ВыбТовар", Товар); Запрос.УстановитьПараметр("ГруппаИсключение", МассивГруппИсключений); Запрос.УстановитьПараметр("ПометкаУдаления", Ложь); РезультатЗапроса = Запрос.Выполнить(); Если не РезультатЗапроса.Пустой() Тогда Возврат Ложь; КонецЕсли; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецЕсли; Возврат Отвечает; КонецФункции  | 
|||
| 
    28
    
        apdate by    
     28.06.21 
            ✎
    14:36 
 | 
         
        |ГДЕ
 
        | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение) | И Номенклатура.Ссылка = &ВыбТовар"; а можно ли в запросе использовать в т.ч ИЛИ ? мне необходимо так-же проверить заполнена ли картинка , есть ли вообще родитель, и не помечена ли картинка на удаление.  | 
|||
| 
    29
    
        apdate by    
     28.06.21 
            ✎
    14:43 
 | 
         
        такой запрос будет верным?
 
        Мне нужно проверить Что бы необходимый товар не входил в группы исключения, либо у товара есть картинка и картинка не помечена на удаление а так же что родитель у товара заполенен Функция ОтвечаетТребованиям(УзелОбмена, Товар) Отвечает = Ложь; Если УзелОбмена.ГруппыИсключения.Количество() > 0 Тогда МассивГруппИсключений = УзелОбмена.ГруппыИсключения.ВыгрузитьКолонку("ГруппаИсключения"); //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение) | И Номенклатура.Ссылка = &ВыбТовар | ИЛИ Номенклатура.ФайлКартинки = ЗНАЧЕНИЕ(Справочник.НоменклатураПрисоединенныеФайлы.ПустаяСсылка) | ИЛИ Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | ИЛИ Номенклатура.ФайлКартинки.ПометкаУдаления = &ПометкаУдаления"; Запрос.УстановитьПараметр("ВыбТовар", Товар); Запрос.УстановитьПараметр("ГруппаИсключение", МассивГруппИсключений); Запрос.УстановитьПараметр("ПометкаУдаления", Ложь); РезультатЗапроса = Запрос.Выполнить(); Если не РезультатЗапроса.Пустой() Тогда Возврат Ложь; КонецЕсли; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецЕсли; Возврат Отвечает; КонецФункции  | 
|||
| 
    30
    
        apdate by    
     28.06.21 
            ✎
    14:58 
 | 
         
        Пока в силу плохого знания запросов в 1С (точнее совсем его незнания) :-) решил так
 
        Функция ОтвечаетТребованиям(УзелОбмена, Товар) Отвечает = Ложь; //Проверим не состоит ли товар в ненужных нам группах Если УзелОбмена.ГруппыИсключения.Количество() > 0 Тогда МассивГруппИсключений = УзелОбмена.ГруппыИсключения.ВыгрузитьКолонку("ГруппаИсключения"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение) | И Номенклатура.Ссылка = &ВыбТовар"; Запрос.УстановитьПараметр("ВыбТовар", Товар); Запрос.УстановитьПараметр("ГруппаИсключение", МассивГруппИсключений); Запрос.УстановитьПараметр("ПометкаУдаления", Ложь); РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() Тогда Возврат Ложь; КонецЕсли; КонецЕсли; //Проверим вс ели заполнено у товара Запрос_ = Новый Запрос; Запрос_.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ФайлКартинки <> ЗНАЧЕНИЕ(Справочник.НоменклатураПрисоединенныеФайлы.ПустаяСсылка) | И Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И Номенклатура.ФайлКартинки.ПометкаУдаления = &ПометкаУдаления | И Номенклатура.Ссылка = &Ссылка"; Запрос_.УстановитьПараметр("ПометкаУдаления", Ложь); Запрос_.УстановитьПараметр("Ссылка", Товар); РезультатЗапроса_ = Запрос_.Выполнить(); Если НЕ РезультатЗапроса_.Пустой() Тогда Возврат Истина; КонецЕсли; Возврат Отвечает; КонецФункции  | 
|||
| 
    31
    
        Мультук    
     гуру 
    28.06.21 
            ✎
    15:27 
 | 
         
        (30) Надеюсь, ты пишешь и проверяешь свои запросы в какой-нибудь сторонней обработке "Консоль запросов" ?
 
        Идея разработки -- написали, проверили, отладили запрос в консоли, а затем перенесли его в код.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |