В практике разработчика 1С часто возникает ситуация, когда в типовой конфигурации (например, Бухгалтерия для Казахстана 3.0) требуется расширить функционал справочника Номенклатура, добавив в него новые поля. Однако при попытке внесения изменений в Конфигураторе можно столкнуться с тем, что кнопка "Добавить" неактивна, а сама конфигурация находится на поддержке. Рассмотрим подробно, как решить эту задачу, проанализируем возможные риски и выберем оптимальный метод реализации.
Прежде чем вносить изменения в структуру базы данных, проанализируем стандартные возможности Библиотеки Стандартных Подсистем (БСП), которая интегрирована почти во все современные конфигурации. Это наиболее безопасный способ, не требующий снятия программы с поддержки и не создающий проблем при будущих обновлениях.
Разберем по шагам, как активировать этот механизм:
Номенклатура и добавим нужные поля (Число, Строка и т.д.).Рассмотрим, как обращаться к таким реквизитам программно, так как автор темы планирует использовать их в обработках заполнения. Прямое обращение через точку Объект.ИмяРеквизита здесь не сработает. Нам поможет программный интерфейс БСП:
// Пример получения значения дополнительного реквизита
ЗначениеСвойства = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаНоменклатуру, "ИмяСвойства_Для_Поиска");
// Или через запрос к табличной части
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Значение КАК Значение
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка
| И НоменклатураДополнительныеРеквизиты.Свойство = &Свойство";
Если механизм БСП не подходит (например, требуется высокая скорость выборки или сложная логика на форме), программисты часто используют расширения. Рассмотрим ситуацию автора: в базе уже есть расширение, но оно кажется заблокированным.
Проанализируем причины, почему кнопки добавления в расширении могут быть неактивны:
Важное предостережение: Мы должны помнить о рисках потери данных при хранении их в расширениях. Если расширение будет случайно удалено из базы, платформа выполнит команду DROP COLUMN на уровне SQL, и все данные в этих полях будут безвозвратно потеряны. Рассмотрим пример того, как ведут себя данные при реструктуризации на старых версиях платформы:
Проанализируем ситуацию: при отключении одного из расширений, влияющих на структуру того же объекта, платформа может пересоздать поля, что приведет к их очистке. Поэтому, если данные критически важны (например, для налогового учета в Казахстане), лучше вносить изменения в основную конфигурацию.
Если принято решение добавлять реквизиты в саму конфигурацию, выясним, почему кнопка "Снять с поддержки" может быть неактивна. В современных версиях 1С это защитный механизм.
Рассмотрим порядок действий для включения возможности изменения:
Посмотрим на статус Редактируется с сохранением поддержки. Это означает, что конфигурация все еще проверяется на соответствие типовой, но вам разрешено добавлять свои элементы. При обновлении 1С предложит объединить ваши изменения с изменениями поставщика.
Автор столкнулся с проблемой: нельзя перевыбрать обработчик события на форме в расширении. Выясним причину. В расширениях работа с событиями строится иначе, чем в основной конфигурации.
Рассмотрим использование аннотаций. Мы не можем просто "переподключить" кнопку в свойствах. Мы должны создать процедуру с определенной аннотацией в модуле формы расширения:
&НаСервере
&Вместо("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Вызов оригинального метода, если это необходимо
ПродолжитьВызов(Отказ, СтандартнаяОбработка);
// Наша логика
Сообщить("Форма открыта через расширение!");
КонецПроцедуры
Если нужно добавить реквизит расширения на форму, выполним следующие шаги:
Объект) и увидим в нем наши добавленные через расширение поля.Проанализируем специфику конфигурации Бухгалтерия для Казахстана. При добавлении реквизитов в Номенклатуру нужно быть крайне осторожными, чтобы не нарушить работу механизмов интеграции с ИС ЭСФ и Виртуальным складом.
Если ваши новые реквизиты должны влиять на заполнение источников происхождения или кодов ТН ВЭД, убедитесь, что вы не дублируете уже существующие поля, такие как КодГСВС или ТНВЭД. В этой конфигурации многие проверки завязаны на программный поиск по метаданным. Перед внесением изменений проверим, не используются ли в типовом коде запросы, которые могут "сломаться" из-за появления неоднозначности в именах полей (особенно если вы используете расширения с префиксами).
Подведем итог нашему исследованию. Для решения задачи автора мы рекомендуем следующий алгоритм выбора:
Помните, что работа в среде с включенным Хранилищем конфигурации требует дисциплины: всегда захватывайте объекты перед редактированием и проверяйте, не заблокированы ли они другими коллегами. Это исключит большинство проблем с неактивными кнопками в Конфигураторе.