Как настроить заголовки и оформление колонок табличного поля при выгрузке запроса в обычном приложении 1С?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

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

Способ 1. Обход коллекции колонок табличного поля в цикле

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

Посмотрим на пример кода:


Результат = Запрос.Выполнить().Выгрузить(); 
ЭлементыФормы.ТЗ.Значение = Результат; 
ЭлементыФормы.ТЗ.СоздатьКолонки(); 

Для каждого Колонка Из ЭлементыФормы.ТЗ.Колонки Цикл
    Если Колонка.Имя = "ДатаЗаказа" Тогда
        Колонка.ТекстШапки = "Дата заказа";
    ИлиЕсли Колонка.Имя = "НомерЗаказа" Тогда
        Колонка.ТекстШапки = "Номер заказа";
    КонецЕсли;
КонецЦикла;

Способ 2. Точечное обращение к колонке по имени без цикла

Если имена колонок запроса заранее известны, нет необходимости перебирать все элементы в цикле. Мы можем обратиться к конкретной колонке элемента формы напрямую по её имени через точечную нотацию или квадратные скобки:


Результат = Запрос.Выполнить().Выгрузить(); 
ЭлементыФормы.ТЗ.Значение = Результат; 
ЭлементыФормы.ТЗ.СоздатьКолонки(); 

// Прямое обращение к колонке табличного поля
ЭлементыФормы.ТЗ.Колонки.ДатаЗаказа.ТекстШапки = "Дата заказа";
ЭлементыФормы.ТЗ.Колонки["НомерЗаказа"].ТекстШапки = "Номер заказа";

Способ 3. Предварительная настройка колонок в дизайнере формы

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

  1. Открываем форму обработки в редакторе (в конфигураторе).
  2. Добавляем нужные колонки в элемент формы типа Табличное поле вручную.
  3. В свойствах каждой колонки задаем понятный заголовок в поле Заголовок, настраиваем ширину, выравнивание и формат.
  4. В свойстве Данные для каждой колонки указываем имя соответствующего поля из будущей таблицы значений (например, ДатаЗаказа).

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


// При ручной настройке колонок в конфигураторе метод СоздатьКолонки() НЕ вызывается
ЭлементыФормы.ТЗ.Значение = Запрос.Выполнить().Выгрузить();

Дополнительные возможности оформления данных в колонках

Выясним, как управлять отображением данных (чисел, дат, выравнивания и цвета) в табличном поле:

Пример применения формата и выравнивания кода:


КолонкаДата = ЭлементыФормы.ТЗ.Колонки.ДатаЗаказа;
КолонкаДата.ТекстШапки = "Дата заказа";
КолонкаДата.Формат = "ДФ=dd.MM.yyyy";

КолонкаСумма = ЭлементыФормы.ТЗ.Колонки.Сумма;
КолонкаСумма.ТекстШапки = "Сумма заказа";
КолонкаСумма.Формат = "ЧДЦ=2; ЧГ=3,0";
КолонкаСумма.Выравнивание = ВариантВыравнивания.Право;

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

← На главную