К статье
Практический материал

Разработка и Конфигурация · 11 мин

Активизировать при открытии в 1С: что это и как настроить

Что означает свойство «Активизировать при открытии» в 1С, где оно используется, как настроить активный элемент формы при запуске и решить типичные проблемы.

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

Такая настройка экономит секунды на каждом документе, но при массовом вводе данных — например, при оформлении сотен накладных в день или при работе оператора на кассе — суммарная экономия времени становится ощутимой. Кроме того, правильно выбранный активный элемент снижает количество ошибок: пользователь не начинает ввод «не туда» и не оставляет обязательные поля пустыми.

Свойство встречается в двух контекстах. Во-первых, это штатная настройка в конфигураторе и в режиме «Изменить форму» — доступна администраторам и разработчикам. Во-вторых, активизацию можно выполнить программно из кода на встроенном языке через метод Активизировать или свойство ТекущийЭлемент формы. Ниже разберём оба подхода, ограничения и типичные ошибки.

Где находится свойство и как оно работает

В управляемых формах свойство «Активизировать при открытии» есть у элементов, способных принимать фокус: полей ввода, табличных частей, таблиц значений. Найти его можно в палитре свойств элемента формы в конфигураторе — оно расположено в группе «Использование». Если установить значение «Истина», платформа при открытии формы попытается передать фокус именно этому элементу.

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

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

Настройка в конфигураторе для разработчика

Штатный путь настройки — через конфигуратор. Откройте нужную форму объекта (документа, справочника, обработки), выделите элемент, который должен получать фокус, и в палитре свойств найдите «Активизировать при открытии». Установите значение «Истина» и сохраните форму.

Затем обязательно пройдитесь по остальным элементам формы и убедитесь, что флажок не установлен где-то ещё. Особенно это актуально для форм, доставшихся «в наследство» от типовой конфигурации или другого разработчика: там нередко фокус уже назначен, и новый флажок вступает в конфликт со старым.

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

Настройка в конфигураторе
  1. 1
    Откройте конфигуратор и найдите нужную форму объекта
  2. 2
    Выделите элемент, который должен получать фокус
  3. 3
    В палитре свойств установите «Активизировать при открытии» = Истина
  4. 4
    Проверьте остальные элементы и снимите лишние флажки
  5. 5
    Обновите конфигурацию базы данных и проверьте в режиме предприятия

Настройка через «Изменить форму» без конфигуратора

В большинстве типовых конфигураций на управляемых формах пользователь с достаточными правами может настроить форму прямо в режиме предприятия. Для этого в открытой форме выберите «Ещё» → «Изменить форму». В открывшемся дереве элементов найдите нужное поле, откройте его свойства и установите флажок «Активизировать при открытии».

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

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

Программная активизация из кода

Когда статического свойства недостаточно, фокус назначают программно. Типичный сценарий — в обработчике ПриОткрытии формы установить свойство ТекущийЭлемент:

&НаКлиенте

Процедура ПриОткрытии(Отказ)

Если Объект.Ссылка.Пустая() Тогда

ТекущийЭлемент = Элементы.Комментарий;

Иначе

ТекущийЭлемент = Элементы.Товары;

КонецЕсли;

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

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

У программного способа есть нюансы. Присваивать ТекущийЭлемент можно только в клиентском контексте — в серверных обработчиках (ПриСозданииНаСервере) это свойство недоступно для установки. Кроме того, если элемент в момент открытия недоступен (например, скрыт функциональной опцией или отключена видимость), попытка активизации завершится ошибкой или будет проигнорирована. Поэтому перед установкой фокуса стоит проверять видимость и доступность элемента.

Ещё один рабочий приём — метод Активизировать() у элемента формы: Элементы.Товары.Активизировать(). Он полезен не только при открытии, но и в середине работы: например, после обработки вопроса пользователю вернуть фокус в поле сканирования штрихкода.

bsl
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Если Элементы.Номенклатура.Видимость Тогда
		ТекущийЭлемент = Элементы.Номенклатура;
	КонецЕсли;
КонецПроцедуры

Типичные сценарии применения

Наиболее востребована активизация в рабочих местах с потоковым вводом. На кассе или в торговом зале фокус ставят на поле поиска товара или сканирования штрихкода — кассир открывает чек и сразу сканирует, не касаясь мыши. В документах поступления и реализации часто активизируют табличную часть «Товары», чтобы оператор сразу добавлял строки.

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

