Files
cc-1c-skills/tests/skills/cases/db-cfe-admin/list-with-properties.json
T
Nick ShirokovandClaude Opus 5 a0f2c4988a feat(db-cfe-admin): навык администрирования расширений в базе
Расширение можно было положить в базу, но нельзя было посмотреть, что там лежит,
в каком оно состоянии, применяется ли, и убрать лишнее — всё это делалось руками
через 1cv8 и ibcmd.

Четыре команды: list (состав и свойства подключения), check (применимость и
синтаксический контроль), set-properties (безопасный режим, активность, защита от
опасных действий, область действия, профиль, РИБ), delete.

Конструкция опирается на замеры платформы (8.3.24.1691 и 8.3.27.1859):

- /CheckModules не нужен: /CheckConfig с теми же контекстными флагами даёт
  дословно тот же вывод и код возврата, но умеет вдобавок конфигурационные
  проверки. Одна команда платформы вместо двух, при запросе modules+config —
  один запуск;
- обе проверки БЕЗ флагов контекста рапортуют «ошибок не обнаружено» с кодом 0
  на заведомо сломанном модуле, поэтому набор контекстов всегда явный;
- применимость и синтаксис друг друга не заменяют (первая слепа к синтаксису,
  второй — к дрейфу контроля), отсюда умолчание apply,modules;
- коды возврата разные: применимость 1, /CheckConfig 101;
- /DeleteCfg -Extension "" возвращает 0, рапортует успех и удаляет ПЕРВОЕ
  расширение из списка, поэтому пустое имя отбивается до вызова платформы, а
  отсутствие имени никогда не значит «все»;
- список и удаление делает Конфигуратор (работает всегда и на серверной базе),
  свойства — ibcmd, которого в установке платформы может не быть: тогда колонки
  помечены прочерком с названной причиной, а set-properties отказывает внятно.

Значения флагов словесные (on/off), а не +/-: значение "-" через powershell.exe
-File парсер съедает молча — проверено, у соседнего db-update -Dynamic "-" по
этой причине не работает вовсе.

delete и set-properties проверяют результат перечитыванием состояния, а не
кодом возврата платформы.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QoAJmoNbgWKobA7JGgN5S3
2026-09-04 19:01:22 +03:00

40 lines
1.6 KiB
JSON

{
"name": "list: свойства подхватываются из ibcmd, флаги печатаются по-русски",
"fakePlatform": {
"log": "Альфа\r\n"
},
"preRun": [
{
"writeFile": {
"path": "ibcmd.cmd",
"content": "@echo off\r\necho name : \"Альфа\"\r\necho version : \r\necho active : yes\r\necho purpose : customization\r\necho safe-mode : yes\r\necho unsafe-action-protection : no\r\necho used-in-distributed-infobase : no\r\necho scope : infobase\r\nexit /b 0\r\n",
"executable": true
}
},
{
"writeFile": {
"path": "ibcmd.sh",
"content": "#!/bin/sh\ncat <<'EOF'\nname : \"Альфа\"\nversion : \nactive : yes\npurpose : customization\nsafe-mode : yes\nunsafe-action-protection : no\nused-in-distributed-infobase : no\nscope : infobase\nEOF\nexit 0\n",
"executable": true
}
}
],
"args_extra": [
"-V8Path",
"{fakePlatform}",
"-InfoBasePath",
"{workDir}/ib",
"-Command",
"list"
],
"expect": {
"stdoutContains": [
"Альфа",
"Адаптация",
"Информационная база"
],
"stdoutNotContains": "свойства недоступны"
},
"noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор вывода ibcmd"
}