Как мы уже говорили выше, путем установки типа значения элемента управления также можно изменять отображаемые данные, если данные используемого типа значения могут быть однозначно отображены в элементе управления. В следующем примере мы посмотрим, как можно изменять содержимое табличного поля, не используя реквизиты формы.
Нашей задачей будет создание в форме списка аналогичного механизма отображения движений документов "ОказаниеУслуги" в регистрах накопления.
Откроем конфигуратор и создадим основную форму списка документа "ОказаниеУслуги" с помощью конструктора. Расположим на ней переключатель из трех кнопок:
Зададим следующие выбираемые значения переключателей:
· | "ОстаткиМатериалов" – "Остатки", |
· | "СтоимостьМатериалов" – "Стоимость", |
· | "Продажи" – "Продажи". [520] |
Под переключателем расположим табличное поле с именем "ТабличноеПоле", типом ТаблицаЗначений и пустым свойством Данные:
Создадим процедуру обработки события "При открытии" формы и установим в ней начальное значение переключателя и начальное содержимое табличного поля:
Процедура ПриОткрытии()
ОстаткиМатериалов = "Остатки";
Массив = Новый Массив;
Массив.Добавить(Тип("РегистрНакопленияСписок.ОстаткиМатериалов"));
НашеОписание = Новый ОписаниеТипов(Массив);
ТабПоле = ЭлементыФормы.ТабличноеПоле;
ТабПоле.ТипЗначения = НашеОписание;
ТабПоле.СоздатьКолонки();
ТабПоле.Значение.Отбор.Регистратор.Установить(, Истина);
КонецПроцедуры
В этой процедуре, в зависимости от выбранного значения переключателя мы создаем объект ОписаниеТипов, содержащий нужный нам тип данных. Затем указываем этот объект в качестве значения свойства ТипДанных табличного поля. После создания колонок поля мы устанавливаем использование отбора по значению [521] регистратора, которое, по умолчанию, не определено. Это позволит нам избежать отображения в табличном поле полного списка регистра в момент открытия формы.