Автозапуск внешней обработки при старте 1С:Предприятия: ключ /Execute, расширение и код

· 9 мин

Содержание

Самый быстрый способ запустить обработку при запуске 1С:Предприятия — добавить к команде запуска параметр /Execute "путь\к\обработке.epf". Платформа стартует базу и сразу открывает основную форму обработки. Конфигурацию менять не нужно.

Если обработка должна открываться у всех пользователей или только при условии, ставьте её на автозапуск через расширение конфигурации : перехватите ПриНачалеРаботыСистемы и подключите файл кодом. Оба способа работают в платформе 8.3 с интерфейсом «Такси», в тонком и толстом клиенте.

Способы автозапуска обработки: что выбрать

Вариантов четыре. Они отличаются тем, где хранится логика запуска и кому придётся её поддерживать.

СпособКогда подходитЧто нужноРиски
Параметр /Execute в ярлыке или списке базОдин-два пользователя, разовая или личная задачаДоступ к ярлыку и право открывать внешние обработкиЯрлык легко скопировать вместе с паролем
Расширение с перехватом ПриНачалеРаботыСистемыТиповая конфигурация на поддержке, запуск для группы людейКонфигуратор, права администратораРасширение надо проверять после обновлений
Правка модуля управляемого приложенияСвоя или снятая с поддержки конфигурацияДоступ к основной конфигурацииВ типовой ломает автообновление
Обработка как объект расширенияОбработка нужна постоянноПеренос формы и модуля в расширениеБольше работы на старте

💡 Если задача — не «показать форму человеку», а выполнить действие без участия пользователя (загрузить курсы, выгрузить файл), открытие при старте не лучший выбор. Для фоновой работы есть регламентные задания и планировщик Windows.

Запуск обработки при старте через параметр командной строки /Execute

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

Ярлык на рабочем столе

  1. Скопируйте существующий ярлык 1С или создайте новый.
  2. Откройте его свойства и в поле «Объект» соберите строку целиком.
  3. Сохраните и запустите ярлык.

Пример для файловой базы:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Buh" /N "Иванова" /Execute "D:\Tools\ZagruzkaKursov.epf"

Для клиент-серверной базы вместо /F указывают сервер и имя базы:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /S "srv01\buh" /Execute "\\srv01\1c_tools\ZagruzkaKursov.epf"

Номер версии в пути замените на свой. Пути с пробелами всегда берите в кавычки. Если на компьютере стоит несколько версий платформы, указывайте именно ту, с которой работает база: так вы не получите неожиданный запуск в другой версии.

Полезные соседние параметры:

  • 🔹 /N и /P — имя пользователя и пароль;
  • 🔹 /WA+ — вход по учётной записи Windows, без пароля в ярлыке;
  • 🔹 /DisableStartupMessages — не показывать предупреждения при старте;
  • 🔹 /C "строка" — передать произвольный текст, который код прочитает через ПараметрЗапуска.

Пароль в параметре /P хранится в ярлыке открытым текстом. Любой, кто откроет свойства ярлыка, его увидит. Если пользователи заведены с аутентификацией Windows, используйте /WA+.

Через список информационных баз

Если пользователь запускает 1С из стартового окна, ярлык не нужен.

  1. В окне запуска выделите базу и нажмите «Изменить».
  2. Пролистайте мастер до последней страницы.
  3. В поле «Дополнительные параметры запуска» впишите /Execute "D:\Tools\ZagruzkaKursov.epf".
  4. Нажмите «Готово».

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

Автозапуск через расширение конфигурации

Расширение — правильный путь для типовой конфигурации на поддержке. Основной код не трогается, обновления ставятся как обычно.

Механизм простой: в расширении перехватываем процедуру ПриНачалеРаботыСистемы модуля управляемого приложения. После старта она подключает внешнюю обработку на сервере и открывает её форму на клиенте.

Шаг 1. Создайте расширение

  1. Откройте базу в Конфигураторе.
  2. Меню Конфигурация → Расширения конфигурации, кнопка «Добавить».
  3. Задайте имя, например Расш1, и откройте конфигурацию расширения.

Шаг 2. Общий модуль для подключения файла

