mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-05 01:30:54 +03:00
Расширение можно было положить в базу, но нельзя было посмотреть, что там лежит, в каком оно состоянии, применяется ли, и убрать лишнее — всё это делалось руками через 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
40 lines
1.6 KiB
JSON
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"
|
|
}
|