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

Администрирование · 9 мин

Режим использования модальности в 1С: что это и как настроить

Что такое режим использования модальности в 1С, где находится эта настройка, чем отличаются варианты «Использовать» и «Не использовать», и как исправить ошибки модальных окон.

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

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

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

Что такое модальные окна и почему от них отказались

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

Фирма «1С» перевела платформу на асинхронную модель: вместо вызова, который «зависает» до ответа, код вызывает метод ПоказатьВопрос() и передаёт в него описание оповещения — процедуру, которая выполнится, когда пользователь нажмёт кнопку. Такой подход одинаково работает в тонком, толстом и веб-клиенте.

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

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

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

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

Сравнение значений

Использовать

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

Использовать с предупреждениями

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

Не использовать

Целевой вариант для современных решений и веб-клиента. Требует переписывания синхронных вызовов на асинхронные.

Какую ошибку вызывает запрет модальности

Типичный симптом: после обновления платформы или при запуске через браузер пользователь видит сообщение вида «Использование модальных окон в данном режиме запрещено» либо «Модальные окна запрещены в данном режиме работы конфигурации». Ошибка возникает в момент вызова методов Вопрос(), Предупреждение(), ВвестиЗначение(), ОткрытьФормуМодально() и им подобных.

Есть два пути решения. Быстрый — разрешить модальность в свойствах конфигурации, если решение не планируется запускать в веб-клиенте. Правильный — заменить синхронные вызовы на асинхронные аналоги. Например, Вопрос("Продолжить?", РежимДиалогаВопрос.ДаНет) заменяется на ПоказатьВопрос(ОписаниеОповещения, "Продолжить?", РежимДиалогаВопрос.ДаНет), где обработка ответа переносится в отдельную процедуру.

Типичные ошибки
01
Включение режима «Использовать» в конфигурации, которая работает через веб-клиент — в браузере модальные вызовы всё равно завершатся ошибкой.
02
Частичная замена кода: разработчик исправил один вызов Вопрос(), но пропустил ОткрытьФормуМодально() в другом модуле — ошибка всплывёт у пользователя.
03
Изменение свойства без проверки расширений: код в расширении конфигурации тоже может содержать модальные вызовы.

Как проверить конфигурацию на модальные вызовы

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

Дополнительно можно выполнить глобальный поиск по текстам модулей по ключевым словам: Вопрос(, Предупреждение(, ВвестиЗначение, ОткрытьФормуМодально, ОткрытьЗначение. Это поможет оценить объём работ, особенно в самописных и сильно доработанных конфигурациях.

Порядок перевода конфигурации на запрет модальности
  1. 1
    Сделайте резервную копию информационной базы или выгрузку cf.
  2. 2
    Запустите проверку конфигурации с контролем модальных и синхронных вызовов, сохраните список проблемных мест.
  3. 3
    Замените синхронные методы на асинхронные аналоги с описаниями оповещений.
  4. 4
    Установите в свойствах конфигурации режим «Не использовать».
  5. 5
    Протестируйте ключевые сценарии в тонком и веб-клиенте: проведение документов, печать, обмены.

Когда какой режим выбирать

Если у вас типовая современная конфигурация (актуальные редакции «Управление торговлей», «Бухгалтерия предприятия», «Зарплата и управление персоналом»), режим уже настроен поставщиком, и менять его не требуется — вмешательство может нарушить поддержку и обновление.

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

Маршрут решения

Как выбрать действие

Ошибка модальности у пользователя, база работает только в тонком клиентеУстановите режим «Использовать» в свойствах конфигурации — быстрое восстановление работы.
База публикуется на веб-сервере или планируется переход в браузерПерепишите синхронные вызовы на асинхронные и установите «Не использовать».
Временно нужно и работать, и видеть проблемные местаИспользуйте «Использовать с предупреждениями» на период миграции.
Конфигурация типовая и на поддержкеНе меняйте режим самостоятельно — значение задано поставщиком.

Ограничения и риски самостоятельной настройки

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

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

FAQ

Чем «Режим использования модальности» отличается от «Режима использования синхронных вызовов»?

Это два разных свойства конфигурации. Первое управляет модальными окнами, второе — синхронными обращениями к файловой системе и внешним компонентам. Для полноценной работы в веб-клиенте оба должны быть настроены на отказ от устаревших механизмов.

Почему ошибка о модальных окнах появилась после обновления платформы?

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

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

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

Что делать, если модальный вызов находится в закрытом модуле поставщика?

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

Влияет ли режим модальности на производительность?

Нет, это настройка совместимости, а не оптимизации. На скорость работы она не влияет; её назначение — определить, какие программные интерфейсы доступны коду конфигурации.

Итог

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

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