Исправляем: “Использование синхронных методов на клиенте запрещено”

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

При загрузке столкнулся со следующей ошибкой ‘Использование синхронных методов на клиенте запрещено! в тонком клиенте:

Использование синхронных методов на клиенте запрещено!
Использование синхронных методов на клиенте запрещено!

Здесь важно понимать что синхронные методы – это те методы, которые блокируют выполнения кода до момента завершения вызванного действия (метода), а асинхронные наоборот – позволяют коду выполняться дальше, при этом остается контроль за выполнением вызванного действия и дальнейшие его обработкой.

К пример в данном случае выбор файла был произведен через асинхронный метод (прочитайте в справке про особенность метода ‘НачатьПомещениеФайла’):

А вот уже при проверке файла у нас возникает ошибка из-за синхронного метода (‘Файл.Существует()’):

Что бы исправить данную ошибку можно воспользоваться несколькими вариантами решения. Можем изменить свойство конфигурации ‘Режим использования синхронных вызовов расширений платформы и внешних компонент’:

Режим использования синхронных вызовов расширений платформы и внешних компонент.
Режим использования синхронных вызовов расширений платформы и внешних компонент.

Либо не меняя конфигурацию просто закомментировать проблемный код (просто останемся без ненужной нам проверки):

И все – загрузка будет работать как часы! Можно при желании пойти еще дальше и переписать код проверки файла на асинхронный метод ‘НачатьПроверкуСуществования’:

Всегда ищете несколько вариантов решений и используйте лучший! Всем удачи! Пока!

Так же прилагаю исправленную обработку, что бы в следующий раз снова не пришлось исправлять код. Качайте на здоровье!

Скачать файлыcraft1c_Vygruzka-i-zagruzka-dannyh-XML_IspravlenaOshibkaZagruzki.epf

2+

Оставить комментарий

Ваш адрес email не будет опубликован.