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

         

Связанные списки


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

Одним из распространенных примеров является необходимость отобразить в форме списка документов движения, которые имеются в каком-либо регистре. В этом случае требуется в одном списке отобразить перечень документов, а в другом – движения того документа, который выбран в первом списке.

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

Добавим на форму табличное поле...


[512]

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

Для этого откроем палитру свойств добавленного нами табличного поля и воспользуемся свойством "Связь по регистратору". Связь по регистратору мы будем устанавливать с обработчиком события "При активизации строки" верхнего поля "ДокументСписок":

Установим связь по регистратору...


[513]

Теперь запустим 1С:Предприятие в режиме отладки и проверим работу связанных списков:



Обратите внимание, что при перемещении в верхнем списке, данные нижнего списка меняются соответствующим образом:

Аналогичную связь можно установить исключительно программными средствами, не используя связь по регистратору. Для этого нужно в обработчике события "При активизации строки" верхнего списка устанавливать отбор нижнего списка по регистратору. [514]




Чтобы выполнить этот пример, уберем для нижнего табличного поля связь по регистратору, а для верхнего создадим обработчик события "При активизации строки":

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

ЭлементыФормы.ТабличноеПоле.Значение.Отбор.Регистратор.Установить(Элемент.ТекущаяСтрока, Истина);

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

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