Автоматизация рутинных задач, таких как выгрузка отчетов или обмен данными, часто требует запуска 1С по расписанию. Однако, когда информационная база опубликована на веб-сервере, стандартные подходы к формированию BAT-файлов могут не срабатывать, вызывая ошибки типа "Информационная база не найдена". В этой статье мы подробно рассмотрим, как правильно сконфигурировать запуск системы через веб-соединение, разберем синтаксис командной строки и сопутствующие технические нюансы.
Часто пользователи пытаются запустить базу через веб-сервер так же, как файловую, указывая путь к исполняемому файлу толстого клиента 1cv8.exe. Проанализируем ситуацию: толстый клиент по умолчанию ожидает прямого подключения к серверу приложений или файлу базы данных. При работе через протоколы http или https (веб-сервер) необходимо использовать тонкий клиент или универсальный загрузчик.
Важное правило: Для подключения к веб-серверу в строке запуска должен использоваться либо 1cv8c.exe (тонкий клиент), либо 1cestart.exe (общий загрузчик), который сам определит нужный тип клиента.
Рассмотрим структуру правильной команды. Вместо ключа /F (путь к файлу) или /S (сервер 1С) нам потребуется ключ /WS (Web Service).
Если мы используем конкретную версию платформы, путь может выглядеть так:
"C:\Program Files\1cv8\8.3.21.1622\bin\1cv8c.exe"
Однако более надежным способом будет обращение к общему загрузчику, который автоматически подберет актуальную версию клиента:
"C:\Program Files (x86)\1cv8\common\1cestart.exe"
Разберем по шагам, какие ключи нам необходимы для успешного выполнения внешней обработки:
ENTERPRISE — режим запуска "Предприятие"./WS "URL_адрес_базы" — адрес публикации на веб-сервере./N "Логин" — имя пользователя в базе 1С./P "Пароль" — пароль пользователя./Execute "Путь_к_обработке" — команда на запуск внешней обработки (файл .epf).Проанализируем пример готовой строки для BAT-файла:
set v8path="C:\Program Files (x86)\1cv8\common\1cestart.exe"
%v8path% ENTERPRISE /WS "http://192.168.0.10/retail" /N "Администратор" /P "qwerty" /Execute "D:\Scripts\obrabotka.epf"
Часто автоматизация ломается из-за того, что 1С не распознает имя пользователя, содержащее кириллицу (например, "Администратор"). Это происходит из-за несоответствия кодировок BAT-файла и командной строки Windows.
Для корректной работы убедимся, что:
BAT-файл сохранен в кодировке OEM 866 (в Notepad++ это делается через меню "Кодировки" -> "Кириллица" -> "OEM 866").UTF-8, система может передать в 1С "кракозябры" вместо логина.Иногда требуется передать внутрь обработки дополнительные данные, например, имя файла для выгрузки. Для этого используем ключ /C. Рассмотрим пример:
/C "ВыгрузитьВсеДанные"
В коде самой обработки мы сможем прочитать это значение с помощью функции ПараметрыЗапуска:
Если ПараметрыЗапуска = "ВыгрузитьВсеДанные" Тогда
// Выполняем алгоритм выгрузки
КонецЕсли;
При запуске по расписанию через Task Scheduler (Планировщик задач) окно 1С часто скрыто или закрывается слишком быстро. Чтобы понять, почему обработка не отработала, добавим ключ логирования /Out.
Пример строки с записью лога:
/Out "C:\Logs\1c_run_log.txt" -NoTruncate
Этот параметр заставит систему записывать все сообщения в текстовый файл, не перезаписывая его каждый раз (благодаря флагу -NoTruncate).
Чтобы сеанс 1С не "висел" на веб-сервере после завершения работы скрипта, необходимо предусмотреть закрытие программы внутри самой обработки. Посмотрим на пример кода в модуле формы или модуля управляемого приложения внешней обработки:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Ваш код автоматизации
ВыполнитьВыгрузку();
// Завершаем работу системы без подтверждения
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
Если по условиям задачи нам нужно сначала удалить старый файл выгрузки, а только потом запустить 1С, используем команду start /wait. Это заставит скрипт дождаться закрытия 1С перед выполнением следующих команд.
Рассмотрим комплексный пример BAT-файла:
@echo off
REM Удаляем старый файл отчета
del "D:\Export\report.xml" /Q
REM Запускаем 1С и ждем завершения
start /wait "" "C:\Program Files (x86)\1cv8\common\1cestart.exe" ENTERPRISE /WS "http://server/base" /N "Robot" /P "123" /Execute "D:\obrabotka.epf"
REM Сообщаем об успехе
echo Выгрузка завершена!
Проанализируем важные ограничения при работе через /WS:
/N и /P могут конфликтовать с ней. В таком случае попробуйте добавить ключ /WA- для принудительного использования логина и пароля из скрипта.HTTP-сессий.Таким образом, правильное сочетание исполняемого файла 1cestart.exe, ключа /WS и корректной кодировки файла позволяет надежно автоматизировать работу с 1С даже в условиях ограниченного доступа к администрированию сервера.