Если вы ищете, как сделать так, чтобы при старте 1С автоматически открывалась нужная форма (например, АРМ заказ-наряды) или форма списка с готовым отбором, то базовая идея одна: в управляемом приложении это делается через модуль управляемого приложения и/или настройки функциональных панелей, а внутри самой формы - через механизм отборов динамического списка.

Ниже разложу по полочкам рабочие варианты, чтобы вы не тратили время на “переменная не определена” и на ситуации, когда платформа “не видит” нужный объект.


Что именно можно открывать при старте 1С

Обычно хотят одно из двух:

Задача Что открывают Где настраивается
“У пользователя при запуске открывается нужный АРМ/рабочее место” функциональная панель + закрепленное АРМ настройки функциональных панелей (звездочка - назначить АРМ по умолчанию)
“При старте сразу показать форму/список с отбором” конкретная управляемая форма (форма списка, форма выбора) программно - через ПриНачалеРаботыСистемы() в модуле управляемого приложения, либо через открытие формы из клиентского контекста, если нужно учитывать доступность

Вариант 1. Назначить АРМ по умолчанию (без кода)

Это самый “правильный” и быстрый путь, когда вам нужно именно при входе открыть нужное рабочее место.

Логика простая: в настройке функциональной панели у каждого пользователя (или роли) можно назначить АРМ по умолчанию.

Что делают обычно:
- открывают настройку функциональной панели;
- выбирают нужное АРМ;
- нажимают на звездочку “Назначить АРМ по умолчанию”;
- при запуске функциональная панель стартует с нужным АРМ.

Это встречается и в реальных кейсах пользователей: в демо базе, где у администратора открывается несколько разделов сразу, аналогично можно закреплять один АРМ для конкретного сценария.


Вариант 2. Программно открыть форму при старте через ПриНачалеРаботыСистемы

Когда нужна не просто “панель”, а именно открытие произвольной формы/списка/обработки сразу после старта, в управляемом приложении используйте модуль управляемого приложения.

Куда писать код

В модуле управляемого приложения (не в обычном модуле):

  • ПриНачалеРаботыСистемы()
  • ПередНачаломРаботыСистемы()

И важно: в управляемом приложении эти точки живут в контексте, где корректно использовать доступные механизмы платформы.

Встречающаяся ошибка “переменная не определена (Обработки)” появляется, когда пытаются обратиться к объектам метаданных из места, где нет нужного контекста (например, на сервере в момент, когда ожидается клиентская переменная/контекст).

Правильный подход: открывать через имя формы (управляемая форма)

В управляемом приложении для открытия формы обычно используют вызов вида ОткрытьФорму(...) (в нужном контексте). Ключевые моменты:

  • имя формы должно быть составлено корректно;
  • работать нужно с управляемыми формами;
  • иногда “из сервера” удобнее инициировать открытие так, чтобы реальное открытие шло из подходящего клиентского контекста (зависит от платформы/версии конфигурации).

Пример концепции (упрощенно):

&НаКлиенте
Процедура ОткрытьНужнуюФорму()
    ОткрытьФорму("ИмяФормы");
КонецПроцедуры

&НаСервере
Процедура ПриНачалеРаботыСистемы(Отказ, СтандартнаяОбработка)
    // Здесь логика подготовки. Открытие - через клиентский вызов.
    // Конкретный способ инициирования зависит от вашей платформы/обработчика.
КонецПроцедуры

Как понять, почему “ничего не видит”

Чаще всего причины такие:
- форма не управляемая или задано не то имя стандартной формы;
- указали имя в стиле, который подходит не для вашего типа (внешняя/внутренняя обработка);
- открытие выполняется там, где нет клиентского контекста (типичная причина того, что на сервере “нет Обработки....”);
- неправильная строка пути к форме: платформа строго требует корректный путь по метаданным.

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

Источник: документация 1С по ОткрытьФорму (Global context.OpenForm / ОткрытьФорму).
https://its.1c.ru/db/content/v8std/src/1%C2%A0200/700/i8100404.htm


Вариант 3. Открыть форму списка с заранее заданным отбором (данные + отбор)

Самая частая прикладная история: “хочу, чтобы пользователю открывался список, но сразу отфильтрованный”. В управляемом интерфейсе это делается через отбор динамического списка.

Ключевой момент: отбор работает нормально там, где основной реквизит формы - Динамический список.

Способ первый: передать отбор параметром при открытии формы

Это самый простой сценарий, когда отбор задается “по полю = значение”.

