Модули команд, HTTP- и веб-сервисов — без пробы (нет способа скомпилировать без исполнения или
публикации): только статика, остальное — полная проверка в CI.
Обычное приложение локально не пробуется, если не включено ordinaryApplication; модули с флагом
«Клиент (обычное приложение)» попадают в «не покрыто этим прогоном».
Веб-клиент не проверяется пробами. Статика по таблице доступности Конфигуратора находит методы, свойства
и типы (Новый ЧтениеТекста, Новый HTTPСоединение на клиенте) платформы, недоступные в веб-клиенте:
предупреждение, с environment.webClient = true — ошибка. Доступность типов в веб-клиенте режим -WebClient
Конфигуратора не проверяет (пропускает и Новый Запрос), поэтому она измерена в настоящем веб-клиенте
(src/otk_1c/availability/webclient/; 8.3.27, 8.5.1, 8.5.4): тонкий клиент по Конфигуратору и
Новый(Имя) в веб-клиенте без «Тип не определен». Справка тут ошибается (ПараметрВыбора, HTTPСоединение в ней
без веб-клиента). Для линейки без замера — по справке, и находка по типу — всегда предупреждение. Код только веб-клиента (#Если ВебКлиент) статикой платформы не
проверяется (в нём методы, которых нет в справке, — ПаузаАсинх). Остальное ловит полная проверка
Конфигуратором в режиме -WebClient.
Динамически собранные запросы. Переменная часть и заглушки шаблона (&Имя/#Имя/%Имя%/%1/[Имя]/
{0}/<Имя>, заменяемые СтрЗаменить, СтрШаблон, ПодставитьПараметрыВСтроку) подставляются: значение из
кода метода (литерал или переменная с одним литеральным присваиванием), иначе нейтрально по месту (условие —
ИСТИНА, значение — NULL, поле — NULL КАК …). Ошибка разбора такого текста — предупреждение.
Имя таблицы или поля из кода (ИЗ " + Имя, Справочник." + Имя), текст, который дописывается дальше
(Текст = Текст + …), и фрагменты не разбираются — «не проверено» с причиной. Временная таблица другого
запроса (менеджер ВТ) — тоже «не проверено». На реальных конфигурациях две трети таких запросов берут фрагмент из другого
модуля или от вызывающего — их можно отдать внешнему восстановителю ([[queries.resolvers]], например
ИИ-помощнику с поиском по конфигурации): команда получает на stdin JSON
{"version": 1, "repo", "source", "queries": [{"id", "module", "owner", "method", "line", "text", "reason"}],
"modules": {путь: текст}} (<?> — неизвестная часть) и отвечает {"queries": [{"id", "text", "rationale"}]}.
Цепочка — по порядку, следующему — то, что не восстановил предыдущий. Восстановленный текст разбирает платформа,
его ошибка — предупреждение «текст восстановлен «<имя>» (<обоснование>)». Сбой или тайм-аут — примечание
сводки, запросы остаются «не проверено»; ответы кэшируются в каталоге прогона (cache/resolvers), с
--static-only команда не вызывается. Без раздела никакой код никуда не передаётся. Команда запускается
без оболочки (конвейеры и подстановки не работают), но она — исполняемый код из настроек: правку
[[queries.resolvers]] в otk.toml проверяйте в запросе на слияние как код, до запуска CI.
Ошибка в запросе, который правка не меняла (и метаданные не менялись), — предупреждение: в типовых много
универсального кода БСП, обращающегося к объектам, которых в этой конфигурации нет. На двух отраслевых конфигурациях таких
запросов около 2 % (149 из 6 900 разобранных).
Модуль сеанса, глобальные модули, модуль приложения компилируются при старте клиента: ошибка в них
не даёт запустить сеанс — ОТК это распознаёт и называет модуль-виновник.
Расширенная проверка Конфигуратором — эталон: ОТК сверяется с ней каталогом контрольных дефектов
(otk controls --parity) и в режиме дублирования в CI, а не заменяет её в CI. Режимы проверки — все,
включая веб-клиент: дефект каталога webclient-only (метод, недоступный только в веб-клиенте, в клиентском
общем модуле) ловит расширенная проверка изменённых модулей — и в проекте-расширении, и для основной
конфигурации через временное расширение (проверено на отраслевой конфигурации). Модули управляемых форм и объектов
(выгрузка Конфигуратора и исходники EDT) проверяются тем же временным расширением: контрольные дефекты
form-missing-proc, form-webclient-only, object-missing-proc. Ошибка «первой стадии» (тип не определён,
число параметров, «уже определена») скрывает в своём режиме неизвестные имена — модуль помечается
«проверен частично». Не проверяются: Объект.НетРеквизита формы, Элементы.…, Новый Запрос на клиенте
в режиме веб-клиента (компилятор пропускает). Каждый модуль получает
в конце процедуру-канарейку: нет её ошибки в выводе — модуль «не скомпилирован» (не «чисто»). У новых модулей
(без «было») «Возможно ошибочн…» не показываются — только их число в примечании.
Дымовой тест форм открывает форму без параметров и с данными копии ИБ; ошибки при чтении данных
динамического списка (запрос списка) отдельно не проверялись. Обычные (неуправляемые) формы не открываются.
Встроенный язык — русский и английский варианты (ScriptVariant); код
английской конфигурации может смешивать оба языка — статика и разбор понимают оба. YAxUnit заимствует язык
«Русский»; в конфигурации с другим основным языком (английская БСП — только English) ОТК при установке
переводит заимствование на её язык.
Язык интерфейса платформы — только русский. Имена модулей и признаки ошибки компиляции в сообщениях
платформы и выводе Конфигуратора распознаются по разделу platform словаря src/otk_1c/lang/ru.json. Если платформа
запущена с английским интерфейсом, ошибки проб получат исход unknown, а находки designer-check не будут
сопоставлены с файлами. Для английского интерфейса нужен такой же раздел в src/otk_1c/lang/en.json (пока его нет).
Пароль ИБ виден в командной строке платформы. Другого способа передать его пакетному Конфигуратору
(/P) и ibcmd (--password) нет: пока идёт команда, пароль видит любой процесс машины, которому
доступен список процессов. В журналы и сводки ОТК командная строка не пишется. Для проверки заведите
в копии ИБ отдельного пользователя с минимальными правами и не запускайте прогоны с паролем на общем
агенте CI.