Как исправить потерю фокуса в форме подбора и отсутствие имени пользователя в блокировках после обновления платформы 1С 8.3

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей
← На главную

После перехода на новые релизы платформы 1С:Предприятие 8.3 (начиная с веток 8.3.25, 8.3.26 и выше) многие пользователи конфигураций на «обычных формах», таких как Управление торговлей 10.3, столкнулись с неприятными изменениями в поведении интерфейса. Наиболее критичными стали две проблемы: потеря фокуса ввода в окне подбора при использовании прикрепленных окон и исчезновение имени пользователя в системных сообщениях о блокировке объектов.

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

Почему теряется фокус ввода? Выясняем причину

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

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

Ситуация осложняется тем, что обновление на самый свежий релиз (например, 8.3.27) не всегда решает проблему, так как работа над ядром интерфейса продолжается, и «плавающие» баги кочуют из сборки в сборку.

Решение 1: Программная активация элемента управления

Если откат на старую версию платформы невозможен, нам придется прибегнуть к «костылизации» — ручному управлению фокусом через встроенный язык 1С. Рассмотрим, как это сделать в конфигурации УТ 10.3 или аналогичных.

Нам необходимо найти в форме подбора процедуру ОбработкаВыбора или то место, где закрывается окно ввода количества. После того как вспомогательная форма закрыта и данные переданы, мы должны принудительно сказать платформе, какой элемент сделать активным.

Посмотрим на пример кода, который нужно добавить в обработчик события подбора:


// В обработчике, который вызывается после ввода количества
Процедура ПриЗавершенииВводаКоличества(ДанныеВыбора, Параметры) Экспорт
    // ... ваш существующий код обработки данных ...
    
    // Принудительно возвращаем фокус на форму и список
    ЭтаФорма.Активизировать();
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.СправочникСписок;
КонецПроцедуры

Иногда простого указания ТекущийЭлемент недостаточно из-за особенностей прикрепленных окон. В таких случаях можно попробовать использовать метод Активизировать() для всей формы, чтобы операционная система вернула фокус окну 1С, а затем уже позиционироваться на конкретном табличном поле.

Решение 2: Изменение режима отображения окон

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

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

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

Проблема с именами пользователей в блокировках

Параллельно с фокусом разработчики столкнулись с тем, что сообщение «Объект редактируется...» перестало содержать ФИО заблокировавшего его сотрудника. Это признанная техническая ошибка платформы 8.3.25 и выше. Платформа перестала корректно передавать имя сеанса в стандартный системный диалог блокировки в клиент-серверном варианте.

Что мы можем сделать в этой ситуации:

Решение 3: Откат на стабильную ветку платформы

Если вышеописанные методы не помогают, а работа пользователей парализована, самым надежным решением остается использование «стабильной гавани». На текущий момент для конфигураций на обычных формах (УТ 10.3, УПП 1.3, КА 1.1) наиболее стабильными считаются:

  1. Ветка 8.3.24: Последние релизы этой ветки лишены радикальных изменений в оконной системе и работают корректно.
  2. Ранние сборки 8.3.25: До внедрения критических изменений в механизм фокуса.

Перед откатом платформы обязательно убедитесь, что ваша текущая конфигурация не требует обязательного наличия более высокого релиза (например, для работы с новыми механизмами маркировки или СФР, если они были внедрены в последнее время).

Проверка режима модальности

Выясним еще одну возможную причину. В свойствах корня конфигурации есть параметр «Режим использования модальных окон». В новых версиях платформы 1С настойчиво рекомендует уходить от модальности. Если ваша конфигурация все еще использует старый режим, это может входить в конфликт с новыми методами отрисовки интерфейса Windows в платформе 8.3.26/27.

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

Итоги и рекомендации

Подводя итог нашему разбору, можно составить следующий план действий для системного администратора или программиста 1С:

  1. Проверьте текущую сборку: Если у вас 8.3.26.1540, попробуйте обновиться до актуальной 8.3.27. Иногда это решает проблему блокировок, но редко помогает с фокусом.
  2. Внедрите программный возврат фокуса: Добавьте вызов ЭтаФорма.Активизировать() в формы подбора после закрытия диалогов.
  3. Инструктаж пользователей: Если фокус потерян, научите девушек нажимать Alt + Tab или один раз кликать мышкой в список — это временная мера, пока разработчики 1С не выпустят исправление ядра.
  4. Рассмотрите откат: Если стабильность интерфейса критичнее новых функций платформы, вернитесь на ветку 8.3.24.

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

← На главную