&НаКлиенте
Процедура ОткрытьСписокПоставщиков(Команда)
    ЗначениеОтбора = Новый Структура("ЭтоПоставщик", Истина);
    ПараметрыФормы = Новый Структура("Отбор", ЗначениеОтбора);
    ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", ПараметрыФормы);
КонецПроцедуры

Если нужно несколько условий:

&НаКлиенте
Процедура ОткрытьСписокМосковскихПоставщиков(Команда)
    ЗначениеОтбора = Новый Структура;
    ЗначениеОтбора.Вставить("ЭтоПоставщик", Истина);
    ЗначениеОтбора.Вставить("Город", "Москва");

    ПараметрыФормы = Новый Структура("Отбор", ЗначениеОтбора);
    ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", ПараметрыФормы);
КонецПроцедуры

Что важно проверить:
- имя поля в структуре должно совпадать с полем динамического списка;
- условия зависят от того, что именно умеет поддерживать конкретный тип отбора;
- регистр/точность имени могут критично сказаться.

Способ второй: фиксировать отбор через настройки компоновки данных

Если простого “равно” мало, вы формируете НастройкиКомпоновкиДанных и отдаете их форме через параметры (часто используют ключ ФиксированныеНастройки).

Конструкция обычно такая:
- собираете элементы отбора компоновки данных;
- указываете Использование = Истина;
- можете ограничить изменение пользователем (например, сделать недоступным);
- передаете в форму фиксированные настройки.

Логика по смыслу хорошо описана в практических материалах по “программному открытию форм списка с отбором” (например, публикации, где разбираются способы через параметр “Отбор”, через элементы компоновки и через ПриСозданииНаСервере).

Одна из таких статей:
https://moscowsoft.com/statii/programmirovanie_na_1s_predpriyatie/otkryt_formu_spiska_1s_programmno_s_otborom/

Способ третий: проставить отбор внутри формы в ПриСозданииНаСервере

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

Схема:
- при открытии передаете параметр (например, ОтборПоСтатусу);
- внутри формы в ПриСозданииНаСервере проверяете параметр;
- добавляете элемент отбора в Список.Отбор.Элементы.

Этим способом удобно, когда формат отбора сложнее и хочется держать логику ближе к форме.


Типовые ошибки при “настройках открытия форм” и как их избежать

Проблема Почему так происходит Как исправить
“переменная не определена (Обработки)” при попытке открыть обработку/форму в ПриНачалеРаботыСистемы нет нужного контекста (сервер/клиент), неверный способ доступа к объекту открывать управляемую форму корректным способом через ОткрытьФорму и правильное имя; если нужно - разделить серверную “инициацию” и клиентское “открытие”
Форма открывается, но “всё пусто” или отбор не применяется имя поля отбора не совпало с полем динамического списка; ключ параметров отборов неверный проверить имена полей, ключи параметров (например, “Отбор” или “ФиксированныеНастройки”), убедиться, что основа формы - Динамический список
Пользователь может поменять отбор (или наоборот, ему недоступно то, что нужно) режим отображения/доступности элемента отбора настроен неверно задавать нужный режим отображения (например, если цель - фиксировать отбор)
“ничего не видит” нужную форму после ОткрытьФорму("Обработки...") указано не то имя/путь, или форма не управляемая/не соответствует формату имени использовать корректный путь к метаданным формы и стандартные имена форм; свериться с формальными правилами для ОткрытьФорму

Практическая схема под вашу задачу (коротко)

Что вы хотите получить Самый простой рабочий вариант
Пользователь при старте открывает нужный АРМ (заказ-наряды) назначить АРМ по умолчанию на функциональной панели (звездочка)
При старте открывается конкретный список, сразу с фильтром открыть форму списка и передать отбор параметром “Отбор” (если подходит), либо ФиксированныеНастройки
При старте нужно “рандомно” открыть форму/обработку через ПриНачалеРаботыСистемы, но открытие делать корректно для управляемых форм и подходящего контекста (и не пытаться обращаться к объектам, которых в данном контексте нет)

Нормативная база по методу открытия форм

Для программного открытия управляемых форм ключевой ориентир - описание метода ОткрытьФорму в документации 1С (глобальный контекст, синтаксис “по названию”, требования к имени и поведению).
https://its.1c.ru/db/content/v8std/src/1%C2%A0200/700/i8100404.htm


Если резюмировать одним предложением: АРМ на старте закрепляйте настройками функциональной панели, а “отбор при открытии” задавайте через параметры динамического списка (данные + отбор), либо применяйте фиксированные настройки компоновки, а программное открытие формы запускайте из правильного контекста через точки модуля управляемого приложения.