Имя: Пароль:
1C
1С v8
Отбор из группы справочника
,
0 Татьяна525
 
04.08.23
18:17
Добрый вечер. Прошу сильно не ругаться. Знаю, вопрос элементарный, но уже подзабыла, как это делается.
На форме есть табличное поле. В нем колонка "Родитель", там мне нужно выбирать группу из справочника Номенклатура.
В справочнике Номенклатура есть много групп с одинаковым названием. Мне нужно, чтобы при вводе текста (названия группы) в поле "Родитель" 1с предлагал варианты только из одной определенной группы (общей группы "Игрушки"). И не показывал группы, которые не лежат в папке "Игрушки".
Как это можно сделать?
Выбор группы осуществляется именно при ручном вводе названия группы в поле.
1 Татьяна525
 
04.08.23
18:20
2 Татьяна525
 
04.08.23
18:21
3 Татьяна525
 
04.08.23
18:27
Делала так. Составляла запрос, в нем делала выборку групп по введенному тексту (с помощью "подобно") и формировала свой список значений в процедуре "ПриОкончанииРедактирования". Работает, но очень долго, хотелось бы побыстрее
4 Гипервизор
 
04.08.23
18:57
Конфигурация какая?
5 Татьяна525
 
04.08.23
19:02
(4) Розница, 8.3
6 Гипервизор
 
04.08.23
19:31
Думаю, вам надо смотреть в сторону ПолучитьДанныеВыбора.
7 Татьяна525
 
05.08.23
21:27
(6) Спасибо, буду смотреть)
8 Остап Ибрагимович
 
06.08.23
22:08
почему бы не выбор из списка - с формированием предварительно списка выбора из только доступных групп?
9 Татьяна525
 
07.08.23
12:24
(8) Делала так. Работает, но долго выполняется запрос, товаров много

Процедура ТабличноеПоле2РодительОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)      
    СтандартнаяОбработка = Ложь;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Ссылка
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.Ссылка В ИЕРАРХИИ(&ВерхнийРодитель)
                   |    И Номенклатура.Наименование ПОДОБНО &Текст + ""%""
                   |    И Номенклатура.ЭтоГруппа";  
    Запрос.УстановитьПараметр("ВерхнийРодитель", Справочники.Номенклатура.НайтиПоКоду("РТ000197725"));  
    Запрос.УстановитьПараметр("Текст", Текст);
    МассивМ = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");  
    СписокМ = Новый СписокЗначений;
    СписокМ.ЗагрузитьЗначения(МассивМ);
    Элемент.Значение = ЭтаФорма.ВыбратьИзСписка(СписокМ, Элемент);
КонецПроцедуры
10 sqr4
 
07.08.23
12:30
(9) попробуйте В ИЕРАРХИИ убрать, а первоначально получить список возможных родителей.
11 Татьяна525
 
07.08.23
12:51
(10) То есть "Подобно" оставить, убрать только "В иерархии". Сделала. Отрабатывает быстро. Но ведь потом все равно нужно получить именно те группы, которые лежат в одной конкретной верхней группе
12 sqr4
 
07.08.23
13:35
(11) наслаждайтесь https://infostart.ru/1c/articles/1105799/
13 Татьяна525
 
07.08.23
13:39
(12) Спасибо большое! Уже разобралась, сделала так. Работает великолепно, список открывает быстро.

Процедура ТабличноеПоле2РодительОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)      
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Наименование ПОДОБНО &Текст + ""%""
    |    И Номенклатура.ЭтоГруппа";  
    Запрос.УстановитьПараметр("Текст", Текст);      
    Выб = Запрос.Выполнить().Выбрать();  
    ИМ = Справочники.Номенклатура.НайтиПоКоду("РТ000197725");
    Значение = Новый СписокЗначений;
    Пока Выб.Следующий() Цикл  
        Ном = Выб.Ссылка;
        РодВерх = ПолучитьРодителя(Ном);
        Если РодВерх = ИМ Тогда
            Значение.Добавить(Выб.Ссылка);
        КонецЕсли;
    КонецЦикла;
    СтандартнаяОбработка = Ложь;
КонецПроцедуры

Функция ПолучитьРодителя(СправочникСсылка)
    
    Пока НЕ СправочникСсылка.Родитель.Пустая() Цикл
        СправочникСсылка = СправочникСсылка.Родитель;    
    КонецЦикла;
    
    Возврат СправочникСсылка;
    
КонецФункции
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс