Синхронные и асинхронные вызовы в 1С

 

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

Общая информация

Зачем это нужно?

Изначально расширения для работы с файлами и криптографией в веб-клиенте были реализованы по технологии NPAPI и работа с методами расширений была синхронной. Затем браузер Google Chrome отказался от поддержки этой технологии (полностью удалена в версии 45 от сентября 2015). Решением проблемы стал перевод расширений для работы с файлами и криптографией на асинхронные рельсы.

У конфигураций появилось новое свойство в разделе «Совместимость»:

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

А при использовании синхронных методов, там где это не разрешается, можно увидеть такое сообщение:

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

В чем разница?

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

При асинхронном подходе после вызова метода объекта управление возвращается вызывающему коду и его исполнение продолжается, параллельно с исполнением кода вызванного метода. При этом вызванный метод гарантирует, что оповестит о завершении своей работы «заинтересованное лицо», если такое оповещение требуется. Само оповещение осуществляется вызовом специального метода, который передается в вызываемый метод объекта. Асинхронный подход допустим только для тех методов, для которых заявлена поддержка асинхронной работы.

Названия асинхронных методов обычно начинаются со слов «Начать» (например, «ЭтоФайл» и «НачатьПроверкуЭтоФайл») или «Показать» (например, «Вопрос» и «ПоказатьВопрос»), это знание может помочь в поиске асинхронного аналога синхронного метода.

Напомню, что асинхронную технику можно использовать для работы с:

  • блокирующими окнами;
  • файлами;
  • расширением криптографии;
  • внешними компонентами.

Нужно отметить, что все асинхронные методы доступны только на стороне клиентского приложения. На сервере же по-прежнему доступны только синхронные методы (за исключением блокирующих окон — они на сервере вообще отсутствуют).

Соответствие синхронных методов асинхронным аналогам (на момент написания статьи) можно посмотреть тут.

 

Практические примеры

В качестве практических примеров рассмотрим работу с асинхронными методами и особенности работы в веб-клиенте. Работу с блокирующими окнами рассматривать не будем, так как про это у меня есть отдельная статья. Кроме это, напомню, что при переводе прикладных решений на асинхронный режим работы могут помочь инструменты рефакторинга, о которых также имеется отдельная статья.

Асинхронные методы

Рассмотрим на примере асинхронного метода глобального контекста — НачатьПоискФайлов.

Отдельно отмечу конструктор объекта ОписаниеОповещения — в синтаксис-помощнике все параметры этого конструктора указаны как необязательные (на момент написания статьи). Вообще-то так оно и есть — можно создать объект не указывая параметров, но если указано имя процедуры или имя процедуры обработки ошибки (параметры 1 и 4 в примере выше), то обязательно нужно указать модули этих процедур (параметры 2 и 5 в примере выше) иначе Вас ждет ошибка — «Конструктор не найден».

Особенности веб-клиента

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

Расширение для работы с 1С:Предприятием
Расширение для работы с 1С:Предприятием

И, наконец, в коде нужно указать нечто  подобное:

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

Установка расширения
Установка расширения

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

На этом все, надеюсь, что данная статья была Вам полезна.

Оценка статьи:
УжасноПлохоНеплохоХорошоОтлично (Пока оценок нет)
Загрузка...

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: