Как обновить измененную конфигурацию 1С:ЗУП 3 ПРОФ на КОРП с сохранением доработок?

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

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

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

Идея метода: Создание файла обновления на разницу версий

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

Рассмотрим весь процесс по шагам.

Шаг 1. Подготовка файлов конфигураций

Перед началом любых манипуляций необходимо строго выровнять релизы конфигураций. Нам понадобятся три конфигурации строго одного и того же релиза (например, 3.1.29.38):

  1. Ваша рабочая измененная база ЗУП ПРОФ.
  2. Чистый типовой файл конфигурации ЗУП ПРОФ (1cv8_prof.cf).
  3. Чистый типовой файл конфигурации ЗУП КОРП (1cv8_korp.cf).

Важно: Несоответствие номеров релизов на этом этапе сделает дальнейшее сопоставление файлов невозможным или приведет к критическим ошибкам в метаданных.

Шаг 2. Генерация файла обновления (CFU) на разницу версий

Для создания файла дельты изменений выполним следующие действия в Конфигураторе:

  1. Откройте пустую базу данных (или любую тестовую базу) в режиме «Конфигуратор».
  2. Загрузите в нее чистую типовую конфигурацию ЗУП КОРП через меню Конфигурация — Загрузить конфигурацию из файла... (используйте 1cv8_korp.cf).
  3. Перейдите в меню Конфигурация — Поставка конфигурации — Создать файлы поставки и обновления конфигурации....
  4. В открывшемся окне установите флажок Создать файл обновления конфигурации (.cfu) и укажите путь для сохранения файла (например, delta_prof_to_korp.cfu).
  5. В табличной части «Доступные обновления» нажмите кнопку Добавить и выберите файл типовой конфигурации ЗУП ПРОФ (1cv8_prof.cf).
  6. Нажмите кнопку Выполнить.

Платформа проанализирует различия между КОРП и ПРОФ и сформирует файл .cfu, который содержит исключительно новые и изменившиеся объекты, специфичные для версии КОРП.

Шаг 3. Применение изменений к рабочей измененной базе

Теперь применим полученную дельту к вашей рабочей измененной конфигурации:

  1. Обязательно сделайте резервную копию (бэкап) вашей рабочей базы данных перед выполнением операции!
  2. Откройте рабочую измененную базу в режиме «Конфигуратор».
  3. Выберите меню Конфигурация — Сравнить, объединить с конфигурацией из файла....
  4. Укажите ранее созданный файл delta_prof_to_korp.cfu.
  5. В открывшемся окне сравнения вы увидите чистую картину: платформа покажет только те объекты, которые добавляются или изменяются при переходе на КОРП. Ваши уникальные доработки (новые справочники, документы или реквизиты, которых нет в типовой ПРОФ) не будут конфликтовать со структурой КОРП, так как в файле дельты их просто нет.
  6. Настройте правила объединения для дважды измененных объектов (например, общих модулей, где пересекаются ваши доработки и код КОРП) и нажмите кнопку Выполнить.

Шаг 4. Настройка конфигурации поставщика (Критически важно!)

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

Выясним, как правильно переписать правила поддержки на КОРП с помощью метода «фиктивного объединения»:

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

В результате этой операции структура метаданных вашей базы не изменится, но платформа корректно пропишет правила поддержки для «Зарплата и управление персоналом КОРП». Теперь база будет штатно обновляться стандартными файлами обновлений КОРП.

Шаг 5. Пост-миграционные процедуры в режиме «1С:Предприятие»

После завершения работы в Конфигураторе и сохранения изменений (клавиша F7) необходимо корректно запустить базу данных в режиме пользователя:

Для иллюстрации успешного завершения процедур обновления программно можно отслеживать ход выполнения обработчиков обновления с помощью вызова стандартных процедур БСП:


// Пример проверки завершения обновления информационной базы
Если ОбновлениеИнформационнойБазыКлиент.НеобходимоОбновление() Тогда
    ВызватьИсключение НСтр("ru = 'Выполнение отложено до завершения всех процедур обновления данных!'");
КонецЕсли;

Проанализировав ситуацию, мы видим, что данный метод позволяет сократить время перехода с измененной ЗУП ПРОФ на КОРП с нескольких дней нудной ручной работы до 30-40 минут, гарантируя при этом сохранность доработок и корректность последующих обновлений.

← На главную