Для форм с обязательными полями активизация работает как подсказка: курсор показывает, с чего начать. Это снижает число ситуаций, когда пользователь нажимает «Записать» и получает сообщение о незаполненном поле, которое он просто не заметил.

Способы назначить фокус

Свойство в конфигураторе

Постоянное решение для всех пользователей; требует обновления конфигурации и прав на доработку

«Изменить форму» в режиме предприятия

Быстро и без конфигуратора, но действует только для текущего пользователя и может сброситься

Программно через ТекущийЭлемент

Гибко, позволяет условия и логику; требует кода и проверки видимости элемента

Почему активизация не срабатывает и что проверить

Самая частая причина — конфликт нескольких элементов с установленным флажком. Проверьте всю форму, включая элементы на других вкладках: флажок мог остаться у поля, которое давно скрыто или перенесено. Второй типовой случай — элемент недоступен в момент открытия: видимость управляется функциональной опцией, правами или кодом, и платформа не может передать ему фокус.

Третья группа причин — программное переопределение. Если в обработчиках ПриОткрытии или ПослеЗаписи есть код, устанавливающий ТекущийЭлемент, он перекроет статическую настройку. Также фокус может «съезжать» после автоматических действий формы: открытия диалога, вывода предупреждения, подстановки значения по умолчанию с вызовом обработчика выбора.

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

Типичные ошибки
01
Флажок установлен у нескольких элементов — фокус уходит не туда, куда ожидали
02
Активизируется скрытый или недоступный элемент — платформа игнорирует настройку
03
Программная установка ТекущийЭлемент в серверном обработчике — код не выполняется или выдаёт ошибку
04
Настройка сделана через «Изменить форму» и пропала после обновления конфигурации
05
Проверка только на создании нового объекта — при открытии существующего фокус ведёт себя иначе

Порядок проверки результата

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

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

Контрольные точки

Как проверить результат

Курсор при открытии формы
Норма

Курсор стоит в нужном поле, ввод сразу попадает в него

Тревожный признак

Фокус на другом элементе или отсутствует вовсе

Ввод со сканера штрихкодов
Норма

Штрихкод попадает в активное поле без щелчка мышью

Тревожный признак

Сканирование игнорируется или попадает не туда

Открытие существующего объекта
Норма

Фокус соответствует задуманному сценарию

Тревожный признак

Поведение отличается от режима создания без причины

Итог

Что важно запомнить

«Активизировать при открытии» определяет, какой элемент формы получит фокус при запуске. Настройка делается в конфигураторе, через «Изменить форму» или программно через ТекущийЭлемент. Активным может быть только один элемент, он должен быть видимым и доступным, а результат нужно проверять во всех сценариях открытия формы.

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

Можно ли активизировать сразу два поля при открытии?

Нет, фокус ввода всегда один. Если флажок установлен у нескольких элементов, платформа выберет один из них по порядку обхода формы. Для сложных сценариев используйте программную установку ТекущийЭлемент с условиями.

Почему настройка пропала после обновления конфигурации?

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

Как активизировать табличную часть документа?

У таблицы формы есть то же свойство «Активизировать при открытии» — установите его в конфигураторе. Программно используйте ТекущийЭлемент = Элементы.Товары в обработчике ПриОткрытии. После активизации таблицы пользователь может сразу добавлять строки клавишей Insert.

ТекущийЭлемент не устанавливается в ПриСозданииНаСервере — почему?

Свойство ТекущийЭлемент доступно для установки только на клиенте, потому что фокус — это состояние интерфейса пользователя. Перенесите установку в клиентский обработчик ПриОткрытии и перед установкой проверьте видимость и доступность элемента.

Фокус стоит в поле, но сканер штрихкодов не вводит данные. Что делать?

Проверьте, что поле доступно для редактирования (не «Только просмотр»), а сама форма не заблокирована открытым диалогом. Также убедитесь, что после автоматических действий при открытии фокус не перехватывается другим элементом — добавьте Активизировать() в конец обработчика ПриОткрытии.

Можно ли активизировать поле поиска в динамическом списке?

Да. Если на форме списка есть поле строки поиска, установите у него свойство «Активизировать при открытии» или назначьте его текущим элементом программно. Пользователь откроет список и сразу начнёт набирать текст поиска без лишних щелчков.