Как вывести статус «Просрочен» в поле надписи формы справочника 1С?

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

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

Реализация логики вывода статуса

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

Первый вариант — классическое условие, которое обеспечивает высокую читаемость кода для начинающих разработчиков:


&НаКлиенте
Процедура ПриОткрытии()
    Если ЕстьПросроченныеАттестации(ЭтотОбъект.Ссылка) Тогда
        Элементы.Статус.Заголовок = "Просрочен";
    Иначе
        Элементы.Статус.Заголовок = "";
    КонецЕсли;
КонецПроцедуры

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


&НаКлиенте
Процедура ПриОткрытии()
    Элементы.Статус.Заголовок = ?(ЕстьПросроченныеАттестации(ЭтотОбъект.Ссылка), "Просрочен", "");
КонецПроцедуры

Обратите внимание: в обоих примерах мы используем обращение к свойству Заголовок элемента формы, который был предварительно создан в редакторе форм с именем Статус.

Оптимизация производительности: перенос на сервер

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

Разберем этапы оптимизированной работы:

  1. Переносим логику проверки в процедуру ПриСозданииНаСервере.
  2. Внутри процедуры выполняем Запрос к базе данных, выбирая только те записи, где дата аттестации просрочена.
  3. Результат проверки (булево значение) передаем в реквизит формы или сразу управляем заголовком элемента.

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

Архитектурные рекомендации по хранению данных

Хотя хранение данных об аттестациях в табличной части справочника допустимо для простых задач, для масштабируемых систем рекомендуются следующие шаги:

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

← На главную