Новая версия библиотеки стандартных подсистем в своей конфигурации: порядок работ от копии до проверки
Содержание
Как обновить БСП, зависит от того, чья у вас конфигурация. В типовой (Бухгалтерия, ЗУП, УТ) библиотеку отдельно не обновляют: новая версия БСП приходит внутри очередного релиза, и достаточно обновить саму конфигурацию. В собственной разработке на базе БСП новую версию библиотеки вливают в Конфигураторе через Конфигурация → Сравнить, объединить с конфигурацией из файла или через механизм поддержки, затем обновляют конфигурацию базы данных и запускают 1С:Предприятие, чтобы отработали обработчики обновления.
Самая трудоёмкая часть — не сам перенос модулей, а разбор конфликтов в общих модулях и переход с устаревших методов. Порядок работ почти одинаков для обеих ситуаций, различается только способ переноса новой версии.
| Ваша ситуация | Как обновлять БСП | Сложность |
|---|---|---|
| 🟢 Типовая конфигурация на полной поддержке | Обновить конфигурацию файлом .cfu очередного релиза | Низкая |
| 🟡 Типовая с доработками, поддержка с возможностью изменения | Поддержка → Обновить конфигурацию, разбор дважды изменённых объектов | Средняя |
| 🟠 Своя конфигурация, БСП стоит на поддержке | Поддержка → Обновить конфигурацию с файлом .cf новой версии БСП | Средняя |
| 🔴 Своя конфигурация, БСП внедрена без поддержки | Сравнение и объединение с .cf библиотеки по настройкам выбранных подсистем | Высокая |
Что такое БСП и зачем переходить на новую версию
Библиотека стандартных подсистем (БСП) — набор общих механизмов, на которых построены почти все типовые решения 1С: пользователи и права, печать, присоединённые файлы, обновление информационной базы, интернет-поддержка, работа с почтой, версионирование, дополнительные отчёты и обработки. В дереве метаданных её объекты собраны в подсистеме СтандартныеПодсистемы.
Обновлять библиотеку приходится по нескольким причинам:
- 🔧 Новая платформа. Свежие версии платформы 8.3 меняют поведение отдельных методов, и старая БСП начинает выдавать предупреждения или ошибки.
- 📜 Изменения законодательства и сервисов. Через БСП работают подсистемы интернет-поддержки, получения классификаторов, ЭДО. Старые версии перестают корректно связываться с сервисами.
- 🐞 Исправления. Каждая версия закрывает найденные ошибки и уязвимости.
- 🧩 Совместимость с другими библиотеками. Библиотека электронных документов, библиотека технологии сервиса и другие требуют определённой версии БСП.
Как узнать текущую версию БСП
Есть три надёжных способа:
- В Конфигураторе. Откройте общий модуль
ОбновлениеИнформационнойБазыБСП, процедуруПриДобавленииПодсистемы. В ней строка видаОписание.Версия = "3.1.х.х". - В регистре сведений. Регистр
ВерсииПодсистемхранит версию каждой библиотеки, до которой обновлены данные базы. Если версия в регистре и в модуле различаются, обработчики обновления ещё не отработали. - В режиме 1С:Предприятие. Включите в настройках пользователя отображение команды «Все функции», откройте через неё регистр сведений
«Версии подсистем» и найдите строку
СтандартныеПодсистемы.
Подготовка к обновлению БСП: копия, совместимость, разметка доработок
Резервная копия
Перед любым обновлением сделайте полную копию базы
. Для файловой базы — Администрирование → Выгрузить информационную базу в Конфигураторе (файл .dt). Для клиент-серверной — штатный бэкап СУБД средствами SQL Server или PostgreSQL, он быстрее и надёжнее .dt на больших объёмах.
Отдельно сохраните текущую конфигурацию в файл через Конфигурация → Сохранить конфигурацию в файл. Этот .cf понадобится как «старая версия» при трёхстороннем сравнении, если в конфигурации что-то пойдёт не так.
Проверка совместимости
Для каждой версии БСП в документации к выпуску указаны:
- минимальный номер платформы — версия платформы на серверах и клиентах должна быть не ниже него;
- поддерживаемый режим совместимости конфигурации — свойство
Режим совместимостив корне конфигурации; - версии, с которых возможен прямой переход. Если ваша БСП старше самой ранней из списка, обновляйтесь через промежуточную версию.
Не поднимайте режим совместимости «заодно». Это меняет поведение платформы для всей конфигурации. Делайте это отдельной задачей с отдельным тестированием.
Разметка своих доработок
Главный приём, который экономит дни при каждом обновлении: свой код не должен лежать внутри модулей БСП. Для настройки библиотека предоставляет переопределяемые модули, их имена заканчиваются на Переопределяемый (например, ОбщегоНазначенияПереопределяемый, УправлениеПечатьюПереопределяемый). При обновлении они почти не конфликтуют: библиотека меняет в них только комментарии-шаблоны.
Если доработки всё же внесены в модули библиотеки, перед обновлением:
- Сравните текущую конфигурацию с «чистой» БСП той же версии — увидите полный список своих правок.
- Перенесите то, что можно, в переопределяемые модули или в расширение конфигурации .
- Остальное пометьте комментариями с единым префиксом, чтобы быстро найти при объединении.
Пошаговое обновление БСП в конфигурации
Способ 1. Типовая конфигурация
Здесь обновление БСП — это просто обновление релиза.
- В Конфигураторе откройте
Конфигурация → Поддержка → Обновить конфигурацию. - Укажите файл обновления
.cfuследующего релиза или выберите поиск доступных обновлений. - Если конфигурация на полной поддержке, платформа применит изменения без вопросов. Если включена возможность изменения — откроется окно сравнения.
- Выполните
Конфигурация → Обновить конфигурацию базы данных(F7). - Запустите 1С:Предприятие под администратором — программа выполнит обработчики обновления.
Релизы нельзя пропускать произвольно: в описании каждого указано, с каких версий он ставится. Новая версия БСП придёт автоматически вместе с релизом.
Способ 2. Своя конфигурация, БСП на поддержке
Если при первом внедрении библиотеку поставили на поддержку (конфигурация поставщика — БСП), обновление похоже на типовое:
- Возьмите из комплекта поставки новой БСП полный файл конфигурации библиотеки
.cf. Конфигурация → Поддержка → Обновить конфигурацию→ выберите этот файл.- В окне сравнения включите отбор по дважды изменённым свойствам — это объекты, которые меняли и вы, и разработчики БСП. Остальное можно брать из новой версии целиком.
- Для каждого дважды изменённого модуля откройте сравнение и решите по процедурам: взять новую версию, оставить свою или объединить вручную.
- Новые объекты библиотеки, которых не было в вашей конфигурации, отметьте к добавлению только для тех подсистем, которые вы используете.
Способ 3. Своя конфигурация, БСП без поддержки
Это самый трудоёмкий вариант.
- В комплекте поставки БСП есть обработка-помощник внедрения. Откройте её в демонстрационной базе библиотеки, отметьте используемые подсистемы. Помощник сам добавит зависимые подсистемы и сформирует файл настроек сравнения/объединения.
- В вашей конфигурации:
Конфигурация → Сравнить, объединить с конфигурацией из файла→ файл.cfновой БСП. - В окне сравнения загрузите сохранённый файл настроек: будут отмечены только объекты выбранных подсистем.
- Для общих модулей и форм используйте объединение с приоритетом новой версии, а свои правки возвращайте точечно.
- Подумайте о том, чтобы при этом объединении поставить БСП на поддержку. Следующее обновление пойдёт по способу 2, и платформа сама начнёт отличать ваши правки от правок библиотеки.
Общий финал для всех способов
Конфигурация → Проверка конфигурациис синтаксическим контролем модулей во всех режимах запуска, которые вы используете.- Увеличьте версию своей конфигурации в свойстве
Версия— так БСП запустит и ваши обработчики обновления из модуляОбновлениеИнформационнойБазы<ИмяКонфигурации>. Конфигурация → Обновить конфигурацию базы данных. Если меняется структура данных, потребуется монопольный доступ: заранее завершите сеансы пользователей.- Запустите 1С:Предприятие. Программа покажет ход обновления версии программы и выполнит обработчики.
Обработчики делятся на монопольные, оперативные и отложенные. Первые два вида выполняются при первом запуске, отложенные — в фоне регламентным заданием, пока пользователи уже работают.
Ошибки при обновлении БСП и что с ними делать
Большинство проблем после обновления связаны с тем, что ваш код обращается к методам, которые в новой версии БСП переименованы, перенесены или удалены. Библиотека сначала переносит такие методы в область устаревших процедур и функций, а через несколько версий удаляет совсем.
Проверка конфигурации.Не меняйте при объединении «наугад» флаг на «взять из файла» для модулей, где у вас много доработок. Тогда правки будут затёрты молча, а ошибка вылезет у пользователя через неделю.
Обновление в распределённой информационной базе и в облаке
РИБ
В распределённой информационной базе конфигурацию меняют только в главном узле. Подчинённые узлы получают её с сообщением обмена.
Порядок такой:
- Обновите конфигурацию и БСП в главном узле, выполните обновление конфигурации базы данных и первый запуск.
- Выполните обмен: изменения конфигурации уйдут в подчинённые узлы.
- В каждом подчинённом узле после получения сообщения примените изменения конфигурации и запустите 1С:Предприятие — отработают обработчики обновления узла.
Не обновляйте подчинённый узел вручную файлом конфигурации — узел перестанет совпадать с главным, и обмен остановится.
Перед обновлением главного узла добейтесь, чтобы все подчинённые узлы обменялись данными. Если какой-то узел давно не выходил на связь, накопленные в нём изменения придётся сопоставлять уже с новой структурой.
Облако
Здесь всё зависит от типа размещения:
- ☁️ Аренда сервера или виртуальной машины. Это та же клиент-серверная база , только на чужом железе. Обновляете по способам выше, через удалённый рабочий стол или консоль сервера.
- 🏢 Сервис с разделением данных (модель сервиса). Конфигурацию и БСП обновляет поставщик сервиса для всех областей данных сразу. Пользователь области не может обновить библиотеку сам, а своя доработка возможна только через расширения и дополнительные обработки.
Автоматизация обновления: пакетный режим и скрипты
Если баз много или обновление регулярное, Конфигуратор можно запускать без интерфейса. Пример bat-файла для файловой базы на поддержке:
@echo off
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set IB=/F"D:\Bases\MyBase"
set AUTH=/N"Администратор" /P"пароль"
rem 1. Резервная копия
%V8% DESIGNER %IB% %AUTH% /DumpIB "D:\Backup\MyBase.dt" /Out "D:\Logs\dump.log" /DisableStartupDialogs
rem 2. Обновление конфигурации по поддержке и обновление конфигурации БД
%V8% DESIGNER %IB% %AUTH% /UpdateCfg "D:\Update\1Cv8.cfu" /UpdateDBCfg /Out "D:\Logs\update.log" /DisableStartupDialogs
rem 3. Запуск обработчиков обновления БСП
%V8% ENTERPRISE %IB% %AUTH% /C"ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы" /DisableStartupDialogs
Путь к платформе и номер версии замените на свои. Для клиент-серверной базы вместо /F используется /S"сервер\база".
Пояснения к ключам:
| Ключ | Что делает | Риск |
|---|---|---|
/DumpIB | Выгружает базу в .dt | Долго на больших базах, лучше бэкап СУБД |
/UpdateCfg | Обновляет конфигурацию, стоящую на поддержке | Конфликты дважды изменённых объектов решаются по умолчанию |
/LoadCfg | Загружает конфигурацию из .cf целиком | Полностью заменяет конфигурацию, ваши доработки пропадут |
/UpdateDBCfg | Обновляет конфигурацию базы данных | Нужен монопольный доступ при изменении структуры |
/C"ЗапуститьОбновлениеИнформационнойБазы" | Параметр запуска БСП: выполнить обработчики | Пользователи должны быть отключены |
Для клиент-серверной базы перед пакетным обновлением включают блокировку сеансов с кодом разрешения и передают его ключом /UC. Если в базе работают люди, их сеансы будут завершены: делайте это вне рабочего времени и предупредите заранее.
Автоматическое объединение подходит только для конфигураций без доработок в БСП или на поддержке. Объединение своей конфигурации с новой библиотекой по-прежнему требует разработчика: скрипт не решит, какую из двух версий процедуры оставить.
Из готовых инструментов разработчики часто используют vanessa-runner на OneScript: он оборачивает эти же ключи командной строки и удобен в связке с Jenkins или GitLab CI. Если конфигурация хранится в Git, выгружайте её в файлы через /DumpConfigToFiles до и после обновления — дифф покажет все изменения БСП построчно.
Проверка после обновления и откат
Что проверить сразу
- В регистре
ВерсииПодсистемверсияСтандартныеПодсистемысовпадает с новой. - В разделе
Администрирование → Обслуживаниеоткройте результаты обновления программы: все обработчики должны быть выполнены, отложенные — завершены или в процессе без ошибок. - Журнал регистрации не содержит ошибок с событием обновления информационной базы.
- Работают ключевые сценарии: вход пользователей, печать основных документов, отправка почты, обмены, интернет-поддержка.
- Права: вход под обычным пользователем, а не только под администратором.
Как откатить
Откат зависит от того, дошло ли дело до первого запуска.
| Момент | Что откатывать | Как |
|---|---|---|
| Объединили, но не обновили конфигурацию БД | Только основную конфигурацию | Конфигурация → Загрузить конфигурацию из файла со старым .cf |
| Обновили конфигурацию БД, не запускали 1С:Предприятие | Конфигурацию и структуру | Восстановить копию базы |
| Обработчики уже отработали | Данные и конфигурацию | Только восстановление из копии |
Вернуть старый .cf после того, как обработчики изменили данные, нельзя: старый код будет работать с данными в новом формате. Единственный корректный откат — восстановить базу из копии, сделанной перед обновлением. Данные, введённые после обновления, при этом потеряются, поэтому решайте об откате в первые часы.