Как добавить новые реквизиты в справочник Номенклатура, если кнопки добавления неактивны?

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

В практике разработчика 1С часто возникает ситуация, когда в типовой конфигурации (например, Бухгалтерия для Казахстана 3.0) требуется расширить функционал справочника Номенклатура, добавив в него новые поля. Однако при попытке внесения изменений в Конфигураторе можно столкнуться с тем, что кнопка "Добавить" неактивна, а сама конфигурация находится на поддержке. Рассмотрим подробно, как решить эту задачу, проанализируем возможные риски и выберем оптимальный метод реализации.

Метод 1. Использование механизма дополнительных реквизитов (БСП)

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

Разберем по шагам, как активировать этот механизм:

  1. Перейдем в раздел Администрирование — Общие настройки.
  2. Найдем пункт Дополнительные реквизиты и сведения и установим соответствующий флаг.
  3. По ссылке "Дополнительные реквизиты" выберем справочник Номенклатура и добавим нужные поля (Число, Строка и т.д.).

Рассмотрим, как обращаться к таким реквизитам программно, так как автор темы планирует использовать их в обработках заполнения. Прямое обращение через точку Объект.ИмяРеквизита здесь не сработает. Нам поможет программный интерфейс БСП:


// Пример получения значения дополнительного реквизита
ЗначениеСвойства = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаНоменклатуру, "ИмяСвойства_Для_Поиска");

// Или через запрос к табличной части
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	НоменклатураДополнительныеРеквизиты.Значение КАК Значение
    |ИЗ
    |	Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    |ГДЕ
    |	НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка
    |	И НоменклатураДополнительныеРеквизиты.Свойство = &Свойство";

Метод 2. Добавление реквизитов через механизм расширений

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

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

Важное предостережение: Мы должны помнить о рисках потери данных при хранении их в расширениях. Если расширение будет случайно удалено из базы, платформа выполнит команду DROP COLUMN на уровне SQL, и все данные в этих полях будут безвозвратно потеряны. Рассмотрим пример того, как ведут себя данные при реструктуризации на старых версиях платформы:

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

Метод 3. Изменение основной конфигурации (Снятие с поддержки)

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

Рассмотрим порядок действий для включения возможности изменения:

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

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

Работа с кодом и формами в расширении

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

Рассмотрим использование аннотаций. Мы не можем просто "переподключить" кнопку в свойствах. Мы должны создать процедуру с определенной аннотацией в модуле формы расширения:


&НаСервере
&Вместо("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Вызов оригинального метода, если это необходимо
    ПродолжитьВызов(Отказ, СтандартнаяОбработка);
    
    // Наша логика
    Сообщить("Форма открыта через расширение!");
КонецПроцедуры

Если нужно добавить реквизит расширения на форму, выполним следующие шаги:

  1. Добавим саму форму справочника в расширение (правой кнопкой — Добавить в расширение).
  2. В редакторе формы расширения перейдем на вкладку Реквизиты.
  3. Найдем основной реквизит (обычно Объект) и увидим в нем наши добавленные через расширение поля.
  4. Перетащим их в левую часть — в дерево элементов формы.

Особенности для Казахстана: Виртуальный склад и ЭСФ

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

Если ваши новые реквизиты должны влиять на заполнение источников происхождения или кодов ТН ВЭД, убедитесь, что вы не дублируете уже существующие поля, такие как КодГСВС или ТНВЭД. В этой конфигурации многие проверки завязаны на программный поиск по метаданным. Перед внесением изменений проверим, не используются ли в типовом коде запросы, которые могут "сломаться" из-за появления неоднозначности в именах полей (особенно если вы используете расширения с префиксами).

Резюме и рекомендации

Подведем итог нашему исследованию. Для решения задачи автора мы рекомендуем следующий алгоритм выбора:

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

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

← На главную