Чтобы в 1С:ERP при начале работы системы открывалась ваша форма, не нужно писать свой обработчик запуска: в конфигурации уже есть механизм «форм, открываемых при начале работы». Достаточно добавить значение в перечисление ФормыОткрываемыеПриНачалеРаботыСистемы, описать форму в функции НастройкиФормы общего модуля ОткрытиеФормПриНачалеРаботыСистемыКлиентСерверПереопределяемый и создать роль. Всё делается в расширении, без снятия конфигурации с поддержки.

Ниже — пошаговая настройка для обработки из расширения, затем вариант, когда при запуске открывается внешняя обработка из справочника дополнительных отчётов и обработок. Пример проверялся на ERP 2.5; в других версиях имена объектов стоит сверить в конфигураторе.

Как устроен типовой механизм

Механизм используется для рабочих мест, которые должны открываться сразу после входа: помощник продаж, рабочее место кассира (РМК), кладовщика, монитор целевых показателей. Он состоит из четырёх частей:

ОбъектНазначение
Перечисление ФормыОткрываемыеПриНачалеРаботыСистемыСписок форм, доступных для автозапуска
Функция НастройкиФормы(Форма) в переопределяемом модулеДля каждого значения: имя формы, роль, параметр запуска, форма настроек
РольОпределяет, каким пользователям форма доступна
Регистр сведений НастройкиОткрытияФормПриНачалеРаботыСистемыПерсональные настройки: открывать ли форму по умолчанию

Логика простая: если у пользователя есть роль, указанная для формы, в его карточке появляется настройка; если в ней стоит флажок «открывать по умолчанию» или клиент запущен с указанным параметром, форма открывается при старте.

Механизм ERP открывает нужное рабочее место сразу после входа пользователя
Механизм ERP открывает нужное рабочее место сразу после входа пользователя

Шаг 1. Обработка и роль в расширении

  1. В расширении создайте обработку, например Расш_РабочееМесто, и форму Форма. Для механизма важны только наличие формы и её полное имя.
  2. Создайте роль Расш_ИспользованиеРабочегоМеста с правами «Использование» и «Просмотр» на эту обработку.

Префикс расширения в именах обязателен: так объекты не конфликтуют с типовыми и сразу видно, откуда они взялись.

Шаг 2. Значение перечисления

Заимствуйте в расширение перечисление ФормыОткрываемыеПриНачалеРаботыСистемы и добавьте в него значение Расш_РабочееМесто. Имя значения удобно делать равным имени обработки — меньше путаницы при поддержке.

Шаг 3. Настройки формы в переопределяемом модуле

Функция НастройкиФормы — это цепочка Если ... ИначеЕсли по значениям перечисления. Добавить ветку можно только изменением функции, поэтому заимствуем её с аннотацией &ИзменениеИКонтроль и вставляем свой блок перед КонецЕсли:

1С
&ИзменениеИКонтроль("НастройкиФормы")
Функция Расш_НастройкиФормы(Форма)

	СтруктураПараметров = ОписаниеНастроекФормы();

	Если Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.ПомощникПродаж") Тогда

		СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.ПомощникПродаж.Форма.Форма");
		СтруктураПараметров.Вставить("Роль",                "ИспользованиеПомощникаПродаж");
		СтруктураПараметров.Вставить("ПараметрЗапуска",     "SaleAssistant");

	// ... остальные типовые ветки без изменений ...

	#Вставка
	ИначеЕсли Форма = ПредопределенноеЗначение("Перечисление.ФормыОткрываемыеПриНачалеРаботыСистемы.Расш_РабочееМесто") Тогда

		СтруктураПараметров.Вставить("ИмяЗапускаемойФормы", "Обработка.Расш_РабочееМесто.Форма.Форма");
		СтруктураПараметров.Вставить("Роль",                "Расш_ИспользованиеРабочегоМеста");
		СтруктураПараметров.Вставить("ПараметрЗапуска",     "CustomWorkplace");
	#КонецВставки

	КонецЕсли;

	Возврат СтруктураПараметров;

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

В конфигураторе при заимствовании тело функции переносится целиком — здесь типовые ветки сокращены для читаемости. Следите за точностью строк: лишний пробел в имени формы или роли ("Обработка. Расш_...", " Расш_...") механизм не простит, и форма просто не откроется без всяких ошибок.

