Как обновить сильно доработанную 1С:УПП при пропуске 19 релизов?

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

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

Анализ проблематики и основные риски

Рассмотрим ключевые сложности, с которыми сталкиваются разработчики при обновлении баз с большим числом пропущенных релизов:

  1. Утеря внутренних идентификаторов (UUID): Если объекты ранее добавлялись вручную через буфер обмена или сравнение/объединение без учета поддержки, платформа создала для них новые GUID. При объединении с новым типовым .cf файлом 1С может воспринять типовой объект как новый, а измененный — как подлежащий удалению. Это приведет к полной очистке данных в соответствующих таблицах СУБД при реструктуризации.
  2. Пропуск обработчиков обновления ИБ: При переходе сразу через 19 релизов существует риск, что обработчики обновления информационной базы, предназначенные для трансформации данных в промежуточных версиях, не отработают автоматически или будут исключены из алгоритмов регулярного обновления.
  3. Проблемы со связью конфигурации поставщика: Попытка последовательного накатывания множества .cfu файлов на некорректную конфигурацию поставщика приводит к ошибкам несовместимости версий.
  4. Недостаток виртуальной памяти: При сравнении и объединении таких крупных конфигураций, как 1С:Управление производственным предприятием (УПП) или 1С:Комплексная автоматизация (КА), 32-разрядный Конфигуратор часто аварийно завершает работу с ошибкой «Недостаточно памяти».

Оптимальная стратегия обновления (Без 19-кратной ручной работы)

Готовить 19 отдельных промежуточных файлов с доработками не требуется. Проанализируем наиболее эффективный алгоритм действий, который экономит время и гарантирует сохранность данных.

  1. Подготовка тестовой копии базы: Все эксперименты и подготовку финального конфигурационного файла выполняем исключительно на актуальной копии информационной базы.
  2. Восстановление конфигурации поставщика: Если поддержка нарушена, необходимо взять чистый типовой .cf файл именно того релиза, который фактически установлен в базе в данный момент. В Конфигураторе через меню Конфигурация -> Поддержка -> Настройка поддержки выполняем загрузку или объединение конфигурации поставщика без изменения основной базы данных.
  3. Подготовка финального объединенного CF-файла: Берем типовой .cf файл самого последнего (актуального) релиза. В отдельном Конфигураторе или копии переносим в него весь доработанный функционал, доработанные реквизиты, модули и формы.
  4. Тщательное сопоставление объектов: В окне сравнения и объединения конфигураций критически важно использовать функцию «Сопоставить объекты». Не полагаемся на автоматическое сопоставление по внутренним идентификаторам, а вручную связываем измененные объекты базы с соответствующими объектами нового релиза.
  5. Анализ обработчиков обновления ИБ: Выясняем, какие процедуры обновления данных должны отработать в режиме «Предприятие». В конфигурациях на базе УПП список обработчиков зарегистрирован в общем модуле БиблиотекаОбновленияИнформационнойБазыПереопределяемый в функции ОбработчикиОбновления(), а также в процедурах модуля ОбновлениеИнформационнойБазы. Если данные в промежуточных релизах меняли структуру, эти процедуры необходимо запустить.

Пошаговый порядок выполнения работ на рабочей базе

Разберем последовательный план действий для переноса обновлений на продуктивную базу данных:

Шаг 1. Анализ изменений и реструктуризации
Перед накатыванием подготовленного .cf файла на рабочую базу проверяем состав новых и измененных реквизитов. Если добавлено много новых тяжелых реквизитов в крупные справочники или документы, реструктуризация таблиц на базе в несколько сотен гигабайт может занять длительное время. В таком случае новые реквизиты можно добавить в рабочую базу заранее техническим обновлением.

Шаг 2. Последовательный запуск процедур обновления данных
Для того чтобы корректно отработали все алгоритмы трансформации данных за 19 релизов, применяем один из двух подходов:

Шаг 3. Контроль окна реструктуризации
После нажатия кнопки «Обновить конфигурацию базы данных» внимательно изучаем диалоговое окно «Реструктуризация таблиц базы данных». Если в списке действий присутствуют пункты «Удаление объекта» или «Удаление реквизита» для объектов, содержащих учетные данные, процедуру выполнять нельзя. Это сигнал о том, что сопоставление объектов выполнено некорректно.

Технические рекомендации для стабильной работы

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

1. Использование 64-разрядного Конфигуратора: Для предотвращения падения Конфигуратора по причине недостатка оперативной памяти при сравнении объёмных конфигураций уровня УПП или КА, используем исключительно 64-разрядный клиент платформы 1С:Предприятие (64-разрядный 1cv8.exe).

2. Резервное копирование на уровне СУБД: При работе с базами на MS SQL Server или PostgreSQL перед запуском тяжелой реструктуризации обязательно создаем дамп/бэкап средствами самой СУБД. Восстановление средствами платформы 1С при сбое реструктуризации может завершиться неудачей.

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

← На главную