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

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

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

Вариант 1: Использование механизма расширений

Наиболее предпочтительным и гибким способом является создание расширения конфигурации. Этот подход позволяет вносить изменения, не затрагивая основную конфигурацию, что существенно упрощает процесс будущего обновления системы. Рассмотрим, как это сделать по шагам.

  1. Создайте новое расширение в режиме конфигуратора.
  2. Включите в расширение объект Справочник, форму которого вы хотите дополнить.
  3. Используйте обработчик события ПриСозданииНаСервере. Вместо изменения самой формы, мы добавим необходимые элементы программно.

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Добавляем реквизит в форму
    НовыйРеквизит = Новый РеквизитФормы("ЦветЭлемента", Новый ОписаниеТипов("Строка"), "", "Цвет элемента");
    ДобавитьРеквизиты(НовыйРеквизит);
    
    // Добавляем элемент управления (кнопку)
    НоваяКнопка = Элементы.Добавить("ВыбратьЦвет", Тип("КнопкаФормы"), Элементы.ГруппаКоманд);
    НоваяКнопка.Заголовок = "Выбрать цвет";
    НоваяКнопка.ИмяКоманды = "ВыбратьЦветКоманда";
КонецПроцедуры

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

Вариант 2: Хранение данных о цвете

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

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

Вариант 3: Реализация диалога выбора цвета

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


&НаКлиенте
Процедура ВыбратьЦветКоманда(Команда)
    Диалог = Новый ДиалогВыбораЦвета();
    Если Диалог.Выбрать() Тогда
        ВыбранныйЦвет = Диалог.Цвет;
        // Сохраняем цвет в базу данных или реквизит формы
    КонецЕсли;
КонецПроцедуры

Как использовать цвет в отчетах?

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

  1. Добавить таблицу регистра сведений (или реквизит справочника) в запрос отчета через левое соединение.
  2. В настройках СКД перейти на вкладку Условное оформление.
  3. Добавить новое условие: в поле Цвет фона или Цвет текста указать выражение, ссылающееся на выбранный нами реквизит цвета.

Платформа автоматически интерпретирует данные, сохраненные в формате Цвет, и применит их к оформлению ячеек отчета. Таким образом, мы получаем красивое и наглядное отображение справочной информации без лишних правок типового кода.

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

← На главную