Обновление измененной конфигурации 1С: почему сравнение проходит много раз и можно ли пропускать релизы?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При обновлении доработанной конфигурации 1С через конфигуратор разработчики часто сталкиваются с двумя вопросами. Первый — чисто технический: почему процесс сравнения и объединения объектов запускается несколько раз? Второй — практический и более рискованный: можно ли сэкономить время и «перепрыгнуть» через несколько промежуточных релизов? Разберем оба этих вопроса подробно, чтобы понять механику платформы и избежать серьезных ошибок в будущем.

Зачем 1С выполняет несколько сравнений при обновлении?

На первый взгляд кажется, что для обновления достаточно двух сравнений: сравнить нашу рабочую конфигурацию с новой и объединить их. Однако на самом деле в процессе участвует больше «игроков», и многоэтапное сравнение необходимо для корректного и осознанного объединения изменений.

Рассмотрим, какие конфигурации участвуют в этом процессе:

  1. Основная конфигурация — это ваша текущая, рабочая конфигурация, в которую вы вносили доработки.
  2. Старая конфигурация поставщика — это та «чистая», типовая версия конфигурации, на основе которой вы делали свои изменения. Система хранит ее, чтобы всегда «помнить», что было в исходной версии.
  3. Новая конфигурация поставщика — это версия из файла обновления (.cfu или .cf), на которую вы хотите перейти.
  4. Конфигурация Базы Данных (БД) — фактическая структура данных, которая используется в режиме «Предприятие». Она тоже участвует в процессе, но ключевые сравнения для разработчика происходят между первыми тремя.

Теперь проанализируем, какие сравнения и для чего выполняет система:

Итог: многократные сравнения — это не избыточность, а необходимый механизм для подготовки удобного и информативного отчета в окне «Сравнение, объединение». Это позволяет разработчику принимать взвешенные решения по каждому объекту, сохраняя и свои доработки, и новую функциональность от поставщика.

А что с конфигурацией «на замке»?
Если конфигурация полностью типовая и не изменялась (все объекты на поддержке поставщика, «под замком»), то участие программиста в объединении не требуется. В этом случае обновление можно и нужно выполнять в режиме «1С:Предприятие». Сравнения все равно происходят, но автоматически, без вывода окна для разработчика. Процесс проходит быстрее и проще.

Можно ли пропускать релизы при обновлении и каковы риски?

Это один из самых частых и опасных вопросов. Ситуация: нужно обновить ЗУП с версии 3.1.27.51 на 3.1.27.93, а между ними есть промежуточный релиз 3.1.27.92. Возникает соблазн пропустить его, чтобы сэкономить время. Делать так категорически не рекомендуется.

Технически платформа может позволить вам загрузить конфигурацию, перескочив через несколько версий. Однако это чревато скрытыми ошибками и, что хуже всего, безвозвратной потерей данных.

Почему нельзя пропускать релизы: механизм обработчиков обновления

Ключ к пониманию проблемы лежит в механизме отложенного обновления данных. После того как вы обновили конфигурацию в конфигураторе, при первом запуске в режиме «Предприятие» запускаются специальные процедуры — обработчики обновления. Они находятся в общих модулях (часто с названием вроде ОбновлениеИнформационнойБазы) и выполняют критически важные задачи по адаптации данных к новой структуре конфигурации.

Самое главное: эти обработчики должны выполняться строго последовательно.

Проанализируем риски на конкретном примере:

Риск №1: Потеря данных из-за переименования и удаления реквизитов

Это самая частая и опасная ловушка. Разработчики 1С часто изменяют структуру объектов в несколько этапов.

  1. В релизе 3.1.27.92 (который мы хотим пропустить) разработчик решает переименовать реквизит Сотрудник в ФизическоеЛицо. Чтобы не потерять данные, он не удаляет старый реквизит сразу. Вместо этого он переименовывает его в УдалитьСотрудник, создает новый реквизит ФизическоеЛицо и пишет обработчик обновления, который при переходе на эту версию копирует все данные из УдалитьСотрудник в ФизическоеЛицо.
  2. В релизе 3.1.27.93 (наш конечный) разработчик, будучи уверен, что все уже обновились на .92 и перенесли данные, полностью удаляет реквизит УдалитьСотрудник.

Что произойдет, если мы перепрыгнем с .51 сразу на .93?

Ваша база данных содержит данные в реквизите Сотрудник (который в новой конфигурации уже называется УдалитьСотрудник и помечен на удаление). Вы обновляете конфигурацию, и платформа удаляет этот реквизит вместе со всеми данными. Обработчик обновления из пропущенного релиза .92, который должен был перенести данные, не будет выполнен. В результате данные будут безвозвратно утеряны.

Простое сравнение конфигураций .51 и .93 может не показать эту проблему. Вы увидите, что реквизита Сотрудник больше нет, но не увидите, что для его корректного преобразования требовался промежуточный шаг.

Риск №2: Нарушение логики и целостности данных

Обработчики обновления не только переносят данные. Они могут выполнять сложные преобразования: заполнять новые регистры на основе старых, пересчитывать итоги, обновлять служебные данные. Если пропустить один из шагов этой цепочки, можно получить неконсистентное состояние базы, которое проявится не сразу, а в виде странных ошибок при расчете зарплаты или формировании отчетов через несколько месяцев.

Риск №3: Отсутствие официальной поддержки

Для многих сложных продуктов, таких как 1С:ERP, фирма "1С" публикует обязательный порядок обновления и указывает ключевые (LTS) версии, пропуск которых недопустим. Это прямое указание на то, что последовательность обновлений критически важна. Даже если для вашей конфигурации такой подробной схемы нет, общий принцип остается тем же. Обновляясь «через релиз», вы действуете на свой страх и риск, и техническая поддержка 1С не сможет вам помочь в случае проблем.

Выводы и рекомендации

  1. Всегда обновляйтесь последовательно. Установите каждый промежуточный релиз, и после каждого обновления конфигурации обязательно один раз запустите базу в режиме «1С:Предприятие», чтобы выполнились все отложенные обработчики обновления.
  2. Всегда делайте резервную копию. Перед любым обновлением, особенно на доработанной базе, создание бэкапа — это закон.
  3. Тестируйте на копии. Если у вас сложная, сильно измененная конфигурация, сначала проведите всю цепочку обновлений на копии рабочей базы и убедитесь, что все работает корректно.

Экономия нескольких часов на пропуске промежуточного релиза может обернуться днями и неделями работ по восстановлению потерянных данных и поиску неуловимых ошибок. Риск абсолютно не оправдан.

← На главную