Для работы с объектами, реализующими функциональность определенного рода (работа с файлами, блокирующие окна, внешние компоненты и криптография), существует два метода работы — синхронный и асинхронный. В этой статье я попробую рассказать о том, что это за методы, для чего они нужны и как с этим работать.
Общая информация
Зачем это нужно?
Изначально расширения для работы с файлами и криптографией в веб-клиенте были реализованы по технологии NPAPI и работа с методами расширений была синхронной. Затем браузер Google Chrome отказался от поддержки этой технологии (полностью удалена в версии 45 от сентября 2015). Решением проблемы стал перевод расширений для работы с файлами и криптографией на асинхронные рельсы.
У конфигураций появилось новое свойство в разделе «Совместимость»:
А при использовании синхронных методов, там где это не разрешается, можно увидеть такое сообщение:
В чем разница?
В синхронном подходе при вызове какого-либо метода объекта управление передается этому методу, а вызвавший его код приостанавливается и терпеливо дожидается завершения работы метода (со всеми вложенными вызовами). Нужно отметить, что все процедуры и функции встроенного языка работают как синхронные вызовы.
При асинхронном подходе после вызова метода объекта управление возвращается вызывающему коду и его исполнение продолжается, параллельно с исполнением кода вызванного метода. При этом вызванный метод гарантирует, что оповестит о завершении своей работы «заинтересованное лицо», если такое оповещение требуется. Само оповещение осуществляется вызовом специального метода, который передается в вызываемый метод объекта. Асинхронный подход допустим только для тех методов, для которых заявлена поддержка асинхронной работы.
Названия асинхронных методов обычно начинаются со слов «Начать» (например, «ЭтоФайл» и «НачатьПроверкуЭтоФайл») или «Показать» (например, «Вопрос» и «ПоказатьВопрос»), это знание может помочь в поиске асинхронного аналога синхронного метода.
Напомню, что асинхронную технику можно использовать для работы с:
- блокирующими окнами;
- файлами;
- расширением криптографии;
- внешними компонентами.
Нужно отметить, что все асинхронные методы доступны только на стороне клиентского приложения. На сервере же по-прежнему доступны только синхронные методы (за исключением блокирующих окон — они на сервере вообще отсутствуют).
Соответствие синхронных методов асинхронным аналогам (на момент написания статьи) можно посмотреть тут.
Практические примеры
В качестве практических примеров рассмотрим работу с асинхронными методами и особенности работы в веб-клиенте. Работу с блокирующими окнами рассматривать не будем, так как про это у меня есть отдельная статья. Кроме это, напомню, что при переводе прикладных решений на асинхронный режим работы могут помочь инструменты рефакторинга, о которых также имеется отдельная статья.
Асинхронные методы
Рассмотрим на примере асинхронного метода глобального контекста — НачатьПоискФайлов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | &НаКлиенте Процедура АсинхронныеМетоды() ОбратныйВызов = Новый ОписаниеОповещения("ОбработкаЗавершения", ЭтотОбъект, "доп. параметры", "ОбработкаОшибки", ЭтотОбъект); //поищем файлы в папке tmp НачатьПоискФайлов(ОбратныйВызов, "D:\tmp", "*.*"); КонецПроцедуры &НаКлиенте Процедура ОбработкаЗавершения(НайденныеФайлы, ДополнительныеПараметры) Экспорт //выводим список найденых файлов Для Каждого Файл Из НайденныеФайлы Цикл Сообщить(Файл.ПолноеИмя); КонецЦикла; //дополнительный параметр указанный в описании оповещения Сообщить(ДополнительныеПараметры); КонецПроцедуры &НаКлиенте Процедура ОбработкаОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт Сообщить("Ошибка поиска файлов: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); Сообщить(ДополнительныеПараметры); КонецПроцедуры |
Отдельно отмечу конструктор объекта ОписаниеОповещения — в синтаксис-помощнике все параметры этого конструктора указаны как необязательные (на момент написания статьи). Вообще-то так оно и есть — можно создать объект не указывая параметров, но если указано имя процедуры или имя процедуры обработки ошибки (параметры 1 и 4 в примере выше), то обязательно нужно указать модули этих процедур (параметры 2 и 5 в примере выше) иначе Вас ждет ошибка — «Конструктор не найден».
Особенности веб-клиента
К особенностям работы в веб-клиенте относится необходимость настройки браузера. Кроме этого требуется установить расширение для работы с 1С:Предприятием (адрес на момент написания статьи), после установки этого расширения рекомендую перезапустить браузер и 1С (на всякий случай).
И, наконец, в коде нужно указать нечто подобное:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | &НаКлиенте Процедура ОсобенностиВебКлиента() #Если ВебКлиент Тогда ОбратныйВызов = Новый ОписаниеОповещения("РасширениеПодключено", ЭтотОбъект); НачатьПодключениеРасширенияРаботыСКриптографией(ОВ); //НачатьПодключениеРасширенияРаботыСФайлами(ОВ); #КонецЕсли КонецПроцедуры &НаКлиенте Процедура РасширениеПодключено(Подключено, ДополнительныеПараметры) Экспорт Если НЕ Подключено Тогда НачатьУстановкуРасширенияРаботыСКриптографией(Неопределено); //НачатьУстановкуРасширенияРаботыСФайлами(Неопределено); КонецЕсли; КонецПроцедуры |
В первый раз (для каждого пользователя локальной машины) сработает процедура установки и появится вот такое окно:
Затем скачается файл, который нужно будет запустить и установить расширение, после этого все должно работать так же как и на толстом/тонком клиенте.
На этом все, надеюсь, что данная статья была Вам полезна.
Загрузка...
ОбратныйВызов = Новый ОписаниеОповещения(«РасширениеПодключено», ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСКриптографией(ОВ);
//НачатьПодключениеРасширенияРаботыСФайлами(ОВ);
ОВ это ОбратныйВызов?
Под ключ — от фундамента до заселения https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img_20230412_161645_824
На стоимость строительства также влияют используемые для возведения и отделки материалы https://красивые-дома-приморья.рф/vypolnennye-proekty/album/proekt-kdp-b-99
Наиболее востребованные:
Прежде чем начинать обустройство фундамента, нужно провести изыскательные работы на участке https://красивые-дома-приморья.рф/vypolnennye-proekty/album/uzkij-dom-152-m2-vladivostok-iyun-2023-g/p/1
Это необходимо для определения ландшафта, наличия и глубины залегания грунтовых вод и других особенностей, которые могут повлиять на сроки эксплуатации будущего здания и безопасность проживания в нем https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/576317107
Место под фундамент тщательно расчищается, выравнивается, а далее обязательно делается разметка согласно проекту с помощью шнуров и колышек https://красивые-дома-приморья.рф/kdp-111
Строительство доступных домов во Владивостоке и Приморском крае https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img_20220520_200525_143
Подготовим проекты для построек разных размеров и этажности, которые обеспечат комфорт владельцам https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img-20230724-wa0146
Бригада мастеров выполнит строительство домов и коттеджей https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img-20230723-wa0065
г https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img-20230724-wa0197
Уссурийск, ул https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img_20230528_183202_837
Кузнечная, д https://красивые-дома-приморья.рф/vypolnennye-proekty
14 п https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img_20211113_143244_265
Угловое, ул https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img_20211010_141233_267
Гагарина, 90 https://красивые-дома-приморья.рф/vypolnennye-proekty/photo/img_20220614_142611_733