В процессе автоматизации процессов разработки и развертывания (CI/CD) в среде 1С:Предприятие часто возникает задача автоматического обновления информационной базы из хранилища конфигурации. Одной из специфических проблем, с которой сталкиваются разработчики при работе с расширениями, является внезапная ошибка аутентификации при запуске конфигуратора с ключами автоматического обновления, даже если логины и пароли указаны верно. Рассмотрим подробно, почему это происходит и как правильно настроить параметры запуска.
Представим типовой сценарий: имеется типовая конфигурация (например, 1С:Управление нашей фирмой), которая находится на поддержке без возможности изменения (стоит на «замке»). К этой базе подключены расширения, содержащие клиентские доработки. Одно из расширений подключено к собственному хранилищу конфигурации. Задача — выполнить автоматическое обновление этого расширения из хранилища и обновить конфигурацию базы данных (БД) через командную строку.
При использовании стандартной строки запуска для основной конфигурации система может выдавать ошибку аутентификации в Журнале регистрации, хотя при ручном входе в конфигуратор всё работает корректно. Проанализируем типичный (но ошибочный для данного случая) код запуска:
"C:\Program Files\1cv8\8.3.13.1809\bin\1cv8.exe" DESIGNER /S localhost\work
/N"UserName" /P"Password"
/ConfigurationRepositoryF "tcp://localhost/bag"
/ConfigurationRepositoryN "AdminName" /ConfigurationRepositoryP "AdminPassword"
/ConfigurationRepositoryUpdateCfg -force /UpdateDBCfg
Выясним причину сбоя: когда мы используем ключ /ConfigurationRepositoryUpdateCfg без дополнительных уточнений, платформа 1С по умолчанию пытается применить эту команду к основной конфигурации. Поскольку основная конфигурация в нашем примере находится на поддержке и не подключена к хранилищу (к нему подключено только расширение), система входит в ступор. Ошибка аутентификации в данном контексте является следствием того, что параметры доступа к хранилищу (логин/пароль) передаются для контекста основной конфигурации, где они не могут быть проверены или применены корректно.
Для того чтобы система поняла, что действия по обновлению из хранилища должны относиться не к основной конфигурации, а к конкретному расширению, необходимо использовать специализированный параметр -Extension. Рассмотрим исправленный алгоритм действий.
Процесс обновления необходимо разделить на два этапа (или последовательные команды):
Посмотрим на пример правильного кода для первого этапа:
"C:\Program Files\1cv8\8.3.x\bin\1cv8.exe" DESIGNER
/S "server\base"
/N "Admin1C" /P "Pass1C"
/ConfigurationRepositoryF "tcp://server/repo_ext"
/ConfigurationRepositoryN "RepoUser" /ConfigurationRepositoryP "RepoPass"
/ConfigurationRepositoryUpdateCfg -Extension "ИмяВашегоРасширения" -force
И следом выполняем обновление базы данных для этого же расширения:
"C:\Program Files\1cv8\8.3.x\bin\1cv8.exe" DESIGNER
/S "server\base"
/N "Admin1C" /P "Pass1C"
/UpdateDBCfg -Extension "ИмяВашегоРасширения" -force
Важный момент: имя расширения в параметре -Extension должно в точности совпадать с именем расширения в метаданных (поле "Имя"), а не с его синонимом. Рекомендуется всегда заключать имя в двойные кавычки, чтобы избежать проблем с пробелами или спецсимволами.
В процессе обсуждения данной проблемы часто возникает путаница в терминах «поддержка» и «запрет редактирования». Проанализируем ситуацию, чтобы не допускать ошибок в проектировании систем обновления.
Наличие желтого кубика на объектах метаданных означает, что конфигурация находится на поддержке поставщика. Это позволяет использовать механизмы автоматического обновления от фирмы 1С. Наличие «замка» означает, что редактирование объектов запрещено. Вы можете включить возможность изменения, сохранив при этом поддержку. В этом случае «замок» снимется, но конфигурация поставщика останется в базе.
Для нашей задачи с расширениями это критично: если вы пытаетесь обновить через хранилище основную конфигурацию, которая находится на поддержке без возможности изменения, 1С заблокирует эту операцию. Использование расширений позволяет оставить типовую конфигурацию на полном «замке», что значительно упрощает дальнейшее обновление типового функционала, в то время как вся кастомизация живет в расширении и обновляется через отдельное хранилище с помощью ключа -Extension.
Чтобы процесс обновления был максимально надежным и прозрачным, проанализируем несколько дополнительных параметров командной строки, которые помогут в диагностике ошибок:
/Out "C:\Logs\update.log" -NoTruncate. В отличие от Журнала регистрации, в этот файл попадут системные сообщения конфигуратора, которые возникают еще до момента полной авторизации пользователя или в случае критического сбоя парсинга командной строки./DumpErrorLog "C:\Logs\errors.xml" позволит получить структурированный список ошибок, если обновление не удалось из-за конфликтов в метаданных./N и /P) обладает правами «Администратор» и «Администрирование расширений конфигурации», а пользователь хранилища имеет права на административные действия внутри хранилища конкретного расширения..bat или .ps1 скриптов всегда проверяйте код возврата %ERRORLEVEL%. Значение 0 подтверждает успех, любой другой код свидетельствует о необходимости прервать цепочку автоматизации и вмешаться администратору.Соблюдение правильной последовательности ключей и явное указание контекста работы (основная конфигурация или расширение) позволяет избежать ложных сообщений об ошибках аутентификации и выстроить стабильный процесс автоматизированной сборки приложений на платформе 1С:Предприятие.