В процессе разработки на управляемых формах разработчики часто сталкиваются с ситуацией, когда при открытии карточки справочника или документа вся система «замирает», не позволяя пользователю взаимодействовать с остальными окнами программы. Давайте разберемся, почему это происходит и как настроить поведение интерфейса в соответствии с задачами вашего проекта.
В управляемом интерфейсе 1С по умолчанию многие формы открываются в модальном или псевдомодальном режиме. Это означает, что открытое окно становится «главным» в фокусе, а доступ к другим элементам управления, кнопкам или спискам в других вкладках блокируется до тех пор, пока текущая форма не будет закрыта. Это стандартное поведение платформы, призванное защитить данные от несогласованного изменения, однако в современных нетленках (самописных конфигурациях) оно часто мешает эффективной многозадачной работе.
Решением данной проблемы является изменение свойства Режим открытия окна в конфигураторе. Давайте пройдем по шагам и настроим форму правильно:
Режим открытия окна.Блокировать весь интерфейс или Блокировать владельца. Измените его на Независимый.Чтобы лучше понимать, как именно будет вести себя интерфейс, рассмотрим три основных режима, которые предлагает платформа 1С:
При использовании Независимого режима открытия окон важно учитывать один нюанс. Поскольку интерфейс больше не блокирует основные формы, вы можете столкнуться с ситуацией, когда данные в одном окне были изменены, а в другом — остались старыми. Чтобы поддерживать актуальность информации, рекомендуется использовать механизм оповещений. Для этого в коде 1С применяются методы Оповестить() и ОбработкаОповещения().
Рассмотрим пример того, как можно уведомить другие формы об изменении данных:
// В форме, где данные были изменены:
Процедура ПослеЗаписи(ОбъектКопирования)
Оповестить("ЗаписьЭлемента", Объект.Ссылка);
КонецПроцедуры
// В форме, где нужно обновить данные:
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗаписьЭлемента" Тогда
// Выполняем обновление данных формы
Прочитать();
КонецЕсли;
КонецПроцедуры
Используя этот подход, вы сможете сделать работу в вашей нетленке максимально удобной, при этом сохранив целостность данных в открытых карточках. Настройка свойства Режим открытия окна — это простая, но крайне эффективная мера по улучшению эргономики вашего прикладного решения.