Автоматизация обслуживания распределенных информационных баз (РИБ) — это важнейшая задача для обеспечения непрерывности бизнес-процессов в компаниях с разветвленной филиальной сетью. Использование командных файлов (скриптов формата .bat или .cmd) позволяет полностью исключить человеческий фактор при обновлении конфигурации на удаленных точках. Однако на практике администраторы часто сталкиваются с техническими препятствиями: от некорректно работающей авторизации в системе до появления непонятных символов («абракадабры») в консоли Windows. В этой статье мы подробно разберем, как решить эти проблемы, исправить синтаксические ошибки запуска 1С и выстроить надежный сквозной процесс обновления базы данных.
Рассмотрим исходный скрипт, предложенный автором темы:
chcp 1251
"C:\Program Files (x86)\1cv8\8.3.10.2466\bin\1cv8.exe" config /Visible /Администратор /P"ЗдесьПароль" /UpdateDBCfg /F"C:\Base"
pause
При запуске такого сценария процесс останавливается на окне авторизации, и дальнейшего автоматического обновления конфигурации не происходит. Проанализируем, почему этот код не работает:
/Администратор. Имя пользователя (логин) должно передаваться строго через параметр /N. Например: /N"Администратор". Из-за отсутствия правильного ключа система игнорирует указанное имя пользователя и открывает стандартное интерактивное окно выбора пользователя.config поддерживается для совместимости с предыдущими версиями, однако более надежным и современным стандартом является явное использование режима DESIGNER.Давайте исправим базовый синтаксис команды. С учетом исправлений базовая строка запуска конфигуратора должна выглядеть следующим образом:
"C:\Program Files (x86)\1cv8\8.3.10.2466\bin\1cv8.exe" DESIGNER /F"C:\Base" /N"Администратор" /P"ЗдесьПароль" /UpdateDBCfg
Когда мы пишем скрипты автоматизации в ОС Windows, командный интерпретатор (cmd.exe) по умолчанию работает в кодировке OEM 866 (DOS-кодировка). В то же время текстовые редакторы часто сохраняют файлы в кодировках UTF-8 или Windows-1251 (ANSI). Если в параметрах командной строки передается имя пользователя на русском языке (например, «Администратор»), это гарантированно приведет к ошибке авторизации, поскольку кодировки не совпадают.
Разберем три эффективных способа решения проблемы с кодировкой:
Способ 1. Использование латиницы для служебных учетных записей (Лучшая практика)
Самый надежный способ раз и навсегда обезопасить себя от проблем с кодировками — создать в конфигураторе 1С отдельного пользователя для выполнения административных и регламентных задач на латинице (например, Admin_Robot или UpdateUser). Английские символы кодируются одинаково во всех популярных кодировках, что полностью исключает вероятность ошибки парсинга имени командной строкой.
Способ 2. Правильное сохранение BAT-файла и смена кодовой страницы
Если вам обязательно нужно использовать кириллическое имя пользователя, выполните следующие шаги:
chcp 1251 > nul. Это переведет консоль в нужный режим работы.Пример корректно настроенного скрипта с поддержкой кириллицы:
@echo off
chcp 1251 > nul
"C:\Program Files (x86)\1cv8\8.3.10.2466\bin\1cv8.exe" DESIGNER /F "C:\Base" /N "Администратор" /P "ЗдесьПароль" /UpdateDBCfg /DisableStartupMessages
pause
Обратите внимание на параметр /DisableStartupMessages — он крайне важен для автоматизации, так как подавляет появление любых стартовых информационных диалогов и предупреждений платформы, которые могли бы заблокировать выполнение скрипта в фоновом режиме.
Просто запустить команду обновления конфигурации базы данных /UpdateDBCfg для распределенной базы недостаточно. Процесс синхронизации и обновления подчиненного узла РИБ — это комплексная процедура. Давайте разберем по шагам, как выстроить сквозной процесс автоматизации.
Шаг 1. Завершение работы пользователей
Обновление конфигурации базы данных (особенно в файловом режиме) невозможно выполнить, если в базе работают пользователи. База данных должна быть монопольно заблокирована. Для принудительного завершения процессов в файловом режиме можно использовать команду принудительного закрытия окон 1С (применяйте с осторожностью, чтобы не повредить данные):
taskkill /F /IM 1cv8*
Для клиент-серверных баз правильнее использовать встроенные административные скрипты блокировки соединений через RAS/кластер 1С.
Шаг 2. Загрузка файла обмена с FTP-сервера
Чтобы автоматизировать получение пакета обновления из центральной базы, мы можем воспользоваться встроенной в современные версии Windows консольной утилитой curl. Нам нужно скачать актуальный файл обмена во временную директорию:
curl -u ftp_user:ftp_password -o "C:\Exchange\message_002_001.xml" ftp://server.com/exchange/message_002_001.xml
Шаг 3. Запуск обмена данными в режиме «Предприятия»
До запуска конфигуратора нам необходимо запустить 1С в режиме предприятия, чтобы система прочитала загруженный файл обмена и применила изменения метаданных конфигурации, пришедшие из главного узла РИБ. Для этого используется запуск предприятия со специальными параметрами или выполнение настроенного сценария обмена:
"C:\Program Files (x86)\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Base" /N "Admin" /P "Pass" /C "ВыполнитьОбмен" /DisableStartupMessages
Шаг 4. Обновление конфигурации базы данных в Конфигураторе
После того как пакет обмена успешно прочитан, база данных понимает, что основная конфигурация отличается от конфигурации базы данных. Теперь мы запускаем конфигуратор для применения этих изменений структуры:
"C:\Program Files (x86)\1cv8\common\1cestart.exe" DESIGNER /F "C:\Base" /N "Admin" /P "Pass" /UpdateDBCfg /DisableStartupMessages /Out "C:\Exchange\log.txt" -NoTruncate
Обратите внимание на параметр /Out "C:\Exchange\log.txt" -NoTruncate. Он позволяет вести подробный лог выполнения операции обновления. Если что-то пойдет не так, вы всегда сможете проанализировать текстовый файл лога и быстро локализовать проблему.
Шаг 5. Выполнение отложенных обработчиков обновления
Если ваша конфигурация разработана на базе БСП (Библиотека стандартных подсистем), после изменения метаданных часто требуется запустить «1С:Предприятие» в монопольном режиме для выполнения процедур заполнения и конвертации данных:
"C:\Program Files (x86)\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Base" /N "Admin" /P "Pass" /C "СтартОбновленияИБ" /DisableStartupMessages
Если написание сложных bat-скриптов и обработка всех возможных исключительных ситуаций вручную кажется вам избыточным или сложным процессом, обратите внимание на готовые стандартные инструменты автоматизации.
1. Встроенные механизмы БСП (Библиотека стандартных подсистем)
В современные типовые конфигурации (такие как «1С:Бухгалтерия», «1С:Управление торговлей», «1С:Розница») уже заложен штатный функционал обновления подчиненных узлов РИБ. При чтении файла обмена, содержащего новую конфигурацию, система сама блокирует базу для пользователей, создает в фоновом режиме временный скрипт автоматического обновления, перезапускает конфигуратор, применяет обновления и запускает режим предприятия обратно для выполнения обработчиков обновления. Настроить этот процесс можно в пользовательском режиме в разделе «Синхронизация данных».
2. Специализированный софт (например, «Обновлятор-1С»)
Для системных администраторов отличным решением станет использование утилиты «Обновлятор-1С». Она позволяет полностью автоматизировать весь жизненный цикл обновления распределенных баз: инструмент умеет самостоятельно подключаться к FTP-ресурсам, забирать файлы обмена, корректно завершать сеансы активных пользователей, создавать резервные копии баз данных перед началом манипуляций, запускать конфигуратор для обновления структуры метаданных и присылать отчеты о статусе операции на электронную почту.