Автозапуск внешней обработки при старте 1С:Предприятия: ключ /Execute, расширение и код
Содержание
Самый быстрый способ запустить обработку при запуске 1С:Предприятия — добавить к команде запуска параметр /Execute "путь\к\обработке.epf". Платформа стартует базу и сразу открывает основную форму обработки. Конфигурацию менять не нужно.
Если обработка должна открываться у всех пользователей или только при условии, ставьте её на автозапуск через расширение конфигурации
: перехватите ПриНачалеРаботыСистемы и подключите файл кодом. Оба способа работают в платформе 8.3 с интерфейсом «Такси», в тонком и толстом клиенте.
Способы автозапуска обработки: что выбрать
Вариантов четыре. Они отличаются тем, где хранится логика запуска и кому придётся её поддерживать.
| Способ | Когда подходит | Что нужно | Риски |
|---|---|---|---|
Параметр /Execute в ярлыке или списке баз | Один-два пользователя, разовая или личная задача | Доступ к ярлыку и право открывать внешние обработки | Ярлык легко скопировать вместе с паролем |
Расширение с перехватом ПриНачалеРаботыСистемы | Типовая конфигурация на поддержке, запуск для группы людей | Конфигуратор, права администратора | Расширение надо проверять после обновлений |
| Правка модуля управляемого приложения | Своя или снятая с поддержки конфигурация | Доступ к основной конфигурации | В типовой ломает автообновление |
| Обработка как объект расширения | Обработка нужна постоянно | Перенос формы и модуля в расширение | Больше работы на старте |
💡 Если задача — не «показать форму человеку», а выполнить действие без участия пользователя (загрузить курсы, выгрузить файл), открытие при старте не лучший выбор. Для фоновой работы есть регламентные задания и планировщик Windows.
Запуск обработки при старте через параметр командной строки /Execute
Платформа понимает параметр /Execute в режиме ENTERPRISE. После входа в базу она открывает указанную внешнюю обработку
. Путь — к файлу на компьютере пользователя или в сетевой папке.
Ярлык на рабочем столе
- Скопируйте существующий ярлык 1С или создайте новый.
- Откройте его свойства и в поле «Объект» соберите строку целиком.
- Сохраните и запустите ярлык.
Пример для файловой базы:
"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С из стартового окна, ярлык не нужен.
- В окне запуска выделите базу и нажмите «Изменить».
- Пролистайте мастер до последней страницы.
- В поле «Дополнительные параметры запуска» впишите
/Execute "D:\Tools\ZagruzkaKursov.epf". - Нажмите «Готово».
Параметр сохранится в списке баз этого пользователя Windows. На другом компьютере его нужно прописать заново или раздать через общий файл списка баз.
Автозапуск через расширение конфигурации
Расширение — правильный путь для типовой конфигурации на поддержке. Основной код не трогается, обновления ставятся как обычно.
Механизм простой: в расширении перехватываем процедуру ПриНачалеРаботыСистемы модуля управляемого приложения. После старта она подключает внешнюю обработку на сервере и открывает её форму на клиенте.
Шаг 1. Создайте расширение
- Откройте базу в Конфигураторе.
- Меню
Конфигурация → Расширения конфигурации, кнопка «Добавить». - Задайте имя, например
Расш1, и откройте конфигурацию расширения.
Шаг 2. Общий модуль для подключения файла
В расширении добавьте общий модуль Расш1_ЗапускОбработки с флагами «Сервер» и «Вызов сервера»:
Функция ПодключитьВнешнююОбработку(ПутьКФайлу) Экспорт
Файл = Новый Файл(ПутьКФайлу);
Если Не Файл.Существует() Тогда
ВызватьИсключение СтрШаблон("Не найден файл обработки: %1", ПутьКФайлу);
КонецЕсли;
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКФайлу));
Защита = Новый ОписаниеЗащитыОтОпасныхДействий;
Защита.ПредупреждатьОбОпасныхДействиях = Ложь;
Возврат ВнешниеОбработки.Подключить(Адрес, , Ложь, Защита);
КонецФункции
Функция возвращает имя, под которым платформа подключила обработку. Подключение живёт до конца сеанса.
Шаг 3. Перехват старта в модуле приложения
В дереве расширения вызовите контекстное меню корневого элемента и откройте модуль управляемого приложения. Добавьте в него:
&После("ПриНачалеРаботыСистемы")
Процедура Расш1_ПриНачалеРаботыСистемы()
ПодключитьОбработчикОжидания("Расш1_ОткрытьОбработкуПриСтарте", 1, Истина);
КонецПроцедуры
Процедура Расш1_ОткрытьОбработкуПриСтарте() Экспорт
Если СтрНайти(ПараметрЗапуска, "БезАвтозапуска") > 0 Тогда
Возврат;
КонецЕсли;
ИмяОбработки = Расш1_ЗапускОбработки.ПодключитьВнешнююОбработку(
"\\srv01\1c_tools\ZagruzkaKursov.epf");
ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
КонецПроцедуры
Задержка в одну секунду через обработчик ожидания нужна на практике. Типовые конфигурации при старте сами открывают служебные окна. Без паузы ваша форма может оказаться под ними или открыться раньше, чем завершится их начальная настройка.
Проверка ПараметрЗапуска даёт аварийный выход. Запуск с /C "БезАвтозапуска" пропустит обработку, если она вдруг начнёт падать у всех.
Шаг 4. Снимите безопасный режим расширения
Код выше читает файл с диска и подключает обработку без безопасного режима. В безопасном режиме расширения он упадёт.
- В списке
Конфигурация → Расширения конфигурациинайдите своё расширение. - Снимите у него флаг «Безопасный режим».
- Обновите конфигурацию базы данных (F7) и перезапустите 1С:Предприятие.
Снимайте безопасный режим только у расширения, код которого вы написали или проверили сами. Такое расширение получает те же возможности, что и основная конфигурация.
Кому показывать обработку
Чаще всего обработка нужна не всем. Добавьте условие в начало Расш1_ОткрытьОбработкуПриСтарте:
- 👤 по имени пользователя —
ИмяПользователя(); - 🔑 по роли — проверка
РольДоступна("ИмяРоли")в серверной функции; - 🏷️ по флагу в
/C— тогда автозапуск включается ярлыком конкретного человека.
Запуск из модуля самой конфигурации
Если конфигурация своя или снята с поддержки, тот же код можно положить прямо в модуль управляемого приложения: в процедуру ПриНачалеРаботыСистемы. Перехват через &После тогда не нужен.
В конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11) для своего кода при старте предусмотрена процедура ПослеНачалаРаботыСистемы в общем модуле ОбщегоНазначенияКлиентПереопределяемый. Она вызывается, когда стандартные подсистемы закончили свои стартовые действия. Но правка этого модуля в типовой тоже снимает его с поддержки, поэтому для типовых всё равно лучше расширение.
Объекты «Подписка на событие» в дереве конфигурации к старту программы не относятся. Они срабатывают на события объектов: запись документа, удаление элемента справочника. Обработку при входе пользователя открывает только модуль приложения или параметр запуска.
Обработка внутри расширения: без внешнего файла
Внешний файл — слабое место. Его могут удалить, переименовать или подменить, а сетевая папка бывает недоступна.
Надёжнее перенести обработку внутрь расширения:
- В расширении создайте новую обработку с тем же набором реквизитов.
- Перенесите форму: макет формы и код модуля скопируйте из внешней обработки.
- Перенесите модуль объекта.
- В
Расш1_ОткрытьОбработкуПриСтартеоткройте форму по имени объекта расширения:ОткрытьФорму("Обработка.МояЗагрузка.Форма").
Что это даёт:
- ✅ не нужен файл на диске и доступ к сетевой папке;
- ✅ не нужно снимать безопасный режим ради чтения файла;
- ✅ форму можно вывести на начальную страницу и в командный интерфейс раздела;
- ✅ версии хранятся вместе с расширением.
Если хотите, чтобы обработка не только открывалась при старте, а была всегда на виду, добавьте её форму на начальную страницу. Пользователь делает это сам через Главное меню → Вид → Настройка начальной страницы, если форма объекта доступна ему по правам.
Для командной разработки расширение удобно выгружать в XML-файлы: Конфигурация → Выгрузить конфигурацию в файлы в окне расширения. Формы, модули и макеты лягут отдельными файлами, их видно в системе контроля версий.
Встроить действие в форму, а не в старт
Иногда обработка при запуске нужна только ради одного действия в конкретном документе. Тогда старт программы трогать не стоит. В расширении заимствуйте нужную форму и добавьте обработчик &После на её событие ПриОткрытии или новую команду. Пользователь получит действие ровно там, где работает.
Права, безопасный режим и защита от опасных действий
Внешняя обработка выполняет любой код. Поэтому платформа пропускает её только через несколько проверок.
| Проверка | Где настраивается | Что будет, если не пройдена |
|---|---|---|
| Право на интерактивное открытие внешних обработок | Роль пользователя | Сообщение о нарушении прав доступа |
| Защита от опасных действий | Свойства пользователя в Конфигураторе | Окно с предупреждением при открытии файла |
| Безопасный режим расширения | Список расширений | Ошибка при чтении файла или подключении |
| Профиль безопасности кластера | Консоль администрирования серверов | Запрет небезопасного подключения на сервере |
В типовых конфигурациях право на открытие внешних обработок обычно выдаётся отдельной группой доступа. Для бухгалтеров его, как правило, не включают — и это правильно.
Не давайте право открывать внешние обработки всем ради одной обработки на старте. Перенесите её в расширение — тогда право не нужно вовсе.
Отдельно про клиент-серверный вариант. Функция ПодключитьВнешнююОбработку выполняется на сервере 1С. Путь D:\Tools\... она ищет на диске сервера, а не на компьютере пользователя. Файл читается от имени учётной записи службы сервера 1С (часто USR1CV8). Поэтому:
- 📁 кладите обработку в сетевую папку и указывайте путь вида
\\server\share\file.epf; - 🔐 дайте учётной записи службы права на чтение этой папки;
- 🚫 права на запись в папку дайте только администраторам, иначе обработку подменят.
Отладка: почему обработка не открывается при запуске
Сначала проверьте вариант с /Execute, затем — с расширением. Ниже симптомы и что они обычно означают.
Как пройти код старта отладчиком
- В Конфигураторе откройте модуль приложения расширения и поставьте точку останова (F9) на строке с
ПодключитьОбработчикОжидания. - Запустите отладку клавишей F5 — Конфигуратор сам подключит отладчик к стартующему клиенту.
- Пройдите код по шагам (F10, F11) и посмотрите значение
ИмяОбработкии текст исключения, если оно есть.
Для отладки самой внешней обработки откройте её .epf в Конфигураторе через Файл → Открыть, поставьте точки останова и запустите клиент из Конфигуратора. Точки сработают, когда обработка откроется по /Execute.
Если код в расширении падает при старте и мешает войти, запустите базу с /C "БезАвтозапуска" или отключите расширение в Конфигураторе. Удалять расширение для этого не нужно.
Частые вопросы
Можно ли открыть обработку при старте и сразу закрыть 1С после её работы?
ЗавершитьРаботуСистемы(Ложь) — программа закроется без вопроса. Так делают для запуска по расписанию из планировщика Windows.Сработает ли /Execute вместе с другими параметрами запуска?
/F или /S, затем /N, /WA+, /C и /Execute. Удобно держать их в том порядке, как в примерах выше: так строку проще читать и проверять.Как передать обработке настройки при запуске?
/C "строка". В обработке строку читают из ПараметрЗапуска и разбирают сами, например по разделителю ;.Нужно ли обновлять расширение после обновления типовой конфигурации?
ПриНачалеРаботыСистемы обычно переживает обновления, потому что эта процедура есть в модуле приложения всегда. После каждого обновления всё равно запускайте базу и проверяйте, что обработка открылась.Можно ли так открывать внешний отчёт, а не обработку?
ВнешниеОтчеты.Подключить и имя формы вида ВнешнийОтчет.<Имя>.Форма. Параметр /Execute рассчитан на внешние обработки.