Перейти к содержанию

Известные пределы

  • Модули команд, 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.