Как создать хранилище расширения из командной строки 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Автоматизация рутинных задач — важный этап в работе каждого разработчика 1С. Когда в проекте используется большое количество расширений (например, десять и более), ручное создание хранилища для каждого из них в конфигураторе становится трудозатратным процессом. В данной статье мы рассмотрим подробнее, как правильно сформировать команду для пакетного создания хранилищ расширений, разберем типичные ошибки и выясним причину, по которой платформа может «не видеть» создаваемый путь.

Разбор основного синтаксиса команды

Для начала проанализируем стандартный подход. Основная проблема при работе с командной строкой заключается в том, что 1С крайне чувствительна к порядку следования параметров. Если мы хотим создать хранилище для конкретного расширения, нам необходимо сначала указать платформе, с каким именно объектом (расширением) мы работаем, а уже затем отдавать команды по созданию репозитория.

Рассмотрим правильный шаблон команды для запуска в режиме конфигуратора (DESIGNER):


"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER /F "C:\Base1C" /N "Admin" /P "Pass" -Extension "ИмяРасширения" /ConfigurationRepositoryF "C:\Repo\Ext_Repo" /ConfigurationRepositoryCreate /ConfigurationRepositoryN "AdminRepo" /ConfigurationRepositoryP "PassRepo" /Out "C:\Logs\create_repo.log"

В данном примере мы используем следующие ключевые параметры:

  1. DESIGNER — запуск в режиме Конфигуратора для выполнения административных действий.
  2. /F — путь к информационной базе (в данном случае файловой), в которой уже подключено расширение.
  3. -Extension — критически важный параметр. Он указывает, что последующие команды /ConfigurationRepository... должны относиться именно к расширению, а не к основной конфигурации.
  4. /ConfigurationRepositoryF — путь к каталогу, где будет физически располагаться база хранилища.
  5. /ConfigurationRepositoryCreate — команда на создание файлов хранилища «с нуля».
  6. /ConfigurationRepositoryN и /ConfigurationRepositoryP — имя и пароль администратора хранилища, которые будут установлены при его инициализации.

Почему 1С пишет «Хранилище не обнаружено»?

Часто разработчики сталкиваются с ситуацией, когда команда введена верно, но платформа выдает ошибку отсутствия хранилища. Разберем по шагам, почему это происходит.

Во-первых, команда /ConfigurationRepositoryCreate умеет инициализировать внутреннюю структуру файлов хранилища, но она не всегда способна самостоятельно создать дерево папок в операционной системе. Если путь C:\Repo\Ext_Repo не существует физически, 1С не сможет создать в нем файлы. Поэтому перед выполнением команды 1С в батнике (BAT/CMD) обязательно нужно создать целевой каталог.

Посмотрим на пример правильного скрипта автоматизации:


@echo off
set EXT_NAME=УчетЗатрат
set REPO_PATH="C:\AllRepositories\%EXT_NAME%"
set LOG_FILE="C:\Logs\log_%EXT_NAME%.txt"

REM Создаем папку, если ее нет
if not exist %REPO_PATH% mkdir %REPO_PATH%

REM Запуск создания хранилища
"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER /F "C:\Bases\DevBase" -Extension %EXT_NAME% /ConfigurationRepositoryF %REPO_PATH% /ConfigurationRepositoryCreate /ConfigurationRepositoryN "Admin" /ConfigurationRepositoryP "123" /Out %LOG_FILE%

echo Процесс завершен. Проверьте лог: %LOG_FILE%

Проблема версий и специфические баги

Иногда даже при идеальном синтаксисе команда может отрабатывать некорректно. Проанализируем ситуацию с конкретными релизами платформы. Например, в версии 8.3.25.1286 был замечен баг, при котором игнорировались параметры аутентификации или возникали ошибки при попытке неинтерактивного создания хранилища для расширений.

Важный момент: если вы используете версию 8.3.25 и сталкиваетесь с тем, что 1С упорно открывает диалоговое окно вместо выполнения команды в фоне, рекомендуется обновить платформу до релиза 8.3.25.1445 или выше. В более свежих сборках многие проблемы пакетного режима были исправлены.

Особенности работы с серверными базами и расширениями

Если ваша разработка ведется на сервере (SQL), параметры подключения изменятся с /F на /S. При этом помните, что для создания хранилища расширения само расширение уже должно существовать в базе. Если вы планируете полностью автоматизированный цикл (создание расширения -> создание хранилища), вам потребуется предварительно загрузить файл расширения (cfe) с помощью команды /LoadExtension.

Рассмотрим последовательность действий для полной автоматизации:

  1. Создаем временную файловую базу.
  2. Загружаем в нее расширение из файла .cfe.
  3. Создаем каталог на диске для будущего хранилища.
  4. Выполняем команду создания хранилища с параметром -Extension.
  5. Подключаем расширение к созданному хранилищу (если требуется дальнейшая работа в этом же скрипте).

Использование файлов лога для диагностики

При запуске команд из консоли 1С часто «молчит», не выводя ошибки напрямую в терминал. Чтобы понять, ЧЯДНТ (Что Я Делаю Не Так), всегда используйте ключ /Out. В этот текстовый файл 1С запишет подробности: от «Ошибка аутентификации» до «Указанное расширение не найдено». Для анализа логов удобно использовать флаг -NoTruncate, чтобы не перезаписывать файл при каждом запуске, а дописывать в него информацию.

Выясним причину неудачи, проанализировав лог-файл. Если там встречается запись «Каталог не пуст» или «Доступ ограничен», проверьте права пользователя ОС, от имени которого запущен скрипт, на целевую папку хранилища.

Альтернативные способы через OneScript и vrunner

Для тех, кто хочет выйти за рамки обычных батников, существуют профессиональные инструменты автоматизации. Например, vrunner (часть пакета инструментов Vanessa). Он позволяет описывать процесс создания хранилищ в удобных конфигурационных файлах (JSON или YAML) и берет на себя всю сложность управления порядком параметров командной строки 1С.

Использование таких инструментов значительно снижает вероятность ошибки «человеческого фактора» при настройке сложных сред разработки с десятками расширений.

← На главную