Как реализовать автоматический запуск обработки при запуске 1С:Предприятие?

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

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

В этой статье мы подробно разберем, как реализовать автозапуск обработки для всех пользователей информационной базы. Мы проанализируем как классические варианты, предложенные участниками сообщества, так и современные безопасные методы разработки на платформе 1С:Предприятие 8.3.

Метод 1. Параметр запуска командной строки /Execute

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

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

Пример строки запуска для файловой информационной базы:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"C:\1C_Bases\Trade" /Execute "C:\1C_Shared\AutoRunProcessor.epf"

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

Метод 2. Централизованное управление параметрами через ibases.v8i

Чтобы избежать ручного обхода компьютеров пользователей, мы можем применить централизованное редактирование файла настроек списка информационных баз — ibases.v8i. Этот файл хранит параметры подключения и запуска для каждой базы, зарегистрированной у пользователя.

Разберем по шагам, как прописать автозапуск обработки в этом файле:

  1. Откроем файл ibases.v8i, который по умолчанию располагается в каталоге пользователя %APPDATA%\1C\1CEStart\.
  2. Найдем секцию с нужной информационной базой (она обозначается именем базы в квадратных скобках, например, [Управление торговлей]).
  3. Добавим параметр AdditionalParameters и укажем в нем ключ /Execute с путем к файлу обработки.

Пример структуры секции в файле ibases.v8i после внесения изменений:


[Управление торговлей]
Connect=File="C:\1C_Bases\Trade";
ID=863d0be5-df85-48b2-bdae-49b809a7fc04
Order=1
Folder=/
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3
AdditionalParameters=/Execute "C:\1C_Shared\AutoRunProcessor.epf"

Важное преимущество для системных администраторов: Чтобы применить эту настройку одновременно для всех сотрудников, мы можем использовать механизм списков общих информационных баз. Для этого достаточно опубликовать настроенный файл ibases.v8i на сетевом ресурсе организации, а в настройках стартера 1С у каждого пользователя прописать путь к этому файлу в разделе "Списки общих информационных баз". При изменении файла на сервере параметры запуска автоматически обновятся у всех сотрудников.

Дополнительно в крупных корпоративных сетях системные администраторы могут использовать групповые политики Windows (GPO) и написать скрипт на PowerShell, который будет автоматически сканировать локальные файлы ibases.v8i в профилях пользователей и добавлять строку AdditionalParameters.

Метод 3. Программный запуск через модуль приложения

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

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

В случае обычного приложения откроем модуль обычного приложения и найдем предопределенную процедуру ПриНачалеРаботыСистемы. Добавим в нее код открытия встроенной обработки:


Процедура ПриНачалеРаботыСистемы()
    // Проверяем условия, например, роль пользователя или текущую дату
    ФормаПриветствия = Обработки.ПоздравленияС8Марта.ПолучитьФорму("Форма");
    ФормаПриветствия.Открыть();
КонецПроцедуры

Если мы работаем в управляемом приложении (1С 8.3), код открытия формы следует разместить в модуле управляемого приложения. При этом помним, что интерактивные действия (открытие окон) возможны только на клиенте:


&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
    // Открытие управляемой формы встроенной обработки
    ОткрытьФорму("Обработка.ПоздравленияС8Марта.Форма.Форма");
КонецПроцедуры

Основной минус данного подхода — необходимость монопольного обновления конфигурации базы данных. Чтобы изменения вступили в силу, нам придется дождаться выхода всех пользователей из системы.

Метод 4. Использование расширений конфигурации (для платформы 8.3)

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

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

  1. Создадим новое расширение конфигурации в конфигураторе.
  2. Заимствуем в расширение модуль управляемого приложения.
  3. Создадим обработчик предопределенной процедуры ПриНачалеРаботыСистемы с аннотацией &После.

Код в модуле управляемого приложения расширения будет выглядеть следующим образом:


