В процессе разработки конфигураций на платформе 1С часто возникает задача визуализации оперативного состояния данных. Рассмотрим ситуацию, когда в справочнике Сотрудники ведется учет аттестаций в табличной части, и нам необходимо выводить на форму наглядный индикатор статуса «Просрочен», если хотя бы одна аттестация сотрудника не соответствует требованиям.
Для решения поставленной задачи нам необходимо вмешаться в процесс открытия формы и выполнить проверку данных. Существует несколько подходов к написанию кода. Давайте разберем их подробно.
Первый вариант — классическое условие, которое обеспечивает высокую читаемость кода для начинающих разработчиков:
&НаКлиенте
Процедура ПриОткрытии()
Если ЕстьПросроченныеАттестации(ЭтотОбъект.Ссылка) Тогда
Элементы.Статус.Заголовок = "Просрочен";
Иначе
Элементы.Статус.Заголовок = "";
КонецЕсли;
КонецПроцедуры
Второй вариант, более лаконичный, использует тернарный оператор. Этот стиль считается профессиональным стандартом, так как позволяет уменьшить количество строк кода без потери логической прозрачности:
&НаКлиенте
Процедура ПриОткрытии()
Элементы.Статус.Заголовок = ?(ЕстьПросроченныеАттестации(ЭтотОбъект.Ссылка), "Просрочен", "");
КонецПроцедуры
Обратите внимание: в обоих примерах мы используем обращение к свойству Заголовок элемента формы, который был предварительно создан в редакторе форм с именем Статус.
Описанные выше методы предполагают наличие функции ЕстьПросроченныеАттестации. Важно понимать, что выполнение тяжелых проверок на клиенте может замедлить открытие формы. Чтобы не передавать всю табличную часть объекта с сервера на клиент, лучше реализовать проверку в процедуре ПриСозданииНаСервере.
Разберем этапы оптимизированной работы:
ПриСозданииНаСервере.Запрос к базе данных, выбирая только те записи, где дата аттестации просрочена.Используя Запрос к табличной части (или к регистру, если вы выбрали более гибкую архитектуру), вы существенно экономите ресурсы системы, так как на клиент передается не массив данных, а лишь финальный результат проверки.
Хотя хранение данных об аттестациях в табличной части справочника допустимо для простых задач, для масштабируемых систем рекомендуются следующие шаги:
СрезПоследних для быстрого получения актуального статуса и строить отчеты без изменения структуры справочника.УсловноеОформление формы. Это позволит подсвечивать статус красным цветом или менять фон при просрочке, что значительно улучшает пользовательский опыт (UX).РегламентныеЗадания. Они могут обновлять статусы в фоновом режиме, избавляя пользователя от ожидания при открытии карточки сотрудника.Используя эти методы, вы обеспечите не только решение текущей задачи, но и заложите надежный фундамент для дальнейшего развития функционала вашей конфигурации 1С.