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