Как правильно добавить новый реквизит в справочник «Номенклатура» в 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

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

Вариант 1. Использование типового механизма «Дополнительные реквизиты и сведения»

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

Преимущества:

  1. Сохранение поддержки: Не нужно вносить изменения в структуру метаданных основной конфигурации.
  2. Безопасность данных: Данные хранятся в типовой табличной части ДополнительныеРеквизиты. Вы никогда не потеряете их при удалении расширения или обновлении платформы.
  3. Обмен данными: Типовой формат обмена Enterprise Data умеет «подхватывать» дополнительные реквизиты автоматически. Достаточно включить соответствующую опцию в настройках синхронизации, и данные будут передаваться в другие базы без написания кода.

Для реализации этого варианта выполним следующие действия:

  1. Перейдем в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения.
  2. Найдем в списке объект Номенклатура и добавим новый реквизит Актуальность с типом Булево.
  3. В настройках укажем видимость и доступность.

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


&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Программное добавление колонки, связанной с доп. реквизитом
    // Доп. реквизиты в динамическом списке БП 3.0 обычно уже доступны через свойства запроса
КонецПроцедуры

Вариант 2. Добавление реквизита через расширение конфигурации

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

Риски использования расширений для хранения данных:

  1. Физическое удаление данных: Если администратор случайно удалит расширение из списка в базе данных (а не просто отключит его), 1С физически удалит таблицу с данными этого реквизита из SQL-базы. Восстановить их можно будет только из копии.
  2. Проблемы с ТИИ: Реквизиты, добавленные через расширение, могут некорректно проходить проверку логической и физической целостности (ТиИ) на некоторых версиях платформы.
  3. Сложности обмена: Стандартный обмен Enterprise Data не видит реквизиты расширений. Вам придется расширять XDTO-пакеты и дорабатывать менеджеры обмена, что значительно увеличивает трудозатраты.

Когда стоит использовать этот вариант? Только если вам нужно добавить объект, который не предполагает долгосрочного хранения (временные «костыли») или если вы на 100% уверены в регламентах обслуживания базы.

Вариант 3. Изменение основной конфигурации с сохранением поддержки

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

Рассмотрим алгоритм действий:

  1. Включаем возможность изменения конфигурации (Конфигурация — Поддержка — Настройка поддержки — Разрешить изменение). При этом для всех объектов оставляем режим «Объект поставщика редактируется с сохранением поддержки».
  2. Добавляем реквизит Актуальность непосредственно в справочник Номенклатура.
  3. Важно: Для того чтобы обновление проходило гладко, не меняйте формы в основной конфигурации. Используйте расширение только для визуализации — добавления поля на форму или настройки условного оформления.

Это «золотая середина» для опытного разработчика: надежное хранение данных в SQL-таблице основной конфигурации и «чистый» интерфейс через расширение.

Сравнение подходов к визуализации в форме списка

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

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


&НаСервере
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Добавим правило условного оформления для выделения неактуальных товаров
    ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
    
    // Определяем условие: Актуальность = Ложь
    ЭлементУсловия = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Актуальность");
    ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементУсловия.ПравоеЗначение = Ложь;
    
    // Задаем оформление: серый цвет текста
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
    
КонецПроцедуры

Итоговые рекомендации

Проанализировав все способы, можно сделать следующие выводы:

  1. Если вам нужно быстро добавить признак и вы не хотите лезть в конфигуратор — используйте Дополнительные реквизиты. Это штатный путь, поддерживаемый обменами.
  2. Если важна производительность (индексация поля) и вы опытный разработчик — добавьте реквизит в основную конфигурацию, но не снимайте её с поддержки.
  3. Избегайте создания реквизитов в расширениях для справочников с большим объемом данных (таких как Номенклатура), если эти данные критически важны для учета. Помните о риске удаления таблиц при манипуляциях с расширением.
  4. Для отображения данных всегда используйте расширение. Применяйте метод ПриСозданииНаСервере или механизм ПодключаемыеКоманды, чтобы не заимствовать тяжелые формы целиком.

Соблюдение этих правил позволит вам создать надежное решение, которое не «отвалится» при очередном обновлении 1С:Бухгалтерии и не создаст проблем при синхронизации с другими базами.

← На главную