Список значений в составном типе. Задание типа значения списка.
Составной тип - коварный тип!
Задача: выполнять отбор в списке документов по контрагенту, используя виды отбора Равно, Не равно, В иерархии и В списке.
Добавил реквизит формы ПоКонтрагенту, задал для него составной тип (СправочникСсылка.Контрагент и СписокЗначений) что бы можно было указывать множество контрагентов для вида отбора В списке. Решил проверить работу выбора контрагентов и ужаснулся, при выборе типа реквизита Список значений, добавление каждого контрагента в список происходило через выбор типа значения списка!
Не очень уж удобно, особенно для пользователя. Выход из этой ситуации нашелся изучением последовательности выполнения событий для элемента формы, который связан с реквизитом формы ПоКонтрагенту. Событие ПриИзменении срабатывает два раза: после выбора типа реквизита и после выбора контрагента(ов). Следовательно, в этом событии необходимо написать условие проверки на тип СписокЗначений и установить тип значения списка.
Теперь, каждый раз при выборе типа Список значений, будет устанавливаться необходимый тип значения списка, что избавит пользователя от лишних действия и вопросов.
Задача: выполнять отбор в списке документов по контрагенту, используя виды отбора Равно, Не равно, В иерархии и В списке.
Добавил реквизит формы ПоКонтрагенту, задал для него составной тип (СправочникСсылка.Контрагент и СписокЗначений) что бы можно было указывать множество контрагентов для вида отбора В списке. Решил проверить работу выбора контрагентов и ужаснулся, при выборе типа реквизита Список значений, добавление каждого контрагента в список происходило через выбор типа значения списка!
![]() |
1. Выбор типа значения списка |
Не очень уж удобно, особенно для пользователя. Выход из этой ситуации нашелся изучением последовательности выполнения событий для элемента формы, который связан с реквизитом формы ПоКонтрагенту. Событие ПриИзменении срабатывает два раза: после выбора типа реквизита и после выбора контрагента(ов). Следовательно, в этом событии необходимо написать условие проверки на тип СписокЗначений и установить тип значения списка.
&НаКлиенте
Процедура ПоКонтрагентуПриИзменении(Элемент)
Если ТипЗнч(ЭтаФорма.ПоКонтрагенту) = Тип("СписокЗначений") Тогда
ЭтаФорма.Пользователь.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");
КонецЕсли;
КонецПроцедуры
![]() |
2. Заполнение списка значений контраентами |
у реквизита формы есть тип значения, можно было там указать
ОтветитьУдалитьАвтору: Огонь просто!
ОтветитьУдалитьПред. комментатору: когда для реквизита выбран "Составной тип" из "Справочника" и "СпискаЗначений" - то задать тип в свойствах для "СпискаЗначений" нельзя, только через код.
Ничего не понятно, что такое "Пользователь"
ОтветитьУдалить