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