Использование синхронных вызовов запрещено в 1С 8.3 — Полное руководство
- Исключение:
Использование синхронных вызовов расширений работы с файлами / диалогов запрещено. - Сбой при вызове
Вопрос(),Предупреждение(),ОткрытьЗначение(),ЗапуститьПриложение(). - Невозможность запуска конфигурации в веб-клиенте или тонком клиенте без модальности.
1. Переход на асинхронные функции с ключевым словом Асинх / Ждать
Начиная с платформы 8.3.18, рекомендуется использовать современный асинхронный синтаксис Асинх / Ждать:
&НаКлиенте
Асинх Процедура УдалитьЗаписьАсинх()
Ответ = Ждать ВопросАсинх("Вы действительно хотите удалить документ?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
Ждать УдалитьНаСервереАсинх();
Сообщить("Объект успешно удален");
КонецЕсли;
КонецПроцедуры2. Использование ОписанияОповещения (для совместимости со старыми релизами)
Для версий платформы ниже 8.3.18 используйте колбэки через ОписаниеОповещения:
&НаКлиенте
Процедура ЗапроситьПодтверждение()
Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Провести документ?", РежимДиалогаВопрос.ОКОтмена);
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопрос(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.ОК Тогда
// Выполнение целевого действия
КонецЕсли;
КонецПроцедуры3. Временное отключение проверки в свойствах конфигурации
Если требуется запустить устаревший код без рефакторинга (не рекомендуется для Web):
- Откройте корень конфигурации в Конфигураторе.
- Установите свойство Режим использования модальности в значение
Использовать. - Установите свойство Режим использования синхронных вызовов расширений платформы и внешних компонент в значение
Использовать.
Частые вопросы (FAQ)
Зачем 1С запретила синхронные вызовы?
Синхронные вызовы блокируют поток выполнения JavaScript в браузерах при работе через Веб-клиент, а также снижают отзывчивость интерфейса Тонкого клиента в мобильных и облачных средах (1cfresh).
Чем заменить синхронный метод ЗапуститьПриложение()?
Используйте метод НачатьЗапускПриложения() с объектом ОписаниеОповещения или конструкцию Ждать ЗапуститьПриложениеАсинх().
Как работать с диалогом выбора файла без синхронных вызовов?
Создайте ДиалогВыбораФайлов и вызовите Показать() с указанием ОписанияОповещения, либо используйте Ждать Диалог.ВыбратьАсинх().
Влияет ли режим синхронных вызовов на производительность сервера?
Напрямую на сервер не влияет, так как эти ограничения касаются клиентских интерфейсных потоков и взаимодействия с внешними библиотеками на клиенте.