|
Как найти в таблице в справочнике нужную ссылку | ☑ | ||
---|---|---|---|---|
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) Надеюсь, ты пишешь и проверяешь свои запросы в какой-нибудь сторонней обработке "Консоль запросов" ?
Идея разработки -- написали, проверили, отладили запрос в консоли, а затем перенесли его в код. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |