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

Динамический список

Примечание

Пример можно посмотреть в демонстрационной базе «Дополнительные колонки в списках», форма списка справочника Товары.

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

Рис. 3.119. Динамический список в форме

В списке отображаются только два реквизита справочника: Наименование и Код, хотя на самом деле справочник содержит также реквизиты Артикул и Сорт (рис. 3.120).

Рис. 3.120. Реквизиты справочника «Товары»

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

У нас как раз есть такая необходимость. Мы хотим дополнительно отображать в этом списке колонки Артикул и Сорт. Поскольку эти поля являются реквизитами справочника, отобразить их в списке будет очень просто.

Если мы раскроем реквизит формы Список, то увидим, что нужные нам поля уже есть в составе этого реквизита (рис. 3.121).

Рис. 3.121. Поля динамического списка

Платформа, создавая динамический список, включила в него все поля, связанные со справочником Товары, но только два поля поместила в таблицу формы: Наименование и Код.

Поэтому наша задача решается очень просто. Нужно перетащить мышью поля Артикул и Сорт в дерево элементов, в таблицу Список (рис. 3.122).

Рис. 3.122. Добавление колонок в список

Если теперь запустить конфигурацию в режиме 1С:Предприятие, мы увидим, что в списке товаров отображаются две дополнительные колонки Артикул и Сорт (рис. 3.123).

Рис. 3.123. Новые колонки в списке

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

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

В демонстрационной базе существует периодический регистр сведений Цены. В нем хранятся цены на товары (рис. 3.124).

Рис. 3.124. Структура регистра «Цены»

Теперь наша задача будет заключаться в том, чтобы в списке товаров показать в отдельной колонке актуальную цену товара.

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

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

После этого состав свойств этого реквизита изменится. Нажав на гиперссылку Настройка списка, мы увидим стандартный текст запроса и сможем его изменить (рис. 3.126).

Рис. 3.126. Настройка динамического списка

Заменим существующий текст запроса следующим (листинг 3.106).

Листинг 3.106. Произвольный запрос динамического списка

ВЫБРАТЬ

СправочникТовары.Ссылка,

СправочникТовары.ПометкаУдаления,

СправочникТовары.Код,

СправочникТовары.Наименование,

СправочникТовары.Артикул,

СправочникТовары.Сорт,

СправочникТовары.Предопределенный,

СправочникТовары.ИмяПредопределенныхДанных,

ЦеныСрезПоследних.Цена

ИЗ

РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних

ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК СправочникТовары

ПО ЦеныСрезПоследних.Товар = СправочникТовары.Ссылка

Этим запросом мы дополнительно выводим поле Цена, соединяясь с виртуальной таблицей среза последних этого регистра.

Нажмем ОК в диалоге Динамический список, вернемся к форме и развернем реквизит формы Список. Теперь среди его полей появилось поле Цена. Как и раньше, просто перетащим его в таблицу формы (рис. 3.127).

Рис. 3.127. Добавление нового поля

Теперь осталось запустить конфигурацию в режиме 1С:Предприятие и убедиться в том, что в списке товаров отображается еще одна дополнительная колонка, содержащая актуальную цену товара (рис. 3.128).

Рис. 3.128. Новая колонка в динамическом списке

Назад: Глава 3.16. Дополнительные колонки в списках
Дальше: Дополнительная обработка данных, получаемых динамическим списком