Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-методическое пособие РЭИС.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
3.85 Mб
Скачать

4.4.7. Табличное поле

Рис. 4.12. Вставка элемента управления «Табличное поле»

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

Есть возможность выводить в табличное поле иерархические данные в виде вложенных папок или в виде дерева.

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

Обратите внимание на режим изменения ширины колонок. Если вы просто меняете мышкой ширину колонки, то суммарная ширина всех колонок остается прежней, а если при этом удерживать клавишу Ctrl, то меняется.

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

Система 1C:Предприятие 8.0 имеет широкие возможности по оформлению табличного поля. Можно указывать цвет фона и текста шапки, колонок, ячеек и подвала, выводить картинки в ячейки, задавать чередование фона для строк, изменять стиль и цвет рамки Будьте внимательны, когда устанавливаете свойства колонки и ячейки, поскольку у табличного поля в целом, у колонки и каждой ячейки — у всех свой набор свойств.

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

Поле = ЭлементыФормы.тпНоменклатура;

Поле.ЧередованиеЦветовСтрок = Истина;

 

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

Ниже приведены наиболее часто используемые события табличного поля:

Выбор

Возникает при двойном щелчке мыши или нажатии клавиши Enter на ячейке табличного поля.

ВыборЗначения

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

ПриАктивизацииСтроки

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

ПриВыводеСтроки

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

ПередУдалением

Возникает перед удалением строки или группы строк табличного поля. В процедуре-обработчике можно отказаться от удаления строки.

ПередНачаломИзменения

Возникает перед началом интерактивного изменения строки табличного поля.

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

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

Процедура СписокПриВыводеСтроки(Элемент,ОформлениеСтроки, ДанныеСтроки)

//берем текущую валюту из параметра ДанныеСтроки

ТекВалюта = ДанныеСтроки.Ссылка;

//ссылка на регистр сведений

РегКурсы = РегистрыСведений.КурсыВалют;

//ссылка на оформление ячейки Курс

ЯчейкаКурс = ОформлениеСтроки.Ячейки.Курс;

//считываем курс из регистра сведений и выводим в ячейку

Отбор = Новый Структура("Валюта",ТекВалюта);

Курс = РегКурсы.ПолучитьПоследнее(,Отбор).Курс;

ЯчейкаКурс.УстановитьТекст(Курс);

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

 

В 1C:Предприятии 8.0 нет текстовых колонок, в которых можно вызвать функцию, как это было в версии 7.7. Вместо них предлагается использовать событие ПриВыводеСтроки, в котором можно выводить информацию в ячейки и управлять их внешним видом, используя объекты ОформлениеСтроки и ДанныеСтроки.

У объекта ОформлениеСтроки есть свойство Ячейки, которое содержит коллекцию объектов ОформлениеЯчейки.

Например, выведем справочник Номенклатура с указанием остатка товара на складе, а для тех товаров, у которых остаток меньше 10, установим предупреждающий цвет фона. Это позволит контролировать остатки товаров в реальном времени и вовремя заказывать дефицитные товары:

Процедура СписокПриВыводеСтроки(Элемент,ОформлениеСтроки,ДанныеСтроки)

СтруктураОтбора = Новый Структура("Номенклатура");

СтруктураОтбора.Номенклатура = ДанныеСтроки.Ссылка;

РегОстатки = РегистрыНакопления.УчетНоменклатуры;

//считываем остаток из регистра

тзОстатки = РегОстатки.Остатки(,СтруктураОтбора,

"Номенклатура","Количество"),

Если тзОстатки.Количество() > 0 Тогда

ОстатокТовара = тзОстатки[0].Количество;

ЯчейкаОстаток = ОформлениеСтроки.Ячейки.Остаток;

ЯчейкаОстаток.ОтображатъТекст = Истина;

ЯчейкаОстаток.Текст = ОстатокТовара;

Если ОстатокТовара < 10 Тогда

ЯчейкаОстаток.ЦветФона = Новый Цвет(255,230,230);

КонецЕсли;

КонецЕсли;

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

 

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

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

Любое табличное поле пользователь может вывести в табличный документ для печати или текстовый документ. Это возможно из контекстного меню с помощью пункта «Вывести список». При выводе табличного поля учитываются текущие отбор и сортировка списка. Есть возможность вывести только выделенные строки, а также указать, выводить или нет подчиненные объекты, например, элементы иерархического справочника нижележащих уровней.