Во втором случае, как правило, очень хочется передать проект кому-то такому, кто регулярно сталкивается с задачей «обновить перепаханную 1С, которую впервые видишь». Рассказ именно о таком проекте: к нам обратилась компания с самописной конфигурацией для управления арендой. В программе использовался БСП 2.1.9.1, требовалось перейти на актуальную редакцию 3.1.9.
Что же могло измениться за 8 лет?
Разница между версиями существенная — за 8 лет в библиотеке серьезно изменился функционал. Расскажем, как мы делали этот проект.
В начале — анализ. Смотрим на количество и сложность доработанных объектов, использующих функции БСП, какие из них измененные, какие добавленные (в данном случае было 60 добавленных и 10 измененных объектов).
Ищем наиболее проблемные места. Такими местами оказались:
- Использование частичного обновления — требовалось найти, из каких версий БСП оно было взято.
- Второй момент — в конфигурации использовались доработанные функции, которых просто не стало в актуальной редакции, им необходимо найти замену из новой библиотеки.
- Момент третий — в справочник «Договоры контрагентов» добавлена табличная часть «Файлы», реализованная без использования функционала БСП.
Ищем функции, готовим промежуточные конфигурации
Для поиска используемых функций БСП обращаем внимание на измененные объекты. В нашем случае задействованы механизмы библиотеки Контактная информация, Дополнительные сведения, Версионирование.
Выяснилось, что за основу рабочей конфигурации из поставки БСП версии 2.1.9.1 была взята демобаза, так как в ней присутствовали объекты, не входящие непосредственно в конфигурацию БСП, например, Справочник.Контрагенты, Справочник.ДоговорыКонтрагентов. Эта особенность облегчила задачу по обновлению — данные объекты можно взять из демонстрационной базы актуальной библиотеки.
Читаем описание перехода с предыдущих версий, которое имеется в дистрибутивах поставки: переход на БСП 3 минимально возможен с редакции 2.3.
Мы руководствуемся принципом, что можно «накатывать» новую конфигурацию, если там нет существенных изменений в структуре данных, например, удаления регистра. При этом нужно обязательно выполнять обработчики из всех предыдущих релизов по порядку.
В выбранных конфигурациях есть серьезные изменения в структуре, поэтому были обозначили следующие релизы:
- 2.2.5.36;
- 2.3.5.81;
- 3.1.1.151 — возможно, не обязательный, но взяли для подстраховки;
- 3.1.9.277.
Для подготовки промежуточных конфигураций взяли за основу типовые конфигурации из поставки (позже мы подумали что возможно правильнее будет взять конфигурации из демобазы этих версий, но пока решили оставить как есть).
Чтобы корректно обновить базу на актуальную версию БСП необходимо вынести текущую конфигурацию в свою собственную подсистему.
Для этого необходимо внести доработки в общий модуль «ПодсистемыКонфигурацииПереопределяемый» и добавить общий модуль «ОбновлениеИнформационнойБазы*ИмяКонфигурации*».
Для корректного использования БСП 3.1.9.277 необходимо провести первое внедрение согласно инструкции на сайте ИТС (для 2.1.9.1 этого не требуется). Мы предположили, что при обновлении базы через промежуточные версии БСП этого делать не нужно, но пока не проверим — будем держать в уме это требование.
Адаптируем, ищем замены, убираем лишнее
За основу обновляемой конфигурации взяли типовую 3.1.9.277, а не из демобазы, как планировалось изначально, так как количество измененных и добавленных объектов при сравнении демоконфигураций старой и новой демобазы кратно превышало количество объектов в сравнении типовых БСП 2.1.9.1 - 3.1.9.277.
Но, так как в рабочей конфигурации использовались объекты из демоконфигурации, которых не было в типовой 2.1.9.1, решили в обновленную конфигурацию перенести эти же объекты из демоконфигурации 3.1.9.277. Это привнесло функционал, связанный с использованием свежих объектов конфигурации демобазы: на формах появились новые реквизиты и элементы. Нам эти вещи не нужны, поэтому их просто «вырезаем». В итоге получилась упрощенная демоконфигурация, в которую будут переноситься реальные доработки рабочей конфигурации.
В новых версиях БСП изменилась архитектура подсистемы присоединенных файлов — были добавлены определяемые типы, их и стали использовать в объектах этой подсистемы. Учитываем эти моменты при подготовке промежуточных конфигураций.
Тестируем и обновляем, обновляем и тестируем
При выполнении обработчиков обновления промежуточных конфигураций выяснилось, что и для них необходимо вынести текущую конфигурацию в свою собственную подсистему, чтобы база корректно обновилась.
Также выяснилось, что в объектах исходной рабочей конфигурации, которые взяты из демобазы, присутствует функционал подсистем БСП, который не внедрен в саму конфигурацию. Этот функционал не использовался, но и ошибок не выдавал.
В обновленной конфигурации, увы, просто так оставить эти подсистемы нельзя. Необходимо либо провести довнедрение необходимых подсистем, либо вырезать их функционал подсистемы во избежание появления ошибок. Мы выбрали второй вариант, при необходимости заказчик сам внедрит этот функционал.
Обновление тестовой базы провели на платформе 8.3.21 — всё прошло успешно. Но заказчик уже обновил у себя платформу до 23 версии…и на ней база стала «падать» в процессе реструктуризации после загрузки первой промежуточной конфигурации. Падение происходило, когда реструктуризация доходит до справочников, добавившихся в промежуточной БСП 2.2.5.36.
Попробовали удалить эти новые справочники и выполнить реструктуризацию — сработало, изменения принялись, но без них запускать обработчики обновления нельзя. Вернули сравнением, объединением их из нашей промежуточной, запустили реструктуризацию и изменения применились. Обработчики отработали корректно. В итоге разбили промежуточную на 2 части: без справочников и полноценную, а также скорректировали инструкцию по обновлению базы.
Напоследок, база ещё решила зависнуть на отложенных обработчиках обновленной конфигурации. Причиной оказался типовой обработчик справочника «Файлы», который бесконечно работал с одними и теми же данными. Скорректировали его код, и обновление базы завершилось.
***
Итого, заказчик в срок получил готовые файлы для обновления: промежуточные и обновленную конфигурацию, а также инструкцию. Мы же пополнили свою копилку опытом обновления между редакциями БСП, надеемся, что и вам эта информация будет полезной.