В расширении добавьте общий модуль Расш1_ЗапускОбработки с флагами «Сервер» и «Вызов сервера»:

Функция ПодключитьВнешнююОбработку(ПутьКФайлу) Экспорт

    Файл = Новый Файл(ПутьКФайлу);
    Если Не Файл.Существует() Тогда
        ВызватьИсключение СтрШаблон("Не найден файл обработки: %1", ПутьКФайлу);
    КонецЕсли;

    Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКФайлу));

    Защита = Новый ОписаниеЗащитыОтОпасныхДействий;
    Защита.ПредупреждатьОбОпасныхДействиях = Ложь;

    Возврат ВнешниеОбработки.Подключить(Адрес, , Ложь, Защита);

КонецФункции

Функция возвращает имя, под которым платформа подключила обработку. Подключение живёт до конца сеанса.

Шаг 3. Перехват старта в модуле приложения

В дереве расширения вызовите контекстное меню корневого элемента и откройте модуль управляемого приложения. Добавьте в него:

&После("ПриНачалеРаботыСистемы")
Процедура Расш1_ПриНачалеРаботыСистемы()
    ПодключитьОбработчикОжидания("Расш1_ОткрытьОбработкуПриСтарте", 1, Истина);
КонецПроцедуры

Процедура Расш1_ОткрытьОбработкуПриСтарте() Экспорт

    Если СтрНайти(ПараметрЗапуска, "БезАвтозапуска") > 0 Тогда
        Возврат;
    КонецЕсли;

    ИмяОбработки = Расш1_ЗапускОбработки.ПодключитьВнешнююОбработку(
        "\\srv01\1c_tools\ZagruzkaKursov.epf");
    ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");

КонецПроцедуры

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

Проверка ПараметрЗапуска даёт аварийный выход. Запуск с /C "БезАвтозапуска" пропустит обработку, если она вдруг начнёт падать у всех.

Шаг 4. Снимите безопасный режим расширения

Код выше читает файл с диска и подключает обработку без безопасного режима. В безопасном режиме расширения он упадёт.

  1. В списке Конфигурация → Расширения конфигурации найдите своё расширение.
  2. Снимите у него флаг «Безопасный режим».
  3. Обновите конфигурацию базы данных (F7) и перезапустите 1С:Предприятие.

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

Кому показывать обработку

Чаще всего обработка нужна не всем. Добавьте условие в начало Расш1_ОткрытьОбработкуПриСтарте:

  • 👤 по имени пользователя — ИмяПользователя();
  • 🔑 по роли — проверка РольДоступна("ИмяРоли") в серверной функции;
  • 🏷️ по флагу в /C — тогда автозапуск включается ярлыком конкретного человека.

Запуск из модуля самой конфигурации

Если конфигурация своя или снята с поддержки, тот же код можно положить прямо в модуль управляемого приложения: в процедуру ПриНачалеРаботыСистемы. Перехват через &После тогда не нужен.

В конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11) для своего кода при старте предусмотрена процедура ПослеНачалаРаботыСистемы в общем модуле ОбщегоНазначенияКлиентПереопределяемый. Она вызывается, когда стандартные подсистемы закончили свои стартовые действия. Но правка этого модуля в типовой тоже снимает его с поддержки, поэтому для типовых всё равно лучше расширение.

Объекты «Подписка на событие» в дереве конфигурации к старту программы не относятся. Они срабатывают на события объектов: запись документа, удаление элемента справочника. Обработку при входе пользователя открывает только модуль приложения или параметр запуска.

Обработка внутри расширения: без внешнего файла

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

Надёжнее перенести обработку внутрь расширения:

  1. В расширении создайте новую обработку с тем же набором реквизитов.
  2. Перенесите форму: макет формы и код модуля скопируйте из внешней обработки.
  3. Перенесите модуль объекта.
  4. В Расш1_ОткрытьОбработкуПриСтарте откройте форму по имени объекта расширения: ОткрытьФорму("Обработка.МояЗагрузка.Форма").

Что это даёт:

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

Если хотите, чтобы обработка не только открывалась при старте, а была всегда на виду, добавьте её форму на начальную страницу. Пользователь делает это сам через Главное меню → Вид → Настройка начальной страницы, если форма объекта доступна ему по правам.

