При обновлении конфигураций на платформе 1С:Предприятие 8.3, особенно таких сложных, как Бухгалтерия государственного учреждения (БГУ) редакции 2.0, специалисты часто сталкиваются с ситуацией, когда обновление в Конфигураторе проходит успешно, но при первом запуске в режиме «Предприятие» процесс останавливается на отметке 10% и выдает критическую ошибку. Рассмотрим подробно, почему это происходит и как правильно восстановить работоспособность базы.
Проблема, описанная в ситуации, заключается в нарушении последовательности обновления релизов. В современных конфигурациях 1С, построенных на базе «Библиотеки стандартных подсистем» (БСП), процесс обновления разделен на два этапа:
Если вы попытаетесь обновить базу сразу на несколько версий вперед (например, с релиза 2.0.82.27 сразу на 2.0.84.74), пропустив важный промежуточный релиз 2.0.83.32, система заблокирует выполнение обновлений. Это происходит потому, что в коде общего модуля ОбновлениеИнформационнойБазыБГУ прописаны жесткие проверки. Программа проверяет текущую версию конфигурации и сравнивает её с минимально допустимой для перехода. Если условие не соблюдено, вызывается исключение, и работа прекращается на этапе инициализации (обычно это те самые 10%).
Важно понимать, что обработчики обновления — это не просто формальность. Рассмотрим подробнее, что они делают в БГУ:
Если эти процедуры будут пропущены, вы получите базу, которая «внешне» работает, но при формировании регламентированной отчетности или проведении документов начнут возникать труднодиагностируемые ошибки: пустые аналитики, неверные итоги и «битые» ссылки.
Если вы обнаружили, что база «зависла» на обновлении, наиболее правильным и безопасным методом будет возврат к резервной копии и повторение процесса по правилам. Проанализируем этот путь:
2.0.82.27).2.0.83.32. Для этого используйте стандартный файл обновления (.cfs) или файл конфигурации (.cf).2.0.83.32 можно приступать к обновлению до релиза 2.0.84.x.Ситуация осложняется, если в базе присутствуют доработки (новые объекты, измененные модули). В этом случае простая загрузка .cf файла приведет к потере всех изменений. Рассмотрим, как поступить в этой ситуации:
Выясним причину наличия новых объектов. Если они были добавлены преподавателем или другим разработчиком, нам необходимо использовать режим «Сравнение и объединение». Посмотрим на алгоритм работы с измененной базой:
1. Откройте «Конфигуратор», перейдите в меню «Конфигурация» — «Сравнить, объединить с конфигурацией из файла».
2. Выберите файл .cf промежуточного релиза 2.0.83.32.
3. В окне сравнения снимите галочки с тех объектов, которые являются уникальными для вашей базы (новые справочники, документы или измененные формы), чтобы не затереть их типовыми настройками.
4. Выполните объединение и обновите конфигурацию базы данных (клавиша F7).
5. Запустите режим «Предприятие» для выполнения скриптов БСП.
Если бэкапа нет, а база уже находится в состоянии «недообновленности», можно попробовать принудительно запустить обработчики. Рассмотрим несколько способов, которыми пользуются опытные программисты 1С:
Способ 1: Редактирование регистра «Версии подсистем»
Система понимает, какой релиз сейчас установлен, читая данные из регистра сведений ВерсииПодсистем. Если вручную (с помощью обработки «Редактирование регистров») изменить номер версии основной конфигурации на старый, система может попытаться запустить обработчики заново при следующем входе. Однако это требует глубокого понимания структуры БСП.
Способ 2: Параметр запуска для принудительного обновления
Попробуем запустить базу с ключом, который инициирует процедуры обновления. В параметрах запуска информационной базы (в окне выбора баз кнопка «Изменить» — «Далее» — «Дополнительные параметры запуска») впишите:
/C ЗапуститьОбновлениеИнформационнойБазы
Этот параметр заставляет систему игнорировать некоторые проверки и начать выполнение процедур обновления ПриСтарте.
Способ 3: Временное комментирование кода (крайний случай)
Как упоминалось в обсуждении, можно найти в общем модуле место, где происходит проверка версии и вызывается ВызовИсключения. Проанализируем пример кода, который может блокировать запуск:
// Пример упрощенного фрагмента кода в общем модуле
Если ВерсияНижеДопустимой(ТекущаяВерсия, "2.0.83.32") Тогда
// ВызовИсключения НСтр("ru = 'Переход на данную версию возможен только с релиза 2.0.83.32'");
КонецЕсли;
Внимание: Закомментировав ВызовИсключения, вы позволите базе открыться, но вы обязаны после этого вручную запустить пропущенные обработчики через консоль обновлений или специальные внешние обработки, иначе целостность данных будет нарушена.
Посмотрим на последствия, если просто «проскочить» ошибку и продолжить работу:
Проанализировав ситуацию, мы пришли к выводу, что наиболее эффективная стратегия при обновлении БГУ 2.0 — это строгое следование цепочке релизов, указанной на портале ИТС (1С:Обновление программ). Никогда не пренебрегайте запуском базы в режиме «Предприятие» между этапами обновления, даже если вы обновляете «демо-базу» или учебный черновик. Это сэкономит ваше время и гарантирует, что все механизмы бюджетного учета будут работать корректно.