&После("ПриНачалеРаботыСистемы")
Процедура Расш1_ПриНачалеРаботыСистемы()
    // Вызов кода запуска нашей обработки
    ОткрытьФорму("Обработка.МояАвтостартующаяОбработка.Форма.Форма");
КонецПроцедуры

Этот метод полностью безопасен для поддержки основной конфигурации и позволяет быстро включать или отключать автозапуск простой деактивацией расширения. Для реализации подобного сценария можно использовать комплект расширения и обработки для автозапуска при старте системы.

Метод 5. Запуск внешней обработки из справочника (механизм БСП)

В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), крайне не рекомендуется использовать прямое чтение файлов с диска компьютера пользователя из-за строгих требований безопасности платформы 1С:Предприятие 8.3. Безопасным решением является запуск обработки, сохраненной непосредственно в справочнике дополнительных отчетов и обработок.

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


&НаКлиенте
Процедура ПодключитьИОткрытьВнешнююОбработку(СсылкаНаСправочник)
    
    // Получаем имя внешней обработки, зарегистрированной в системе
    ИмяОбработки = ПолучитьИмяВнешнейОбработкиНаСервере(СсылкаНаСправочник);
    
    Если ЗначениеЗаполнено(ИмяОбработки) Тогда
        // Формируем имя формы для открытия
        ИмяФормы = "ВнешняяОбработка." + ИмяОбработки + ".Форма";
        ОткрытьФорму(ИмяФормы);
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Функция ПолучитьИмяВнешнейОбработкиНаСервере(СсылкаНаСправочник)
    
    // Получаем двоичные данные файла обработки из хранилища значения справочника
    ДвоичныеДанныеФайла = СсылкаНаСправочник.ХранилищеВнешнейОбработки.Получить();
    
     Если ДвоичныеДанныеФайла <> Неопределено Тогда
         // Помещаем файл во временное хранилище платформы
         АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла);
         // Подключаем внешнюю обработку безопасным способом
         ИмяОбработки = ВнешниеОбработки.Подключить(АдресХранилища, , Ложь);
         Возврат ИмяОбработки;
     КонецЕсли;
     
     Возврат "";
     
КонецФункции

Если в вашей конфигурации используется БСП, то вместо написания собственного кода подключения внешних файлов мы можем использовать штатное API библиотеки. Это избавит систему от проблем при работе в веб-клиенте и тонком клиенте:


// Использование стандартных функций БСП для запуска команды обработки
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКоманду(ПараметрыВыполненияКоманды);

Метод 6. Альтернативный параметр запуска /C

Параметр /Execute в современных версиях платформы 1С может блокироваться механизмами безопасности (например, защитой от опасных действий), заставляя пользователя совершать лишние клики для подтверждения доверия файлу. В качестве надежного обходного пути мы можем использовать параметр запуска /C. При необходимости устранить блокировку со стороны платформы подойдёт обработка для снятия защиты от опасных действий.

Ключ командной строки /C <СтрокаПараметров> передает произвольную текстовую строку в систему. Мы можем обработать эту строку внутри кода конфигурации при запуске.

В строке запуска ярлыка укажем:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"C:\1C_Bases\Trade" /C"ЗапуститьПраздничноеПоздравление"

А в модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы проанализируем переданное значение:


&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
    
    // Проверяем параметр запуска, переданный через ключ /C
    Если ПараметрЗапуска = "ЗапуститьПраздничноеПоздравление" Тогда
        ОткрытьФорму("Обработка.ПоздравленияС8Марта.Форма.Форма");
    КонецЕсли;
    
КонецПроцедуры

Этот подход позволяет гибко управлять поведением программы на старте. Через параметр запуска мы можем передавать не просто команду, а сложные структуры данных, разделенные спецсимволами (например, режим работы, код склада, ID пользователя во внешней системе), повышая гибкость и безопасность интеграционных сценариев.

← На главную