Русский | English
ОТК¶
Технический контроль изменений кода 1С перед push и в pull request: проверяет только то, что вы изменили, средствами самой платформы — за минуты вместо часов — и ловит то, чего не видит проверка Конфигуратором.
ОТК — не ещё один анализатор BSL, а приёмка правки: ответ на вопрос «можно ли отправлять», подтверждённый платформой. Изменённые модули компилируются в своих контекстах, запросы разбирает платформа, изменённые формы открываются в тонком клиенте, тесты выбираются по изменённым методам. BSL Language Server и bsl-analyzer работают внутри ОТК источниками находок — от них берутся только новые замечания по правке.
Прогон на ветке defects демо-проекта otk-1c-demo (ожидание ускорено,
реальное время — в заголовке окна): статика за секунды находит лишний параметр, потерянный обработчик формы и метод
новее режима совместимости; пробы в базе добавляют необъявленную переменную, опечатку в поле запроса и ошибку при
открытии формы. Конфигуратор /CheckModules на этой ветке находит только переменную.
Зачем¶
- Расширенная проверка всех модулей Конфигуратором на ERP идёт часами (на тестовом ноутбуке около 5 часов), на отраслевой конфигурации — десятки минут, поэтому перед push её не запускают, а ошибки находят тестировщики, ночной CI или пользователи.
- Компиляция не видит ошибок в текстах запросов: опечатка в поле или таблице для неё — строка. Так же проходят лишний параметр в вызове экспортного метода и потерянный обработчик события формы.
- Форма открывается с ошибкой или зависает на вопросе пользователю — статическая проверка этого не покажет.
- Код, написанный ИИ-ассистентом, выглядит правдоподобно, но вызывает методы платформы, которых нет, которые новее режима совместимости или недоступны на клиенте.
- Ревью PR этого тоже не ловит: глазами не проверить, есть ли поле в регистре и откроется ли форма.
Для масштаба: на отраслевой конфигурации (≈ 12 тыс. файлов выгрузки) 20 изменённых модулей ОТК проверяет за 1,5–2 минуты.
ОТК и проверка Конфигуратором¶
| Класс ошибок | /CheckModules Конфигуратора |
ОТК |
|---|---|---|
Синтаксис, неизвестные переменные и методы, Справочники.<опечатка>, предопределённые элементы, формы в ПолучитьФорму("…"), удалённый экспортный метод |
да, вся конфигурация (с -ExtendedModulesCheck) |
да, изменённые модули и их вызывающие: статика, пробы компиляции, расширенная проверка изменённого |
| Поля и таблицы в текстах запросов | нет — для него это строки | разбор платформой, в том числе собранных в коде |
| Лишний параметр в вызове экспортного метода общего модуля | нет | статика |
| Обработчик события формы, которого нет в модуле | нет; полная проверка /CheckConfig -HandlersExistence — да |
статика |
| Метод платформы новее режима совместимости | только метод более новой линейки (8.5 при режиме 8.3.x) | ошибка — для новой линейки, предупреждение — для своей линейки и конструкторов |
| Ошибки при открытии формы, зависшая форма | нет | дымовой тест форм |
| Поведение изменённых методов | нет | тесты YAxUnit, выбранные по изменённым методам; заготовки тестов |
| Новые замечания BSL LS | нет | до/после только по правке, только критические диагностики |
| Без загруженной базы | нет | статика за секунды (хук загрузки в редакторе, pre-push) |
| Время | вся конфигурация при любой правке: десятки минут на типовой, часы на ERP | пропорционально правке |
Каждая строка об ошибках воспроизводима: каталог контрольных дефектов — заведомые ошибки,
на которых otk controls --parity запускает и ОТК, и Конфигуратор и печатает, кто что поймал; на демо-проекте —
3 минуты. Проверку всех модулей Конфигуратором ОТК не отменяет: она остаётся страховкой в CI, а ОТК сверяется с
ней каталогом контрольных дефектов. Эталоны, замеры и условия — docs/comparison.md;
две недели в CI настоящего проекта рядом с Конфигуратором — docs/pilot.md.
ОТК и анализаторы BSL¶
| Что ловит | BSL LS | bsl-analyzer | ОТК |
|---|---|---|---|
| Синтаксическая ошибка | да | да | да (анализатор, пробы) |
| Несуществующий метод модуля, лишний параметр, неизвестное поле | нет | да (предупреждение) | да (статика) |
| Поле или таблица запроса | нет | да (предупреждение) | да (запрос в базе) |
| Метод недоступен на клиенте или в веб-клиенте | нет | да (предупреждение) | да (статика, extcheck) |
Функция без Возврат на ветке, модальный вызов |
частично | да | через анализатор |
| Необъявленная переменная, ошибки открытия формы, зависание | нет | нет | да (пробы, дымовой тест) |
| Только новое по правке | нет | нет | да (до/после) |
Анализатор (environment.analyzer: BSL LS, bsl-analyzer или оба) — источник находок проверки analyzers: чем он
лучше, тем сильнее ОТК. На 28 контрольных дефектах BSL LS поймал 7, bsl-analyzer — 19, статика ОТК без
анализаторов — 17; запросы в базе, необъявленную переменную и формы ловят только пробы
(docs/vs-analyzers.md).
Возможности¶
- Только изменённое — план проверки по
git diffили сравнению двух каталогов выгрузки; модули, вызывающие изменённые экспортные методы, тоже проверяются. - Ступени по стоимости — статика без базы (секунды) → пробы компиляции и запросов в копии ИБ → расширенная проверка изменённых модулей Конфигуратором → дымовой тест форм → сценарные тесты.
- Работает с тем, что есть — каждая проверка
on/auto/off; чего нет на машине (YAxUnit, BSL LS, COM), то помечается «не проверено» с причиной, а не «зелёным».otk doctorпокажет, что теряется. - Конфигурации и расширения, выгрузка Конфигуратора и проект 1C:EDT, русский и английский встроенный язык.
- Своя копия ИБ или рабочая база — проверка в базе разработчика с возвратом её к прежнему виду.
- Результат там, где вы работаете — сводка Markdown/HTML с местом каждой ошибки, JUnit, SARIF, панель Problems VS Code; коды выхода 0 / 1 / 2 (чисто / ошибки / сбой окружения).
- Хуки — git pre-push и загрузка в базу из VS Code «1C: Platform Tools».
- CI — шаблоны Forgejo/Gitea Actions, GitHub Actions, GitLab CI, Jenkins, базовая линия проверки всех модулей для типовых конфигураций (красными становятся только новые ошибки).
- Для ИИ-агентов — проверка после каждой правки агента:
otk gate --base HEAD --worktreeс кодом выхода, строками «файл(строка)» иsummary.json(сценарий и правило для агента); MCP-сервер с консолью копии ИБ: запросы только на чтение, метаданные, журнал регистрации, анализ технологического журнала. - Без облака и телеметрии — код никуда не уходит, всё выполняется на вашей машине.
Требования¶
- Windows или Linux (на Linux — всё, кроме внешнего соединения через COM; Xvfb для окон 1С — docs/linux.md),
платформа 1С:Предприятие 8.3.2x / 8.5 (Конфигуратор, тонкий клиент;
ibcmdиз компонентов сервера ускоряет полную загрузку, без него — Конфигуратором); - Python 3.11+ (стандартная библиотека; для проб через COM на Windows —
pywin32:pip install "otk-1c[com]"); - git (или две выгрузки «было» и «стало»); исходники — выгрузка Конфигуратора (
Configuration.xmlв корне) или проект 1C:EDT (docs/edt.md); - для проб — своя файловая копия ИБ проекта (ОТК загружает в неё изменения) или рабочая база;
- по желанию: расширение YAxUnit (
.cfe) — тонкий клиент, формы, сценарии; BSL Language Server или bsl-analyzer. Без них ОТК работает, а недоступные проверки отмечает «не проверено». Справку платформы для проверки методов ОТК индексирует сам из установленной платформы.
Лицензия 1С. Статика (--static-only) работает без лицензии и без запуска платформы — в контейнере и на
облачных раннерах CI. Пробы в копии ИБ запускают клиентские приложения 1С и требуют клиентскую лицензию; лицензия
для разработчиков (community) подходит только для некоммерческого использования и требует еженедельного выхода в
интернет; ОТК разработан и проверен под ней. Подробно, с ограничениями для CI, — docs/licensing.md.
Быстрый старт¶
Без установки и настроек — из скачанного каталога, всё аргументами:
<otk>\otk.cmd gate --dir <выгрузка> # Windows; Linux, Git Bash — otk.sh
<otk>\otk.cmd doctor --dir <выгрузка> # что доступно на этой машине
С установкой и настройками проекта:
pip install otk-1c # или из клона: PYTHONPATH=<otk>/src
cd <репозиторий проекта 1С>
copy <otk>\otk.example.toml otk.toml # настройки проекта (в git)
notepad otk.local.toml # пути этой машины (вне git)
otk gate --base origin/master --static-only # статика без базы: секунды
otk gate --base origin/master # полная проверка ветки относительно master
otk.local.toml — минимум:
[environment]
ib = "C:/otk/ib/проект" # своя копия ИБ
user = "Администратор" # пользователь копии (пароль — password)
yaxunit = "C:/otk/YAxUnit.cfe"
Платформа (самая новая установленная — «для компьютера» в Program Files\1cv8 или «для пользователя» в
%LOCALAPPDATA%\Programs\1cv8_x64, 1cv8_x86; на Linux — /opt/1cv8/<arch>), ProgID COM-соединителя и BSL LS (OTK_BSLLS, PATH или копия расширения VS Code «Language 1C (BSL)») находятся
сами; найденный каталог показывает otk doctor.
Хук pre-push — otk hook install.
Документация¶
Те же страницы — на сайте документации с поиском.
| Команды и запуск без настроек | все команды, ключи gate, проверка без git и доработок относительно поставщика (--vendor) |
| Настройки | otk.toml / otk.local.toml, проект-расширение; образец |
| Проверки | что делает каждая проверка и что нужно для неё, анализаторы BSL, сценарные тесты, дымовой тест форм |
| Сводка и коды выхода | форматы результата, SARIF; правила находок — справочник |
| Интеграции | хук pre-push, рабочая база вместо копии, VS Code «1C: Platform Tools» |
| ИИ-агенты | проверка после правки агента: команды, код выхода, summary.json, правило для AGENTS.md |
| Контракт | что стабильно в 1.x: команды, коды выхода, настройки, OTK_*, файлы JSON и их схемы |
| CI | шаблоны GitHub Actions, GitLab CI, Jenkins, Forgejo/Gitea; что ОТК заменяет в вашем CI; базовая линия проверки всех модулей |
| Лицензии 1С | что работает без лицензии, лицензия для разработчиков и её ограничения |
| Сторонние инструменты | что ОТК запускает, их лицензии и проверенные версии; заимствованные идеи |
| Формат EDT | проекты 1C:EDT |
| Linux | установка платформы, лицензия для разработчиков, Xvfb, отличия от Windows |
| Дополнительные инструменты | консоль копии ИБ и MCP-сервер, анализ технологического журнала |
| Известные пределы | что не проверяется и почему |
| Устранение неполадок | база занята, нет COM, окно клиента не видно |
| Сравнение | ОТК, Конфигуратор и анализаторы BSL: эталоны и замеры |
| Пилот | две недели на реальных задачах: пропуски, ложные срабатывания, время; дозамер новых возможностей |
| Разработка | OpenSpec, своя проверка, тесты |
Участие¶
Ошибки, ложные срабатывания, пропуски и предложения — задачей по форме (к ошибке приложите вывод otk doctor и
summary.json). Как прислать изменение — CONTRIBUTING.md, что изменилось — CHANGELOG.md.
Благодарности¶
ОТК опирается на работу сообщества. Спасибо авторам:
- BSL Language Server (Никита Федькин) — анализатор BSL,
источник находок проверки
analyzers; - bsl-analyzer (Кирилл Елишев) — второй анализатор той же проверки, по модели всей конфигурации;
- YAxUnit (Алексей Корякин) — на нём пробы в тонком клиенте, дымовой тест форм и сценарные тесты;
- 1C: Platform Tools (Иван Карло) — хуки загрузки в VS Code, через которые ОТК проверяет правку до и после загрузки;
- Нинель Щербакова — статья о формате справки
*.hbk, по ней ОТК строит индекс методов и типов платформы; - OpenSpec — формат требований проекта;
- 1c-agent-based-dev-framework (Владимир Акимов) — образец реестра сторонних инструментов.
Все инструменты, их лицензии и что именно ОТК у них берёт — docs/third-party.md.
Лицензия¶
Apache-2.0. Автор — Илья Маликов; разработано при участии Claude (Anthropic), см. NOTICE. Сторонние инструменты и заимствования — docs/third-party.md.