framework/skills/tool-usage/platform-admin/subsystem-update/SKILL.md
Обновления подсистем БСП: запуск, контроль, журнал
npx skillsauth add steelmorgan/1c-agent-based-dev-framework subsystem-updateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Триггер | Действие | |---------|----------| | Добавлен обработчик обновления с новой версией | Выполнить полный цикл обновления | | Нужно повторно запустить обработчик | Сбросить версию в регистре, затем полный цикл | | Обновление не сработало | Диагностика через ЖР |
ОбновлениеИнформационнойБазыXXX)ИнтеграцияПодсистемБСП.ПриДобавленииПодсистемv8-runner build) — изменения в коде загружены в БДВЫБРАТЬ ИмяПодсистемы, Версия
ИЗ РегистрСведений.ВерсииПодсистем
ГДЕ ИмяПодсистемы = "ИМЯ_ПОДСИСТЕМЫ"
БСП выполнит обработчик, только если версия в регистре < версии обработчика.
Обработчики с МонопольныйРежим = Истина требуют отсутствия других сеансов. Точный синтаксис команд rac — в навыке rac-use (§ Блокировка входа в базу, § Просмотр сеансов базы, § Принудительное завершение сеанса). Ниже — порядок и параметры, специфичные для обновления ИБ.
Данные подключения: <project_root>/configs/yaxunit-runner.yml → app.connection. cluster_uuid и infobase_uuid: <project_root>/configs/cluster_map.yaml. Адрес агента RAC — трейлинг-аргумент <ras_host>:<ras_port>.
Порядок (не менять):
rac infobase update с флагами:
--sessions-deny=on --scheduled-jobs-deny=on --denied-message="Обновление ИБ" --permission-code=UpdateIB.
Значение --permission-code=UpdateIB должно совпадать с /UC из Шага 3.rac session list) и завершить каждый
(rac session terminate --session=<session_uuid>) — иначе монопольный режим не установится./opt/1cv8/current/1cv8c ENTERPRISE \
/S"<server>/<infobase>" \
/N"<user>" /P"<password>" \
/C"ЗапуститьОбновлениеИнформационнойБазы" \
/UC"UpdateIB" \
/DisableStartupDialogs
Параметр /UC"UpdateIB" — код разрешения, совпадающий с --permission-code из шага 2.
Ожидание: процесс завершится автоматически (30–120 сек в зависимости от объёма данных).
rac infobase update с обратными флагами: --sessions-deny=off --scheduled-jobs-deny=off --denied-message="" --permission-code="" (синтаксис — rac-use § Блокировка входа в базу и § Управление регламентными заданиями).
ВЫБРАТЬ ИмяПодсистемы, Версия
ИЗ РегистрСведений.ВерсииПодсистем
ГДЕ ИмяПодсистемы = "ИМЯ_ПОДСИСТЕМЫ"
logc_get_event_log(level='Error', from=<время_запуска>) — не должно быть ошибок Обновление информационной базыlogc_get_event_log(level='Information', from=<время_запуска>) — искать записи вашего обработчикаЕсли обработчик уже выполнился (версия в регистре >= версии обработчика), БСП его пропустит.
Варианты повторного запуска:
| Ошибка | Причина | Решение |
|--------|---------|---------|
| Невозможно установить монопольный режим | Активные сеансы в базе | Шаг 2: заблокировать + завершить все сеансы |
| Обновление уже выполняется | Зависший сеанс от предыдущей попытки | Завершить зависший сеанс через rac session terminate |
| Метод объекта не обнаружен (ПередОбновлениемИнформационнойБазы) | Модуль подсистемы не содержит обязательных callback-процедур | Добавить 6 обязательных процедур-заглушек (см. шаблон ниже) |
| Обработчик не вызвался (версия не изменилась) | Версия в регистре >= версии обработчика | Проверить текущую версию запросом, при необходимости увеличить |
| Конфигурация обновлена, но обработчик не выполнился | Обработчик зарегистрирован дважды или не в той подсистеме | Проверить grep по имени процедуры во всех модулях |
Минимальный набор обязательных процедур для модуля ОбновлениеИнформационнойБазыXXX:
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// СтандартныеПодсистемы.БазоваяФункциональность
Процедура ПриДобавленииПодсистем(МодулиПодсистем) Экспорт
МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыXXX");
КонецПроцедуры
// СтандартныеПодсистемы.ОбновлениеВерсииИБ
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "ИМЯ_ПОДСИСТЕМЫ";
Описание.Версия = "1.0.0.1";
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
КонецПроцедуры
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "1.0.0.1";
Обработчик.МонопольныйРежим = Истина;
Обработчик.Процедура = "МодульОбработчика.ИмяПроцедуры";
КонецПроцедуры
//@skip-warning
Процедура ПередОбновлениемИнформационнойБазы() Экспорт
КонецПроцедуры
//@skip-warning
Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсияИБ, Знач ТекущаяВерсияИБ,
Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт
КонецПроцедуры
//@skip-warning
Процедура ПриПодготовкеМакетаОписанияОбновлений(Знач Макет) Экспорт
КонецПроцедуры
//@skip-warning
Процедура ПриОпределенииРежимаОбновленияДанных(РежимОбновленияДанных, СтандартнаяОбработка) Экспорт
КонецПроцедуры
//@skip-warning
Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт
КонецПроцедуры
//@skip-warning
Процедура ПриЗавершенииПереходаСДругойПрограммы(Знач ПредыдущееИмяКонфигурации,
Знач ПредыдущаяВерсияКонфигурации, Параметры) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
Регистрация в ИнтеграцияПодсистемБСП.ПриДобавленииПодсистем:
МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыXXX");
depends_on:
development
1C server maintenance webhooks: container restart and external component cache cleanup
development
Interactive DAP debugging of a single BSL procedure
tools
Rules for using RLM tools for project search and navigation in 1C/BSL
development
Creates web applications and routes on Winow (a web server on OneScript and Autumn). Use when working with a web server on OneScript, routing, or Winow controllers.