Для типовых форм в той же структуре встречаются ключи НеобходимыНастройки и ИмяФормыНастроек — если рабочему месту нужны параметры (склад, касса), можно указать форму их настройки, и она откроется перед первым запуском.

Почему ИзменениеИКонтроль, а не Вместо: при обновлении ERP платформа сравнит типовой текст функции с сохранённым в расширении и покажет расхождения. С аннотацией Вместо вы бы молча потеряли новые типовые ветки. Подробнее о выборе аннотаций — в разделе расширения 1С.

Шаг 4. Профиль, группа доступа и настройка пользователя

  1. Обновите конфигурацию базы данных (для расширения — примените его).
  2. В режиме предприятия создайте профиль групп доступа с ролью из шага 1 и группу доступа по этому профилю, добавьте в неё пользователей.
  3. Откройте карточку пользователя: по гиперссылке настройки открытия форм появится ваша форма. Установите флажок «открывать по умолчанию» и запишите.
  4. Перезапустите сеанс — форма откроется сразу после входа.

Вместо флажка можно использовать параметр запуска. Значение ключа ПараметрЗапуска передаётся через ключ командной строки /C, например в ярлыке:

bash
1cv8c.exe ENTERPRISE /S "srv-1c\erp" /C CustomWorkplace

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

Вариант с внешней обработкой

Бывает, что рабочее место меняется часто, а обновление базы проходит раз в неделю по регламенту. Тогда удобнее держать саму логику во внешней обработке в справочнике «Дополнительные отчёты и обработки», а обработка из расширения служит только «стартером»: находит внешнюю обработку, подключает её и открывает.

Договоримся о соглашении: имя объекта внешней обработки = имя обработки-стартера + суффикс _ВО, публикация — «Используется», основная форма называется Форма.

1С
#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	ИмяСтартера = РеквизитФормыВЗначение("Объект").Метаданные().Имя;
	ИмяВнешнейОбработки = ИмяСтартера + "_ВО";

	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ДопОбработки.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.ДополнительныеОтчетыИОбработки КАК ДопОбработки
		|ГДЕ
		|	ДопОбработки.ИмяОбъекта = &ИмяОбъекта
		|	И ДопОбработки.Публикация = ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется)
		|	И НЕ ДопОбработки.ПометкаУдаления";
	Запрос.УстановитьПараметр("ИмяОбъекта", ИмяВнешнейОбработки);

	Выборка = Запрос.Выполнить().Выбрать();
	Если Не Выборка.Следующий() Тогда
		// Внешняя обработка не загружена — форму-стартер не открываем.
		Отказ = Истина;
		Возврат;
	КонецЕсли;

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	// Открытие другой формы и закрытие текущей разносим по времени.
	ПодключитьОбработчикОжидания("ОткрытьВнешнююФорму", 0.1, Истина);

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ОткрытьВнешнююФорму()

	ОткрытьФорму("ВнешняяОбработка." + ИмяПодключеннойОбработки + ".Форма.Форма");
	Закрыть();

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

#КонецОбласти

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

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

Типичные ошибки

  • Опечатки и пробелы в строках имени формы и роли — механизм молча игнорирует такую форму.
  • Нет профиля с ролью — настройка в карточке пользователя не появляется.
  • Вместо вместо ИзменениеИКонтроль — после обновления пропадают новые типовые рабочие места.
  • Внешняя обработка не опубликована или помечена на удаление — стартер не находит её.
  • Тяжёлая логика в ПриСозданииНаСервере стартовой формы — вход в программу заметно замедляется у всех пользователей с этой ролью.

Если таких точек входа и рабочих мест несколько, их удобно собрать в одно расширение и сопровождать как отдельный продукт — это обычная часть доработки 1С и проектов внедрения 1С:ERP.

Коротко

  • В ERP есть готовый механизм автозапуска форм: перечисление, функция НастройкиФормы, роль и регистр пользовательских настроек.
  • Своя форма подключается в расширении: значение перечисления, ветка в НастройкиФормы через &ИзменениеИКонтроль, роль.
  • Пользователь включает автозапуск в своей карточке либо клиент запускается с параметром /C.
  • Для часто меняющихся рабочих мест удобна схема «стартер в расширении + внешняя обработка из справочника БСП».
  • Внимательно проверяйте строки с именами форм и ролей — ошибки в них не выдают сообщений.