XBSL Skills AI-инструменты для 1С:Элемент
Скиллpython3

xbsl-pattern-register

Паттерны XBSL для работы с регистрами в 1С:Элемент — синтаксис существенно отличается от классической 1С, используй до написания кода. Вызывай когда: документ делает движения по регистру; нужен приход/расход/списание/ поступление на склад; проведение документа меняет остатки или обороты; нужна отмена проведения; документ записывает данные в регистр сведений при проведении. РегистрНакопления (паттерны A1–A5, B): приход, расход или проводки при проведении документа (ПослеЗаписи, НаборЗаписей); замена старых движений при повторном проведении; отмена проведения (очистка движений); контроль / запрет отрицательных остатков. РегистрСведений (паттерны C1–C4): запись/обновление данных по измерениям (Замещать = Истина); добавление без перезаписи (Замещать = Ложь); удаление записей по фильтру; срез последних для периодических регистров (СрезПоследних). НЕ для: отчётов по регистрам, создания объектов РН/РС, форм, справочников.

Движения по регистру накопления (XBSL)

Шаг 1: Извлеки метаданные через скрипт

Запусти скрипт для регистра и для документа — это даст все нужные имена полей:

python3 .claude/skills/xbsl-pattern-register/scripts/extract_meta.py <путь-к-регистру.yaml>
python3 .claude/skills/xbsl-pattern-register/scripts/extract_meta.py <путь-к-документу.yaml>

Скрипт выводит JSON. Для регистра: - register_kind — нужен ли ВидЗаписи (needs_record_type: true → нужен, только для Остатки) - dimensions — измерения (в ДобавитьЗапись и ГДЕ — без суффикса) - resources — ресурсы (в ДобавитьЗапись — без суффикса; в запросе к .Остатки — добавь суффикс Остаток)

Для документа: - header_fields — реквизиты шапки - tables — табличные части и их реквизиты - handler_file — имя файла .xbsl для обработчика

Если .xbsl документа уже существует — прочитай его, чтобы не затереть код.

Шаг 2: Выбери паттерн

РегистрНакопления

Задача Паттерн
Приход в регистр Остатки A1
Расход из регистра Остатки A2
Движение в регистр Обороты A3
Как работает очистка при повторном проведении / удалении A4
Два регистра одновременно A5
Запрет уйти в минус / контроль остатков B

РегистрСведений

Задача Паттерн
Записать / обновить данные по ключу (Замещать = Истина) C1
Добавить данные без перезаписи существующих (Замещать = Ложь) C2
Удалить записи по фильтру C3
Получить актуальное значение (СрезПоследних, периодический РС) C4

Шаблоны кода: - РегистрНакопления: references/движения-рн.md - РегистрСведений: references/движения-рс.md

Шаг 3: Напиши или дополни файл модуля

РегистрНакопления: файл <ИмяДокумента>.Объект.xbsl рядом с <ИмяДокумента>.yaml. Если файл уже существует — дополни, не перезаписывай.

РегистрСведений: код пишется туда, откуда вызывается запись — это может быть .xbsl документа, общего модуля или самого РС (обработчики ПередЗаписью/ПослеЗаписи на НаборЗаписей). Уточни у пользователя, где должен находиться код.


Проверь перед финалом

  • @Обработчик стоит над методом ПослеЗаписи
  • ВидЗаписи указан только если ВидРегистра: Остатки (для Обороты — не нужен)
  • РН: НаборЗаписей.Фильтр.Установить(Регистратор = Ссылка) вызван до Записать()
  • РС: встроенного Регистратора нет — фильтр только по измерениям; привязки записей к документу на уровне платформы не существует
  • В запросе к .Остатки: Измерения — без суффикса, Ресурсы — с суффиксом Остаток
  • Контроль остатков (паттерн B) идёт после НаборЗаписей.Записать()

Объяснения “почему” и детали платформы: references/теория.md