Как запустить встроенный отчет или обработку 1С из командной строки без изменения конфигурации?

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

В процессе администрирования и сопровождения систем на платформе «1С:Предприятие 8» специалисты часто сталкиваются с задачами автоматизации рутинных действий пользователей. Одной из типичных задач является обеспечение быстрого доступа к конкретному встроенному отчету или обработке прямо при запуске программы. Ситуация значительно усложняется, если речь идет о распределенной информационной базе (РИБ), где изменять конфигурацию на периферийном узле категорически запрещено (или технически невозможно без согласования с центральным офисом), а у конечных пользователей жестко ограничены права безопасности — например, полностью отключена возможность интерактивного запуска внешних отчетов и обработок.

В этой статье мы детально проанализируем данную проблему, рассмотрим, почему стандартные подходы через параметры /C или /Execute могут оказаться неэффективными, и разберем элегантное штатное решение с использованием навигационных ссылок платформы, а также альтернативные способы автоматизации.

Анализ проблемы и ограничений распределенной базы

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

  1. Нельзя вносить изменения в конфигурацию. Любое изменение метаданных в периферийном узле РИБ заблокировано на уровне платформы. Попытка принудительного изменения конфигурации приведет к рассинхронизации с главным узлом и поломке механизма обмена данными.
  2. Запрещен запуск внешних файлов. У пользователя нет прав на интерактивное открытие внешних отчетов (файлы *.erf) и обработок (файлы *.epf). Платформа жестко пресекает попытки запуска таких файлов по соображениям безопасности информационной системы.
  3. Требуется автоматизация. Запуск должен происходить «в один клик», например, через ярлык на рабочем столе или файл сценария.

Стандартные параметры командной строки «1С» в данных условиях имеют существенные недостатки:

К счастью, разработчики платформы «1С:Предприятие» предусмотрели штатный механизм, позволяющий решить эту задачу без написания кода и использования внешних файлов.

Штатное решение: Навигационные ссылки и параметр /URL

Начиная с версии 8.2, в платформе «1С:Предприятие» реализован мощный механизм навигационных ссылок. Любой объект метаданных, документ, элемент справочника, встроенный отчет или обработка имеют свой внутренний уникальный адрес формата e1cib. Платформа умеет обрабатывать такие ссылки непосредственно при запуске клиентского приложения с помощью параметра командной строки /URL.

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

Рассмотрим подробнее синтаксис командной строки для запуска встроенного отчета.

Шаблон команды для файлового варианта информационной базы:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\PathToBase" /N "ИмяПользователя" /P "Пароль" /URL "e1cib/app/Report.ИмяОтчета"

Шаблон команды для клиент-серверного варианта работы:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "ИмяСервера\ИмяБазы" /N "ИмяПользователя" /P "Пароль" /URL "e1cib/app/Report.ИмяОтчета"

Разберем структуру навигационной ссылки, передаваемой после ключа /URL:

При таком подходе безопасность системы абсолютно не нарушается. Пользователь входит под своей учетной записью, и если у него в правах (ролях) есть доступ к чтению и просмотру указанного встроенного отчета, форма успешно откроется. При этом никаких прав на запуск вредоносного внешнего кода у него не появится.

Продвинутое использование: Открытие конкретного варианта отчета

Современные отчеты в «1С» практически всегда строятся на базе Системы Компоновки Данных (СКД) и содержат несколько вариантов настроек под разные нужды (например, «Продажи по менеджерам», «Продажи по складам» внутри одного отчета «Продажи»). Если мы просто укажем ссылку на отчет, откроется его основная пустая форма по умолчанию.

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

Посмотрим на структуру навигационной ссылки с параметрами:


e1cib/app/Report.ИмяОтчета?vrn=ИмяВарианта

Здесь параметр vrn (сокращение от variant) принимает имя предопределенного или сохраненного варианта отчета. Если нам требуется применить более сложные специфические настройки, мы можем использовать следующий формат:


e1cib/app/Report.ИмяОтчета?vrn=ИмяВарианта&stngs=КлючНастроек

Такой подход позволяет создавать ярлыки для пользователей, которые не просто открывают отчет, а сразу выводят на экран преднастроенные данные, экономя время сотрудников и снижая количество ошибок при ручном выборе настроек.

Альтернативное решение: Использование COM-соединения

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

Если у пользователя в правах доступа разрешено использование внешнего соединения (роль «Вызов внешнего источника» или аналогичная), мы можем написать скрипт на языке VBScript или PowerShell, который выполнит все необходимые действия.

Рассмотрим практический пример реализации скрипта на VBScript (файл с расширением .vbs), который подключается к базе, формирует встроенный отчет и сохраняет его на диск:


Dim Connector, Connection, ReportManager, ReportObject, TabDoc

' Инициализируем COM-соединение с платформой 1С:Предприятие 8.3
Set Connector = CreateObject("V83.COMConnector")
Set Connection = Connector.Connect("File='C:\PathToBase';Usr='ИмяПользователя';Pwd='Пароль';")

' Обращаемся к менеджеру встроенного отчета
Set ReportManager = Connection.Reports.Продажи
Set ReportObject = ReportManager.Create()

' Создаем объект ТабличныйДокумент на стороне 1С для вывода результата
Set TabDoc = Connection.NewObject("ТабличныйДокумент")

' Выполняем компоновку и формирование отчета
ReportObject.СкомпоноватьРезультат(TabDoc)

' Сохраняем полученный отчет на локальный диск в формате PDF
TabDoc.Write "C:\Reports\Daily_Sales.pdf", Connection.ТипФайлаТабличногоДокумента.PDF

' Очищаем объекты
Set TabDoc = Nothing
Set ReportObject = Nothing
Set Connection = Nothing
Set Connector = Nothing

Этот скрипт можно запускать через Планировщик задач Windows во внерабочее время. Пользователь будет приходить утром и сразу открывать готовый PDF-файл с отчетом, не тратя время на запуск тяжелого интерфейса «1С» и ожидание формирования сложных данных.

Альтернативный решение: Работа с резервной копией базы

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

Мы можем настроить регулярное создание копии базы данных (например, каждую ночь). В этой копии администратор может снять конфигурацию с поддержки, доработать модуль управляемого приложения, настроить автоматический запуск через параметр /C или предоставить пользователю полные права на внешние отчеты. Это полностью развязывает руки системным администраторам и программистам, позволяя решать любые задачи автоматизации отчетности, не затрагивая стабильность основной рабочей информационной базы РИБ.

Запуск отчета через веб-клиент

Если база данных опубликована на веб-сервере (под управлением IIS или Apache), задача запуска конкретного встроенного отчета становится еще проще. Нам не нужно настраивать ярлыки платформы на компьютерах пользователей. Мы можем использовать прямую навигационную ссылку для веб-браузера.

Ссылка для запуска отчета в веб-клиенте выглядит следующим образом:


http://ИмяСервера/ИмяПубликации/#e1cib/app/Report.ИмяОтчета

Пользователю достаточно добавить эту ссылку в закладки своего браузера. При переходе по ней веб-клиент «1С» запросит логин и пароль, после чего сразу же откроет окно с нужным встроенным отчетом.

Резюме и рекомендации

Мы подробно проанализировали проблему и нашли оптимальные пути ее решения. В зависимости от технических требований и условий безопасности, рекомендуется использовать следующие подходы:

← На главную