# 1c Dev

> Разработка и код-ревью на 1С:Предприятие 8.3 (BSL) с проверкой по РЕАЛЬНОМУ коду через MCP, а не по памяти. Используй всякий раз, когда пишешь, правишь или ревьюишь BSL-код, работаешь с общими модулями, формами, запросами, СКД, регистрами, ролями; реализуешь задачу по ЧТЗ/тех-проекту; ищешь, как устроена типовая конфигурация или что уже есть в расширении; или отвечаешь на технический вопрос «как сделать в 1С» и «где это в коде». Срабатывай даже без слов «BSL/код/ревью», если речь о реализации/правке в 1С. Нужны ДАННЫЕ живой/файловой базы (посчитать записи, прочитать регистр, подключиться и проверить через OData) — это НЕ задача этого скилла: вызывай `1c-tester` — он выбирает уровень в фиксированном порядке: чувствительные данные (персональные, платёжные, зарплатные) предпочтительно через ось доступа даже при разовом чтении, а без публикации допустим и раннер, но тогда результат обезличивает человек РУКАМИ перед отчётом, показом вовне или передачей AI (§B.2 `references/data-access-verification.md`); разовое чт

- Skill: `vgtitov/1c-dev` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add vgtitov/1c-dev`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vgtitov/1c-dev/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: vgtitov (https://skillmd.com/u/vgtitov)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/vgtitov/1c-dev

---


# Разработка 1С (BSL) — писать корректный и производительный код по реальному коду

## Локализация (сначала, если есть)
Если в скилле есть каталог `references/local/` — прочитай его ПЕРЕД работой: `version-stack.md`
(версии платформы/библиотек, режим совместимости, префиксы ТВОЕЙ компании) и остальные карты.
При противоречии локальное побеждает generic. Контракт — `docs/SKILL_LOCALIZATION.md` toolkit.

Скилл разработчика: писать prod-ready BSL и ревьюить его по реальному коду и стандартам, не по памяти.
Адаптируется под любую конфигурацию/расширение — заполни конвенции своего проекта (см. ниже).

## Главное правило: спроси инструмент, не угадывай
Нейросеть врёт в деталях 1С. Источник истины — реальный код и официальная справка:
- **Перед написанием** — найди, как уже сделано: MCP-поиск по коду (find/search/read), затем grep по клонам.
  Сигнатуры встроенных функций — справка платформы (MCP справки платформы под твою версию).
- **После правки** — прогони **BSL Language Server** (синтаксис + стандарты ИТС). До 3 циклов автоисправления.
- **Гвард производительности (ENFORCED)** — прогони детектор «обращение к БД в цикле»:
  `python scripts/bsl_guard.py <изменённые .bsl>` (exit 1 = находки). Ловит Запрос…Выполнить()/`.ПолучитьОбъект()`/
  `.Ссылка.<Реквизит>` внутри `Пока/Для` (баг печатной формы). То же на коммите — pre-commit хук на staged `*.bsl`.
- Нет поведения ни в коде, ни в справке — так и скажи. Механизм без сверки помечай **[проверить]**, не «верно».

Алгоритм поиска (MCP-first): `find_object` → `search` → `read_module` → grep по клонам. Параметром `scope`
ограничивай слой/контур или расширяй на все (`scope` задаётся в `config/layers.*.toml`; без конфига — все слои).
**Не делай вывод об отсутствии по непросмотренному слою.**

Когда файл уже найден и вопрос точечный (что вызывает эту функцию, где она объявлена, какой тип у выражения,
не сломает ли правку сигнатуры другой контекст вызова) — не гадай по тексту и не грепай заново: `bsl-ls-native`
(MCP `≥1.0`, JDK 21+) даёт `definition`/`find_references`/`call_hierarchy`/`hover`/`type_at_position` семантически,
без ложных совпадений по имени. Справка по глобальным функциям/типам платформы (сигнатуры, since/deprecated,
примеры) — тем же MCP: `global_member_info`/`global_member_search`/`type_info`.

Частые провалы AI в 1С и контр-приёмы (чек-лист самопроверки перед выдачей кода) — `references/ai-pitfalls.md`.

## Версионный стек — НАСТРОЙ ПОД СВОЙ ПРОЕКТ
Зафиксируй у себя (в `CLAUDE.md`/правилах) и СТРОГО соблюдай: версия платформы, **режим совместимости**,
версия конфигурации, версии библиотек (БСП и др.). Принцип: справку брать по версии платформы, но НЕ предлагать
API, недоступный в твоём режиме совместимости. Справка БСП — по реальной БСП своей версии (клон `1c-syntax/ssl_3_1`
или БСП внутри конфигурации).

## Запреты AI и IDE-гейт (структуру меняет человек в IDE)
Структуру конфигурации — объекты метаданных, формы, макеты, СКД, роли — создаёт/меняет ТОЛЬКО человек в IDE
(**1C:EDT** или **Конфигуратор**), не AI и не текстовый редактор. IDE — источник истины структуры и фильтр
результатов AI. Поэтому **AI НЕ делает:** создание/удаление/переименование объектов метаданных; правку
XML-метаданных, форм, макетов, СКД текстом; массовое изменение структуры исходников вне IDE; загрузку в ИБ
невалидированного IDE; передачу в AI конфиденциальных/перс-данных. **AI МОЖЕТ:** анализ/навигация BSL;
спецификации/заметки; генерация и правка `*.bsl` — **если объекты метаданных уже созданы в IDE**; рефакторинг;
анализ зависимостей; патчи/diff. Любое AI-изменение человек принимает осознанно после проверки в IDE.

## Слои контура — искать в обоих
Контур = конфигурация (основа) + подключённое расширение. Искать функционал в ОБОИХ слоях. Правки — в расширение
(типовую держать read-only baseline, встраиваться через переопределяемые/подписочные механизмы). Где какой слой и
твои конвенции — см. `references/conventions-template.md`.

## Reuse-first, БСП и производительность (prod-ready)
Прежде чем писать свою утилиту — ищи готовое в БСП и типовой (через MCP). Топ-методы БСП —
`references/bsp-reuse.md` (реквизиты пачкой, массивы/строки/данные). Производительность и кэширование —
`references/performance.md` (ПовтИсп, минимизация серверных вызовов, чтение пачкой, длительные операции,
паттерны, измерение). Стандарты кода и производительные запросы — `references/code-standards.md`. Правило:
сначала измерь узкое место, потом оптимизируй его.

## Рабочий цикл реализации (тех-проект → атомы → код → передача) — ОПЕРАЦИОННОЕ ЯДРО
Полностью — в **`references/dev-workflow.md`**. Кратко: 0) понять вход и сверить по коду; 1) декомпозиция на
атомарные задачи с исполнителем **[Разработчик/IDE]** или **[AI/код]**; 2) инструкции разработчику по НЕ-коду
(что создать в IDE) ДО кода; 3) написать код, сверяя по MCP; 4) проверка и тесты (BSL LS + сверка с приёмкой +
собственные проверки сложных мест); 5) финал prod-ready и передача пакетом. Ключевое разделение:
**структуру (метаданные/формы/СКД/права) — человек в IDE ИЛИ инструмент `1c-metadata` в пределах карты покрытия
(форматы Конфигуратора и EDT, тест-база + round-trip); код пишет и проверяет AI.**

Команда в 1C:EDT с исходниками в git — модель веток, merge request, что кладём в репозиторий и
затруднения перехода с хранилища конфигураций: **`references/edt-git-workflow.md`**. Настройка рабочего
места (платформа, Java, память IDE, каталоги, лицензия) — `docs/edt-workstation.md` toolkit'а.

## Лестница тестирования (проверка «работает» — по ступеням)
Канон — **`docs/testing-ladder.md`**, настройка агентом — `onboard/TESTING_SETUP.md`. Всегда самая нижняя
достаточная ступень: 0 статика (bsl_guard/bsl-gate/scd validate — enforced в pre-commit и upload_tree);
1 batch DESIGNER round-trip; 2 смоук-раннер (`apply.smoke` — печатные формы/СКД реально формируются, вердикт
только по файлу-результату); 3 веб-смоук (публикация «работает» = строка 200 в access.log); 4 фреймворки
(Vanessa Automation/YAxUnit/Тестер) для команд/CI. «Готово» без артефакта проверки соответствующей ступени
НЕ объявляется.

## Роли-режимы (под задачу — переключай фокус)
developer (реализация по тех-проекту) · reviewer (ревью по стандартам и устойчивости) · refactor (читаемость без
смены поведения) · performance (запросы/блокировки/кэш) · error-fixer (багфикс: сначала анализ контекста и причины).

## Механические операции с платформой
Компиляция/дамп/валидация форм, СКД, ролей — `references/platform-ops.md` (набор `cc-1c-skills`, нужна 1С-платформа).
Поведение API управляемой формы, которое ловится только рантаймом (нет плоского обхода `Элементы`,
тайминг команд командного интерфейса, команда формы не перехватывается расширением, `Параметры` вне
вызова создания, заимствованная форма) — `references/platform-form-api.md`.

## Безопасность
Токены — только в env/keychain, НИКОГДА в чат/репозиторий. Конфиденциальные/персональные данные в AI не передавать.

