Дополнительные инструменты¶
Консоль ИБ (запросы и метаданные копии базы)¶
Для отладки и разбора учёта в копии базы (своей или заказчика): выполнить запрос и получить таблицу,
разобрать запрос без выполнения, посмотреть метаданные живой базы. Только чтение — язык запросов данные
не меняет, исполнения произвольного кода нет. Внешнее соединение (COM, pywin32).
otk console query --ib erp "ВЫБРАТЬ ПЕРВЫЕ 10 Н.Ссылка, Н.Код ИЗ Справочник.Номенклатура КАК Н"
otk console query --ib erp --params '{"Д": {"date": "2026-01-31"}}' - # текст из stdin
otk console check --ib erp "ВЫБРАТЬ … ГДЕ Т.Поле = &П" # ошибка с позицией или параметры
otk console metadata --ib erp "РегистрНакопления.ТоварыНаСкладах" # реквизиты, ТЧ, измерения с типами
otk console eventlog --ib erp --filter '{"from":"2026-10-01","event":"_$Data$_.Post"}' # журнал регистрации
otk console eventlog --ib erp --filter '{"from":"2026-10-01","level":"Ошибка"}' --group event,user # кто/что/сколько
Журнал регистрации (eventlog, MCP ib_eventlog): отбор — from/to, level, user (имя), event (системные
имена _$Data$_.Post|Update|Delete, _$Session$_.*, _$PerformError$_ или имена событий конфигурации), metadata
(полное имя), data (ссылка {type, id} из ответа запроса — вся история объекта), dataPresentation, comment,
session, application, computer, transactionStatus. Без --group — первые записи (до --limit), с --group —
подсчёт по полям user|event|metadata|level|application|computer|session|status|date:день|date:час. Выгрузка идёт от
начала периода вперёд, поэтому задавайте from.
Базы — псевдонимы в файле пользователя (OTK_BASES или ~/.otk/bases.toml, вне git):
[bases.erp]
connection = "/FC:/1C/Копии/ERP" # или "/Sсервер\\база"
user = "Администратор"
password_cred = "otk:erp" # Windows: cmdkey /generic:otk:erp /user:Администратор /pass
# password_env = "ERP_PASSWORD" # или переменная окружения; пароль открытым текстом не хранится
Параметры запроса — JSON: строка, число, булево, null, {"date": "…"}, {"type": "CatalogRef.Номенклатура",
"id": "<УИД>"} (значение перечисления — {"type": "EnumRef.X", "id": "<имя>"}), список — массив. Ссылка в
ответе — {"repr", "type", "id"}; NULL и НЕОПРЕДЕЛЕНО внешнее соединение отдаёт одинаково (null).
MCP (otk mcp): ib_query, ib_check, ib_metadata, ib_eventlog, ib_bases, ib_disconnect. Подключение к
базе — секунды, поэтому сервер держит соединение между вызовами и отпускает его через --idle секунд простоя
(по умолчанию 120) или по ib_disconnect: открытое соединение — это сеанс 1С, он мешает загрузке расширения и
монопольным операциям с этой базой. Регистрация в клиенте MCP (Claude Code, .mcp.json):
{"mcpServers": {"otk-console": {"command": "python", "args": ["-m", "otk_1c", "mcp"]}}}
Анализ технологического журнала¶
otk tj <отчёт> <каталог ТЖ> (и MCP tj_report) — агрегаты по журналу на диске: сумма, количество, среднее,
максимум по группам, сортировка (--sort sum|count|mean|max), топ (--top), отбор по процессу (--process rphost)
и периоду (--from, --to). Многострочные события склеиваются, значения нормализуются (GUID → {GUID}, (число) →
({NUM}), временные таблицы → {TempTable}, строки параметров p_N: убираются); длительности приводятся к
микросекундам (8.3 — мкс, 8.2 — 1/10000 с).
| Отчёт | Что | Режимы |
|---|---|---|
calls |
серверные вызовы CALL по контексту |
--value duration|memory|memorypeak|inbytes|outbytes|cpu |
queries |
запросы СУБД (DBMSSQL, DBPOSTGRS, …) |
--mode sql|sql+context|context |
sdbl |
запросы платформы SDBL |
--mode sql|sql+context|context |
errors |
ошибки EXCP и ошибки запросов QERR по описанию (сортировка по количеству) |
--mode descr|descr+context |
locks |
ожидания TLOCK с WaitConnections по пространству и контексту |
|
timeouts |
TTIMEOUT, TDEADLOCK |
|
events |
число и длительность по типам событий (доля СУБД во времени вызовов) |
Скорость (ТЖ 1 ГБ, 12 ядер): файлы и большие файлы (кусками по 64 МБ по границам событий) разбираются параллельно — запросы с контекстом за 12 с, вызовы и ошибки за 3 с; в один поток — 33 с и 10–11 с. Для сравнения связки perl/gawk на тех же данных — 14–30 с; результаты групп совпадают.
Шаблоны logcfg.xml под отчёты — calls, queries, locks,
errors, leaks, production ( — постоянный журнал рабочих серверов). Подход перенесён из bash/perl/gawk-скриптов разбора ТЖ.