1С-Предприятие 8.0. Практическое пособие разработчика

         

Изменение источника данных табличного поля


В процессе разработки форм периодически возникает необходимость в изменении данных табличного поля расположенного в форме, в зависимости от желания пользователя или алгоритмов работы программы. Только что мы с вами показали в форме списка документа "ПриходнаяНакладная" движения по регистру остатков "ОстаткиМатериалов". Нашим пользователям очень понравилась такая возможность, и они захотели также иметь возможность видеть на этой форме и движения по регистру остатков "СтоимостьМатериалов".

Добавление в форму еще одного такого же табличного поля нежелательно, поскольку это будет отвлекать внимание от списка документов, и занимать много места на экране. Поэтому мы воспользуемся возможностью изменения источника данных у элемента управления.

Откроем в конфигураторе форму списка документа "ПриходнаяНакладная", сдвинем табличное поле вниз и на освободившемся пространстве расположим элемент управления переключатель, состоящий из двух кнопок:


[516]

После того, как мы укажем заголовок первой кнопки – "Остатки материалов" – система автоматически сформирует имя этой кнопки "ОстаткиМатериалов". Отметим, что эта кнопка будет первой в группе, и напишем подсказку – "Отобразить движения по регистру "Остатки материалов".

Затем создадим вторую кнопку с заголовком "Стоимость материалов". Напишем подсказку – "Отобразить движения по регистру "Стоимость материалов".

Нажмем "ОК" и расположим кнопки в форме:

Откроем палитру свойств кнопки "ОстаткиМатериалов" и укажем, что тип выбираемого значения будет Строка, а выбираемое значение будет равно "Остатки".

По умолчанию все кнопки имеют тип выбираемого значения Число и выбираемое значение 0, поэтому для того, чтобы можно было анализировать состояние группы переключателей, необходимо для каждой кнопки в этой группе задать уникальное выбираемое значение. Кроме этого, одна из кнопок в группе всегда должна быть первой в группе – именно по ее значению можно будет определить состояние группы, а переключение кнопок в группе будет выполняться в порядке обхода элементов управления формы (Форма

Порядок обхода). По умолчанию установлен автопорядок обхода элементов формы (свойство формы "Автопорядок обхода"). Поэтому если вам [517] понадобится установить собственный порядок обхода элементов формы, это свойство нужно отключить и тогда станет доступен соответствующий пункт меню.






Сейчас нас устраивает автоматический порядок обхода элементов и поэтому мы создадим обработчик события "ПриОткрытии" формы, и зададим в нем начальное значение нашего переключателя:

Процедура ПриОткрытии()

   ОстаткиМатериалов = "Остатки";

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

Теперь добавим в форму новый реквизит, который будет являться вторым источником данных для нашего табличного поля. Назовем его "РегистрСписок" и установим его тип РегистрНакопленияСписок.СтоимостьМатериалов:



Укажем его тип РегистрНакопленияСписок.СтоимостьМатериалов.

В заключение создадим процедуру обработки события "При изменении" для кнопки "Остатки материалов":

Процедура ОстаткиМатериаловПриИзменении(Элемент)

   Если ОстаткиМатериалов = "Остатки" Тогда

       ЭлементыФормы.ТабличноеПоле.Данные = "ТабличноеПоле";

   Иначе

       ЭлементыФормы.ТабличноеПоле.Данные = "РегистрСписок";

   КонецЕсли;

   ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();

   ДокументСписокПриАктивизацииСтроки(ЭлементыФормы.ДокументСписок);

КонецПроцедуры [518]

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

Откройте 1С:Предприятие в режиме отладчика и проверьте работу списка документа "ПриходнаяНакладная". [519]


Содержание раздела