Для кого: программисты и администраторы 1С, которым нужна выгрузка конфигурации из скрипта, без ручной работы в Конфигураторе.
Для программистов и администраторов 1С: какие команды ibcmd выгружают, загружают и проверяют конфигурацию в скрипте и какие записи из интернета, вроде config dump, утилите неизвестны.
- Выгрузка в файлы - infobase config export objects Configuration с ключами --db-path и --out; с версии 8.3.20 нужна подкоманда objects.
- Выгрузка в один cf-файл - команда save; по разбору на Infostart без ключа --staging она берёт конфигурацию базы данных, проверьте это на своей базе.
- Загрузка состоит из двух команд: load кладёт конфигурацию в базу, apply доводит её до рабочего состояния; в скриптах добавляйте --force.
- Проверка - infobase config check; прогоните её на заведомо сломанном модуле и посмотрите код возврата, прежде чем ставить в сборку.
- Команды dump, compare и syntax в документации отсутствуют; сверяйте запись со справкой ibcmd --help своей версии платформы.
Команды ibcmd нужно брать из руководства администратора и справки своей версии платформы, потому что записи из интернета часто не существуют.
Конфигуратор умеет выгрузить конфигурацию в файлы и загрузить обратно, но только руками: пункт меню, диалог, ожидание. Как только операция попадает в скрипт сборки или в конвейер, меню перестаёт подходить. Для этого в поставке автономного сервера есть консольная утилита ibcmd.
В интернете про неё ходит набор команд, которых утилита не знает: ibcmd config dump --output, ibcmd config compare, ibcmd syntax check. Ни одной из них не существует, и скрипт с ними падает на разборе аргументов. Ниже - команды из документации 1С и разбор того, где именно ломается привычная запись.
🧱 Что это за утилита и откуда берётся
ibcmd - утилита администрирования автономного сервера 1С:Предприятие. Описана в «Руководстве администратора», глава 7 «Автономный сервер» (раздел 7.4, примеры управления и запуска) и в разделе 4.10 «Утилита администрирования автономного сервера ibcmd». Из этого следует первое практическое неудобство: утилита приходит с дистрибутивом автономного сервера, и на машине, где установлен только клиент 1С, её может не оказаться.
Первый аргумент утилиты - режим, второй - команда внутри режима. Режимов в документации больше десяти: server, infobase, config, extension, session, lock, eventlog и другие. Для работы с конфигурацией нужен режим infobase и его группа config.
В группе config документация перечисляет команды load, save, check, apply, reset, repair и подкоманды export, import, support, extension. Ни dump, ни compare, ни syntax в этом списке нет. Состав команд отличается между версиями платформы: сверяйтесь с разделом 4.10 руководства для своей версии.
🔌 Выгрузка конфигурации в файлы
Выгрузка в файлы XML выполняется командой export. С версии 8.3.20 она требует подкоманды, которая указывает, что именно выгружается:
ibcmd infobase config export objects Configuration --db-path="E:\1C\Базы\ERP_2_5_12_107" --out="E:\1C\XML_ERP"
--db-path принимает путь к каталогу файловой базы. Каталог выгрузки из --out создаётся сам, внутри оказываются Configuration.xml и каталог Ext. Без --out утилита отвечает ошибкой «Не указано значение параметра» и ничего не выгружает.
По разбору в публикации на Infostart (1168516), до 8.3.20 работала запись без objects, а в новых версиях она разбирается как имя объекта и падает. Скрипт, написанный под 8.3.19, после обновления платформы перестаёт работать, и сообщение об ошибке не подсказывает про смену синтаксиса. Официальной страницы с этим изменением я не нашла, поэтому проверьте его на своей версии.
Выгрузка в один файл *.cf - это другая команда, save:
ibcmd infobase config save --db-path="E:\1C\Базы\ERP_2_5_12_107" E:\1C\cf\erp.cf
У save есть подвох, о котором пишут в разборе на Infostart: без ключа --staging выгружается конфигурация базы данных, а основная конфигурация требует этого ключа. Проверьте на своей базе перед тем, как ставить save в сборку.
Команды в этом разделе не прогнаны на платформе: в облаке нет 1С. Проверьте их на своей версии и своей базе.
🧪 Загрузка в базу и обновление конфигурации базы данных
Загрузка файла *.cf и обновление конфигурации базы данных - две разные команды, и это второе место, где спотыкаются скрипты. load кладёт конфигурацию в базу, apply доводит её до состояния, в котором база работает:
ibcmd infobase config load -u ibuser -P *** --dbms=mssqlserver --db-server=dbsrv --db-name=docs-db --data="D:\ss-data\cs-data" --name=docsIB 1Cv8.cf ibcmd infobase config apply -u ibuser -P *** --dbms=mssqlserver --db-server=dbsrv --db-name=docs-db --name=docsIB --data="D:\ss-data\cs-data" --force
Файл *.cf передаётся последним аргументом, без имени параметра. Ключей --input и --load=<файл> у этих команд нет: в документации --load есть у команды создания базы infobase create, у загрузки конфигурации этот ключ не используется.
Загрузка из каталога XML - команда import:
ibcmd infobase config import --db-path="E:\1C\Базы\ERP_2_5_12_107" E:\1C\XML_ERP
--force в примерах стоит там, где операция выдаёт предупреждения и без него ждёт подтверждения. В скрипте без --force такой вызов повиснет на вопросе, которого никто не увидит.
💻 Проверка конфигурации
Синтаксический контроль модулей в ibcmd называется check:
ibcmd infobase config check --db-path="E:\1C\Базы\ERP_2_5_12_107"
Что именно проверяет check на конкретной версии платформы, я не утверждаю: команда в документации есть, а состав проверок в ней не расписан. Перед тем как ставить check воротами сборки, прогоните на своей базе заведомо сломанный модуль и посмотрите, вернёт ли команда ненулевой код возврата.
🧰 Как выглядят типовые ошибки в скриптах
| Пишут в интернете | Как в документации |
|---|---|
ibcmd config dump --db-path=file="./db" --output=./cf |
ibcmd infobase config export objects Configuration --db-path=<каталог базы> --out=<каталог> |
ibcmd config load --db-path=... --input=my.cf |
ibcmd infobase config load --db-path=<каталог базы> my.cf |
ibcmd syntax check |
ibcmd infobase config check |
ibcmd config compare --first=a.cf --second=b.cf |
команды нет: сравнение конфигураций остаётся в Конфигураторе или в отдельных инструментах |
--db-path=file="C:\bases\dev" |
--db-path="C:\bases\dev" |
Общее правило: имя режима (infobase) в команде не сокращается. Утилита разбирает первый аргумент как режим, и команда без него уходит не туда.
🚧 Границы и версионность
- Утилита меняется от версии к версии, включая записи команд. Смена записи
exportв 8.3.20 - пример ломающего изменения. Перед переносом скрипта на новую платформу сверяйтесь со справкойibcmd --helpна целевой версии. - Про скорость в документации сказано мало: в описании новой функциональности 8.3.21 у команды
exportпоявились ключи--archive,--serverи--threads(многопоточная выгрузка и выгрузка в архив). Насколько это быстрее Конфигуратора на вашей базе, зависит от базы, и замер нужен свой. - Интерактивную работу утилита не заменяет: отладка, конфигуратор интерфейсов и ручное сравнение версий остаются в графической среде.
- Работа с хранилищем конфигурации в списке режимов утилиты не упоминается. Есть ли для неё команды в вашей версии, проверьте по
ibcmd --help: я этого не проверяла.
📚 Источники
- «Руководство администратора» 1С:Предприятия, глава 7 «Автономный сервер»: разделы 7.4.5 (загрузка конфигурации из
*.cf), 7.4.13 (выгрузка и загрузка конфигурации в файлы). Состав режимов и команд группыconfig- раздел 4.10 «Утилита администрирования автономного сервера ibcmd». - «1С:Предприятие 8.3.21. Новая функциональность и изменения»: ключи
--archive,--server,--threadsу команды выгрузки конфигурации в файлы. - Автономный сервер. Часть 2 - утилита управления (Infostart): практические примеры
exportиimport, поведение командыsaveбез--staging, смена синтаксиса в 8.3.20.
📦 Файл к статье
К публикации приложен архив 02.1-companion.zip, он в блоке «Файлы» вверху страницы:
ibcmd-shpargalka.md- команды из статьи: выгрузка в XML (export objects), в файл.cf(save), загрузка (load,import), обновление конфигурации базы данных (apply), проверка (check); таблица типичных ошибок «как пишут в интернете - как в документации».README.md: что внутри, как пользоваться и что проверено.
🏁 Итог
Для скрипта нужны четыре команды: ibcmd infobase config export для выгрузки в файлы, ibcmd infobase config save для выгрузки в *.cf, ibcmd infobase config load с последующим ibcmd infobase config apply для загрузки в базу и ibcmd infobase config check для проверки. Первые три требуют внимания к версии платформы: запись export менялась в 8.3.20, а save по умолчанию берёт не ту конфигурацию, которую ждёт скрипт сборки.
Если будете переносить это в конвейер, начните с одной команды на копии базы и сверьте результат с тем, что делает Конфигуратор на той же базе. Расскажите в комментариях, на какой версии платформы работает ваш скрипт: синтаксис между версиями расходится сильнее, чем ожидаешь.
- Автоматизация сборки расширений 1С: Бесшовный переход от 1C:EDT к Конфигуратору
- SRE-Suite-for-1C-platform: автоматизируем непрерывную интеграцию (CI) через GitHub Actions
- Неубиваемый CI/CD для 1С на Linux: от коммита до живого curl за 5 минут без ложных «успехов»
- Git в 1С без розовых очков: инженерный протокол перехода с Хранилища в Enterprise-контуре
Вступайте в нашу телеграмм-группу Инфостарт