Почему карточки элементов в 1С открываются с блокировкой всего интерфейса и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Понимание проблемы: режим модальности

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

Как изменить режим открытия окна

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

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

Разбор вариантов настройки

Чтобы лучше понимать, как именно будет вести себя интерфейс, рассмотрим три основных режима, которые предлагает платформа 1С:

Технические аспекты работы с формами

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

Рассмотрим пример того, как можно уведомить другие формы об изменении данных:


// В форме, где данные были изменены:
Процедура ПослеЗаписи(ОбъектКопирования)
    Оповестить("ЗаписьЭлемента", Объект.Ссылка);
КонецПроцедуры

// В форме, где нужно обновить данные:
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия = "ЗаписьЭлемента" Тогда
        // Выполняем обновление данных формы
        Прочитать();
    КонецЕсли;
КонецПроцедуры

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

← На главную