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

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

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

Метод 1: Программное заполнение через обработчик «ПриИзменении»

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

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

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


&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
    ТекущиеДанные = Элементы.ВашаТабличнаяЧасть.ТекущиеДанные;
    Если ТекущиеДанные <> Неопределено Тогда
        ДатаСравнения = Дата("19800101");
        Если ТекущиеДанные.Сотрудник.ДатаРождения < ДатаСравнения Тогда
            ТекущиеДанные.НовыйРеквизит = "Старый";
        Иначе
            ТекущиеДанные.НовыйРеквизит = "Молодой";
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

Метод 2: Использование условного оформления (без написания кода)

Если ваша задача — просто визуально отобразить текстовую информацию (например, «Старый» или «Молодой») и данные не требуют сохранения в базе данных или сложной математической обработки, лучше всего использовать Условное оформление. Этот метод считается архитектурно более чистым, так как он не перегружает модуль формы кодом.

  1. Добавьте новый реквизит формы строкового типа, который будет служить колонкой.
  2. Откройте настройки Условного оформления формы.
  3. Создайте новое условие: если дата рождения меньше 01.01.1980, то для данной колонки установите свойство Текст в значение «Старый».
  4. Создайте второе аналогичное правило для значения «Молодой».

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

Важные рекомендации по оптимизации

При работе с табличными частями всегда учитывайте следующие моменты:

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

← На главную