В процессе сопровождения и разработки в среде 1С:Предприятие 8 программисты часто сталкиваются с необходимостью кастомизации типовых решений. Однако со временем некоторые изменения становятся неактуальными или переносятся в расширения конфигурации. В таких ситуациях возникает задача: вернуть объект на полную поддержку (поставить «под замок»), чтобы он перестал отображаться в списке отличий при сравнении с новыми релизами поставщика. Рассмотрим, почему кнопка установки режима «Объект поставщика не редактируется» часто оказывается неактивной и как правильно решить эту задачу.
Разберем, почему система блокирует возможность установить «замок». Главное техническое требование платформы заключается в следующем: правило «Объект поставщика не редактируется» может быть применено только к тем объектам, которые бинарно идентичны объектам в конфигурации поставщика. Если в объекте изменен хотя бы один байт (свойство, порядок реквизитов, модуль), 1С считает его модифицированным. Установка замка на измененный объект привела бы к потере ваших правок при следующем обновлении без предупреждения, поэтому платформа программно запрещает это действие, делая пункт меню неактивным.
Проанализируем ситуацию: даже если вы вручную удалили все добавленные реквизиты и вернули код модуля в исходное состояние, объект все равно может считаться «измененным». Это происходит из-за скрытых метаданных, идентификаторов внутренних объектов или специфического порядка следования элементов, который нарушился при редактировании.
Это самый правильный и безопасный метод, который рекомендует фирма 1С. Рассмотрим его по шагам:
После выполнения этих действий рядом с объектом снова появится иконка «замочка».
Иногда возникают ситуации, когда конфигурация поставщика внутри базы повреждена или работает некорректно. В этом случае проанализируем альтернативный метод с использованием внешнего файла:
.cf).Выясним причину, по которой формы часто не встают на поддержку даже после удаления всего кода. Формы в 1С имеют сложную внутреннюю структуру (описание элементов, привязки, события). Простая визуальная схожесть не гарантирует идентичности метаданных. Рассмотрим правильный алгоритм для форм:
При сравнении и объединении с конфигурацией поставщика обязательно разворачивайте дерево объекта до уровня конкретной формы. Убедитесь, что галочка стоит именно на подчиненном объекте ФормаОбъекта или ФормаСписка. Только полная замена формы на версию поставщика гарантирует возможность возврата под замок.
Если объектов много, выполнять процедуру для каждого вручную утомительно. Посмотрим на пример оптимизации этого процесса:
В окне сравнения и объединения с конфигурацией поставщика мы можем воспользоваться фильтрами. Установим фильтр «Показывать только различающиеся объекты». Отметим все объекты, которые мы хотим «сбросить» до типовых, и выберем для всей группы действие «Взять из конфигурации поставщика». После завершения операции мы сможем выделить корневой узел в окне «Настройка поддержки» и через кнопку «Установить режим» применить правило «Не редактируется» ко всем идентичным объектам сразу, установив флаг «Установить для подчиненных объектов».
Проанализируем современную методологию ведения разработки. Хорошей практикой считается содержание основной конфигурации на полной поддержке (все объекты под замком). Любые изменения, будь то добавление реквизитов или изменение логики модулей, следует выносить в Расширения.
Это дает следующие преимущества:
Если вы переносите функционал из основной конфигурации в расширение, обязательно используйте Способ 1 для возврата объектов «под замок» после переноса кода.
Разберем ситуацию, когда объект был случайно удален и создан заново с тем же именем. С точки зрения 1С — это абсолютно новый объект, так как его внутренний уникальный идентификатор (UUID) не совпадает с идентификатором в конфигурации поставщика. В этом случае обычное сравнение-объединение может не помочь, так как система предложит создать «дубль» или не увидит связи.
В такой критической ситуации помогает только полная загрузка конфигурации (.cf), но это крайне рискованная операция, требующая предварительного создания резервной копии и понимания того, как это повлияет на существующие данные в базе. Если UUID объекта поставщика утерян в основной конфигурации, ссылки на этот объект в существующих данных могут «побиться» (превратиться в <Объект не найден>).
Подводя итог, можно сказать: возврат на поддержку — это процедура обеспечения идентичности. Как только вы добиваетесь 100% совпадения байтов вашего объекта с объектом поставщика, платформа автоматически разблокирует возможность установки «замочка» в окне настройки поддержки.