Обновление Библиотеки стандартных подсистем (БСП) — это всегда вызов для разработчика, особенно если разрыв между текущей и целевой версиями составляет несколько лет (например, переход с ветки 2.2 на 3.1). Процесс осложняется тем, что БСП глубоко интегрируется в структуру метаданных и программный код. Рассмотрим подробно два основных подхода к решению этой задачи, проанализируем необходимые инструменты и разберем нюансы сохранения данных. Для быстрого изучения и поиска актуального кода можно использовать справочник по методам БСП с примерами использования.
Этот способ считается классическим и наиболее безопасным с точки зрения сохранения целостности данных. Разберем его по шагам.
При последовательном обновлении не обязательно накатывать каждый промежуточный релиз. Однако критически важно выполнять все действия, описанные в файле UpdateSSL.xml, для каждого пропущенного релиза. Рассмотрим алгоритм:
1С:Предприятие не всегда удобен при массовых изменениях. Рассмотрим использование KDiff3 или P4Merge. Эти программы поддерживают трехстороннее сравнение (3-way merge).Проанализируем, как работает трехстороннее сравнение в KDiff3 при обновлении конфигурации:
Система автоматически принимает изменения, если они однозначны: если текст в A и C совпадает, а в B отличается — значит, это ваша доработка, и она сохраняется. Если A и B совпадают, а C изменился — берется код новой БСП. Вмешательство потребуется только в случаях, когда один и тот же участок кода был изменен и вами, и разработчиками 1С.
Если конфигурация сильно переписана или версия БСП безнадежно устарела, последовательное обновление может занять недели. В этом случае рассмотрим альтернативный вариант: внедрение актуальной БСП «с нуля» в копию базы.
Разберем этапы этого процесса:
ПрисоединенныеФайлы, Банки, регистры сведений с контактной информацией), добавив им префикс (например, _Удалить_ или Старый_)..cf файл в нашу рабочую базу через «Загрузить конфигурацию из файла».Важный нюанс: Чтобы данные не потерялись при обновлении, все ссылки в ваших документах на старые (переименованные) справочники сохранятся. После успешного обновления структуры базы нам потребуется написать простые обработки для переноса данных из «старых» таблиц в «новые» структуры БСП.
Выясним причину, почему данные могут «отвалиться» даже при успешном сравнении модулей. БСП активно использует справочник ИдентификаторыОбъектовМетаданных. При масштабных изменениях UUID объектов могут измениться.
Для корректного завершения обновления обязательно выполним следующие действия:
1С:Предприятие с параметром ЗапуститьОбновлениеИнформационнойБазы.КонтактнаяИнформацияСлужебный, которые помогут преобразовать старые строковые адреса в новые XML-структуры.Чтобы каждое следующее обновление БСП не превращалось в проблему, разберем современные стандарты разработки. Рассмотрим переход на расширения конфигурации. Вместо того чтобы править типовые процедуры БСП напрямую, используем аннотации:
&После("ПриЗаписи")
Процедура Моя_ПриЗаписи(Источник, Отказ)
// Ваш код здесь, он не мешает обновлению основной конфигурации
КонецПроцедуры
Также проанализируем ситуацию с модальностью. Новые версии БСП (начиная с 3.0) полностью ориентированы на асинхронную работу. Если в вашей старой конфигурации используются методы Вопрос() или ОткрытьФормуМодально(), их придется заменить на описание оповещений (ОписаниеОповещения), иначе механизмы БСП будут работать некорректно или вызывать ошибки исполнения. При необходимости можно использовать примеры асинхронного запуска функций и процедур на БСП.
При переходе с версии 2.2 на 3.1 объем данных в регистрах БСП может существенно вырасти. Чтобы ускорить процесс выполнения обработчиков обновления данных:
Подведем итог: выбор метода зависит от глубины ваших изменений. Если конфигурация близка к типовой — лучше идти по пути последовательного обновления с использованием KDiff3. Если же конфигурация глубоко кастомизирована, метод «чистого» внедрения с временным сохранением старых таблиц (через переименование) позволит вам получить более качественный и стабильный результат в долгосрочной перспективе.