Для командной разработки расширение удобно выгружать в XML-файлы: Конфигурация → Выгрузить конфигурацию в файлы в окне расширения. Формы, модули и макеты лягут отдельными файлами, их видно в системе контроля версий.

Встроить действие в форму, а не в старт

Иногда обработка при запуске нужна только ради одного действия в конкретном документе. Тогда старт программы трогать не стоит. В расширении заимствуйте нужную форму и добавьте обработчик &После на её событие ПриОткрытии или новую команду. Пользователь получит действие ровно там, где работает.

Права, безопасный режим и защита от опасных действий

Внешняя обработка выполняет любой код. Поэтому платформа пропускает её только через несколько проверок.

ПроверкаГде настраиваетсяЧто будет, если не пройдена
Право на интерактивное открытие внешних обработокРоль пользователяСообщение о нарушении прав доступа
Защита от опасных действийСвойства пользователя в КонфигуратореОкно с предупреждением при открытии файла
Безопасный режим расширенияСписок расширенийОшибка при чтении файла или подключении
Профиль безопасности кластераКонсоль администрирования серверовЗапрет небезопасного подключения на сервере

В типовых конфигурациях право на открытие внешних обработок обычно выдаётся отдельной группой доступа. Для бухгалтеров его, как правило, не включают — и это правильно.

Не давайте право открывать внешние обработки всем ради одной обработки на старте. Перенесите её в расширение — тогда право не нужно вовсе.

Отдельно про клиент-серверный вариант. Функция ПодключитьВнешнююОбработку выполняется на сервере 1С. Путь D:\Tools\... она ищет на диске сервера, а не на компьютере пользователя. Файл читается от имени учётной записи службы сервера 1С (часто USR1CV8). Поэтому:

  • 📁 кладите обработку в сетевую папку и указывайте путь вида \\server\share\file.epf;
  • 🔐 дайте учётной записи службы права на чтение этой папки;
  • 🚫 права на запись в папку дайте только администраторам, иначе обработку подменят.

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

Сначала проверьте вариант с /Execute, затем — с расширением. Ниже симптомы и что они обычно означают.

Диагностика: выберите симптом

Как пройти код старта отладчиком

  1. В Конфигураторе откройте модуль приложения расширения и поставьте точку останова (F9) на строке с ПодключитьОбработчикОжидания.
  2. Запустите отладку клавишей F5 — Конфигуратор сам подключит отладчик к стартующему клиенту.
  3. Пройдите код по шагам (F10, F11) и посмотрите значение ИмяОбработки и текст исключения, если оно есть.

Для отладки самой внешней обработки откройте её .epf в Конфигураторе через Файл → Открыть, поставьте точки останова и запустите клиент из Конфигуратора. Точки сработают, когда обработка откроется по /Execute.

Если код в расширении падает при старте и мешает войти, запустите базу с /C "БезАвтозапуска" или отключите расширение в Конфигураторе. Удалять расширение для этого не нужно.

Частые вопросы

Можно ли открыть обработку при старте и сразу закрыть 1С после её работы?
Да. В конце кода обработки вызовите ЗавершитьРаботуСистемы(Ложь) — программа закроется без вопроса. Так делают для запуска по расписанию из планировщика Windows.
Сработает ли /Execute вместе с другими параметрами запуска?
Да, параметры комбинируются в одной строке: /F или /S, затем /N, /WA+, /C и /Execute. Удобно держать их в том порядке, как в примерах выше: так строку проще читать и проверять.
Как передать обработке настройки при запуске?
Через параметр /C "строка". В обработке строку читают из ПараметрЗапуска и разбирают сами, например по разделителю ;.
Нужно ли обновлять расширение после обновления типовой конфигурации?
Перехват ПриНачалеРаботыСистемы обычно переживает обновления, потому что эта процедура есть в модуле приложения всегда. После каждого обновления всё равно запускайте базу и проверяйте, что обработка открылась.
Можно ли так открывать внешний отчёт, а не обработку?
Да. Для отчёта используйте ВнешниеОтчеты.Подключить и имя формы вида ВнешнийОтчет.<Имя>.Форма. Параметр /Execute рассчитан на внешние обработки.