Работа с конфигурациями, находящимися на поддержке с возможностью редактирования, требует от разработчика 1С особой внимательности. Часто возникает ситуация, когда после внесения изменений в некоторые объекты мы хотим вернуть «замки» (запрет редактирования) на те объекты, которые остались нетронутыми. Однако при попытке выполнить сравнение или объединение с новой версией конфигурации поставщика эти замки внезапно исчезают, и объекты снова переходят в статус «Редактируется с сохранением поддержки». Разберем подробно, почему так происходит и как правильно управлять состоянием поддержки.
Проанализируем ситуацию: замок (или статус «Объект поставщика не редактируется») — это не просто визуальная иконка, а жесткое указание платформе о том, что основная конфигурация в части данного объекта должна быть идентична конфигурации поставщика. Когда мы открываем окно «Сравнение, объединение», платформа анализирует не только программный код, но и метаданные, порядок реквизитов и внутренние идентификаторы.
Если мы используем стандартный механизм «Конфигурация — Сравнить, объединить с конфигурацией из файла», платформа воспринимает это как намерение внести изменения вручную. В этом режиме 1С часто не может гарантировать сохранение статуса «не редактируется», так как само действие объединения подразумевает модификацию объекта. Если в правилах объединения не указано иное, объект автоматически переводится в режим редактирования, чтобы система могла записать в него данные из объединяемого файла.
Рассмотрим основные факторы, приводящие к «слету» замков:
.cf вместо штатного механизма «Обновить конфигурацию».Если мы уже внесли изменения и теперь хотим массово вернуть замки на все объекты, которые фактически совпадают с типовыми, не нужно делать это вручную для каждого объекта. Разберем по шагам, как использовать встроенный автоматизм системы.
Перейдем в меню «Конфигурация — Поддержка — Настройка поддержки». В открывшемся окне мы увидим дерево объектов и их текущие статусы. Чтобы восстановить замки, проанализируем кнопку «Установить правила по умолчанию». При ее нажатии откроется диалог, где нам следует выбрать следующие параметры:
После нажатия «ОК» платформа самостоятельно сравнит каждый объект с его эталоном в конфигурации поставщика. Если они идентичны, на объект будет повешен замок. Это самый надежный способ «прибраться» в конфигурации после затяжной разработки.
Если нам все же необходимо выполнить объединение (например, мы хотим перенести только часть изменений из новой версии), нужно очень внимательно следить за настройками в окне сравнения. Посмотрим на колонку «Правило поддержки» (она находится рядом с колонкой «Результат»).
Если мы видим, что напротив объекта стоит статус «Редактируется...», а мы хотим сохранить замок, нам нужно щелкнуть по этой надписи и выбрать «Объект поставщика не редактируется». Но будьте осторожны: если в самом объекте выбраны какие-то изменения (стоят галочки на реквизитах или формах), платформа не позволит оставить замок, так как изменения противоречат правилу «не редактируется».
Проанализируем ситуацию с «лишними пробелами». Иногда 1С показывает различия в модулях, хотя код кажется одинаковым. Чтобы это не приводило к снятию замков, выполним следующие действия в окне сравнения:
Это позволит платформе «простить» мелкие огрехи форматирования и не предлагать обновление для объектов, которые по сути не изменились.
Профессиональное правило гласит: для обновления типовых решений всегда используйте путь «Конфигурация — Поддержка — Обновить конфигурацию». Почему это важно? В отличие от простого сравнения/объединения файлов, этот механизм работает с файлами поставщика (.cfu или .cf, зарегистрированные в поставке).
При использовании этого метода 1С четко понимает контекст: «мы переходим с версии А на версию Б». В этом случае система гораздо корректнее обрабатывает объекты на замке, не пытаясь снять их без явной необходимости. Если объект был на замке и в новой версии поставщика он изменился, платформа просто обновит его содержимое, оставив замок на месте.
Рассмотрим пример того, как ведут себя объекты при обновлении через поддержку:
// Объект: Обработка.ПечатьЭтикеток
// Состояние до: На замке (Не редактируется)
// Действие: Обновление через "Поддержка - Обновить конфигурацию"
// Результат: Объект обновлен до версии поставщика, статус "На замке" сохранен.
// Объект: Справочник.Номенклатура
// Состояние до: Редактируется с сохранением поддержки (Замок снят разработчиком)
// Действие: Обновление через "Поддержка - Обновить конфигурацию"
// Результат: Платформа предложит окно сравнения для ручного слияния изменений.
Как отмечалось в обсуждении, иногда объекты перестают обновляться корректно, если замок снят, даже если мы не вносили в них правки. Проанализируем причину: в современных версиях платформы 8.3 формы и другие объекты хранятся в сложном XML-формате. При снятии объекта с поддержки 1С может изменить внутреннюю структуру этого XML (например, изменить порядок атрибутов). При последующем сравнении с «чистым» объектом поставщика платформа видит эти структурные различия.
Если вы столкнулись с тем, что объект «глючит» или не хочет обновляться, лучшим решением будет:
Чтобы избежать хаоса в замках и правилах поддержки, придерживайтесь следующего алгоритма при работе с изменениями:
Сравнить/Объединить с обычным файлом .cf, если есть возможность сделать это через Обновить конфигурацию.Таким образом, «слетающие замки» — это чаще всего результат нарушения последовательности действий или неправильного выбора режима объединения. Следуя описанным выше методикам, вы сможете поддерживать конфигурацию в чистоте и минимизировать трудозатраты при последующих обновлениях.