Список значений в составном типе. Задание типа значения списка.

Составной тип - коварный тип!

Задача: выполнять отбор в списке документов по контрагенту, используя виды отбора Равно, Не равно, В иерархии и В списке.

Добавил реквизит формы ПоКонтрагенту, задал для него составной тип (СправочникСсылка.Контрагент и СписокЗначений) что бы можно было указывать множество контрагентов для вида отбора В списке. Решил проверить работу выбора контрагентов и ужаснулся, при выборе типа реквизита Список значений, добавление каждого контрагента в список происходило через выбор типа значения списка!
1. Выбор типа значения списка

Не очень уж удобно, особенно для пользователя. Выход из этой ситуации нашелся изучением последовательности выполнения событий для элемента формы, который связан с реквизитом формы ПоКонтрагенту. Событие ПриИзменении срабатывает два раза: после выбора типа реквизита и после выбора контрагента(ов). Следовательно, в этом событии необходимо написать условие проверки на тип СписокЗначений и установить тип значения списка.

&НаКлиенте
Процедура ПоКонтрагентуПриИзменении(Элемент)

Если ТипЗнч(ЭтаФорма.ПоКонтрагенту) = Тип("СписокЗначений") Тогда
ЭтаФорма.Пользователь.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");
КонецЕсли;

КонецПроцедуры


2. Заполнение списка значений контраентами
Теперь, каждый раз при выборе типа Список значений, будет устанавливаться необходимый тип значения списка, что избавит пользователя от лишних действия и вопросов.

Комментарии

  1. у реквизита формы есть тип значения, можно было там указать

    ОтветитьУдалить
  2. Автору: Огонь просто!
    Пред. комментатору: когда для реквизита выбран "Составной тип" из "Справочника" и "СпискаЗначений" - то задать тип в свойствах для "СпискаЗначений" нельзя, только через код.

    ОтветитьУдалить
  3. Ничего не понятно, что такое "Пользователь"

    ОтветитьУдалить

Отправить комментарий