Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Как добавить в форму группу страниц
Дальше: Как создать и заполнить объект с учетом установленного отбора списка

Как добавить в форму таблицу, отображающую связанные данные

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

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

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

Добавим в форму новый реквизит КонтактнаяИнформация. Тип значения реквизита ДинамическийСписок (рис. 2.193).

Рис. 2.193. Тип реквизита «ДинамическийСписок»

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

Для того чтобы динамический список работал с такими данными, необходимо указать их в свойстве ОсновнаяТаблица (рис. 2.194).

Рис. 2.194. Свойство «ОсновнаяТаблица»

С помощью свойства НастройкаСписка можно произвести необходимые настройки отбора, группировки, сортировки отображаемых данных.

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

Рис. 2.195. Свойство «ПроизвольныйЗапрос»

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

Для решения поставленной перед нами задачи мы воспользуемся первым способом (задание основной таблицы, см. рис. 2.194) и выберем таблицу регистра сведений КонтактнаяИнформация.

Добавим в группу страниц формы еще одну страницу КонтактнаяИнформация и разместим на ней таблицу с контактной информацией контрагентов (рис. 2.196).

Рис. 2.196. Отображение контактной информации

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

Если открыть в редакторе формы Глобальные команды, то можно увидеть, что нам доступна параметризуемая команда открытия контактной информации, связанной с реквизитом Контрагент. Такую команду достаточно перетащить в панель навигации формы на закладке Командный интерфейс. Всю остальную работу за нас сделает система при построении и отображении формы на экране (рис. 2.197).

Рис. 2.197. Отображение контактной информации

Чтобы перейти к контактной информации контрагента, выбранного в документе, достаточно нажать на ссылку Контактная информация в панели навигации окна клиентского приложения (рис. 2.198).

Рис. 2.198. Контактная информация текущего контрагента

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

Мы специально не стали акцентировать на этом внимание, так как речь о программном отборе в динамическом списке пойдет в третьей части книги в разделе . Но вообще-то, чтобы в таблице контактной информации показывались только контакты текущего контрагента, нужно создать обработчик события ПриИзменении для поля документа Контрагент и заполнить его следующим образом (листинг 2.1).

Листинг 2.1. Обработчик события «ПриИзменении» поля «Контрагент»

&НаКлиенте

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

 

Отбор = КонтактнаяИнформация.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");

Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

Отбор.ПравоеЗначение = Объект.Контрагент;

Отбор.Использование = Истина;

ОбновитьОтображениеДанных();

 

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

И затем нужно продублировать содержимое обработчика в обработчик события формы ПриЧтенииНаСервере.

Если рассматривать наш пример с контактной информацией, то второй способ (с помощью команды панели навигации) является наиболее предпочтительным и рекомендуемым.

Назад: Как добавить в форму группу страниц
Дальше: Как создать и заполнить объект с учетом установленного отбора списка