При сопровождении типовых решений, таких как 1С:Бухгалтерия предприятия 3.0 (БП 3.0), перед разработчиком часто встает задача расширения состава данных. Например, нужно добавить признак Актуальность (типа Булево) для справочника Номенклатура. При этом важно сохранить конфигурацию на поддержке, обеспечить корректный обмен данными и не потерять информацию при обновлениях. Разберем по шагам три основных подхода, их преимущества и скрытые угрозы.
Это самый безопасный и рекомендуемый способ для типовых конфигураций на базе БСП (Библиотеки стандартных подсистем). Рассмотрим, почему стоит выбрать именно его, если вам нужно просто хранить дополнительный флаг или описание.
Преимущества:
ДополнительныеРеквизиты. Вы никогда не потеряете их при удалении расширения или обновлении платформы.Enterprise Data умеет «подхватывать» дополнительные реквизиты автоматически. Достаточно включить соответствующую опцию в настройках синхронизации, и данные будут передаваться в другие базы без написания кода.Для реализации этого варианта выполним следующие действия:
Номенклатура и добавим новый реквизит Актуальность с типом Булево.Чтобы вывести этот реквизит в форму списка (как хотел автор темы), проанализируем возможности расширений. Вместо того чтобы «заимствовать» всю форму (что затруднит обновления), мы можем программно добавить колонку в динамический список. В расширении используем переопределение метода ПриСозданииНаСервере:
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Программное добавление колонки, связанной с доп. реквизитом
// Доп. реквизиты в динамическом списке БП 3.0 обычно уже доступны через свойства запроса
КонецПроцедуры
Многие разработчики предпочитают создавать реквизиты прямо в расширении. Это кажется быстрым и удобным, но здесь кроются серьезные риски, которые мы сейчас проанализируем.
Риски использования расширений для хранения данных:
Enterprise Data не видит реквизиты расширений. Вам придется расширять XDTO-пакеты и дорабатывать менеджеры обмена, что значительно увеличивает трудозатраты.Когда стоит использовать этот вариант? Только если вам нужно добавить объект, который не предполагает долгосрочного хранения (временные «костыли») или если вы на 100% уверены в регламентах обслуживания базы.
Проанализируем ситуацию: если реквизит Актуальность является критически важным для бизнес-процесса и должен участвовать в сложных запросах, индексироваться и гарантированно передаваться по обмену, лучше добавить его в основную конфигурацию.
Рассмотрим алгоритм действий:
Актуальность непосредственно в справочник Номенклатура.Это «золотая середина» для опытного разработчика: надежное хранение данных в SQL-таблице основной конфигурации и «чистый» интерфейс через расширение.
Независимо от того, где создан реквизит, выводить его на форму лучше через механизм расширений. Выясним причину: это минимизирует конфликты при обновлении, когда фирма «1С» меняет дизайн или состав команд в типовой форме.
Разберем пример программного вывода реквизита в расширении через событие ПриСозданииНаСервере. Вместо изменения состава колонок вручную, мы можем использовать условное оформление, чтобы визуально выделить неактуальные позиции (например, серым цветом):
&НаСервере
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Добавим правило условного оформления для выделения неактуальных товаров
ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
// Определяем условие: Актуальность = Ложь
ЭлементУсловия = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Актуальность");
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементУсловия.ПравоеЗначение = Ложь;
// Задаем оформление: серый цвет текста
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
КонецПроцедуры
Проанализировав все способы, можно сделать следующие выводы:
Номенклатура), если эти данные критически важны для учета. Помните о риске удаления таблиц при манипуляциях с расширением.ПриСозданииНаСервере или механизм ПодключаемыеКоманды, чтобы не заимствовать тяжелые формы целиком.Соблюдение этих правил позволит вам создать надежное решение, которое не «отвалится» при очередном обновлении 1С:Бухгалтерии и не создаст проблем при синхронизации с другими базами.