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

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

Как включить модальность в 1С: пошаговая инструкция

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

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

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

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

Что такое режим использования модальности и где он задаётся

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

Свойство находится в палитре свойств корневого узла конфигурации — того самого узла, который называется «Конфигурация» и стоит наверху дерева объектов. У свойства три возможных значения:

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

Пошаговое включение модальности в конфигураторе

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

Порядок действий
  1. 1
    Запустите конфигуратор и откройте конфигурацию: меню «Конфигурация» → «Открыть конфигурацию».
  2. 2
    Щёлкните правой кнопкой по корневому узлу дерева (строка с именем конфигурации) и выберите «Свойства».
  3. 3
    В палитре свойств найдите пункт «Режим использования модальности» — он расположен в группе «Совместимость».
  4. 4
    Установите значение «Использовать» (или «Использовать с предупреждениями» для поиска модальных вызовов).
  5. 5
    Сохраните конфигурацию (Ctrl+S) и обновите конфигурацию базы данных: «Конфигурация» → «Обновить конфигурацию базы данных».
  6. 6
    Перезапустите сеансы пользователей — изменение подхватывается при новом входе в базу.

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

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

Настройка для тонкого и веб-клиента

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

Веб-клиент и всплывающие окна

В веб-клиенте модальные диалоги могут блокироваться браузером как всплывающие окна. Признак проблемы: вместо окна вопроса пользователь видит значок заблокированного всплывающего окна в адресной строке, а операция прерывается. Решение — добавить адрес сервера 1С в исключения блокировщика всплывающих окон в настройках браузера.

Расширение для работы с файлами и криптографией

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

Альтернатива: отказ от модальности через асинхронный код

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

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

Сравнение вариантов

Включить «Использовать»

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

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

Переходный вариант: всё работает, а предупреждения в панели сообщений показывают места для переработки. Требует последующего анализа журнала.

Переписать на асинхронные методы

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

Проверка результата

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

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

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

Свойство конфигурации
Норма

В палитре свойств корня конфигурации стоит «Использовать» или «Использовать с предупреждениями», конфигурация БД обновлена

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

Свойство сброшено в «Не использовать» или обновление конфигурации БД не выполнялось

Сценарий с модальным вызовом
Норма

Окно вопроса/предупреждения открывается, после ответа код продолжает выполнение

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

Ошибка «Использование модальных окон запрещено» или молчаливое прерывание

Веб-клиент
Норма

Диалог отображается в браузере, нет значка заблокированного всплывающего окна

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

Браузер блокирует окно, в адресной строке появляется соответствующий значок

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

Типичные ошибки и ограничения

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

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

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

Как найти все модальные вызовы в коде

Если планируется постепенный отказ от модальности, сначала нужна карта проблемных мест. Самый простой способ — глобальный поиск по конфигурации (Ctrl+Shift+F в конфигураторе) по именам синхронных методов: Вопрос(, Предупреждение(, ВвестиЗначение, ВвестиСтроку, ВвестиЧисло, ВвестиДату, ОткрытьЗначение, ВыбратьИзСписка, ОткрытьФормуМодально.

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

FAQ

Где именно находится свойство «Режим использования модальности»?

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

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

Чаще всего не выполнено обновление конфигурации базы данных (F7 или меню «Конфигурация» → «Обновить конфигурацию базы данных») либо сеанс не перезапущен. Реже причина в веб-клиенте — браузер блокирует всплывающее окно, и нужно добавить адрес сервера в исключения.

Можно ли включить модальность только для одной обработки, не меняя конфигурацию?

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

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

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

Опасно ли включать модальность в рабочей базе?

Само по себе изменение свойства безопасно и обратимо, но оно требует монопольного доступа при обновлении конфигурации БД, то есть пользователей придётся попросить выйти. Перед изменением рекомендуется сделать резервную копию, особенно если одновременно меняется режим поддержки.

Работают ли модальные окна на сервере или в фоновых заданиях?

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

Итог

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

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