Під час розробки прикладних рішень часто виникає ситуація, коли потрібно виконати взаємодію з користувачем, не блокуючи виконання клієнтського коду в очікуванні відповіді. Для таких задач платформа має асинхронні методи глобального контексту, у яких після завершення результат передається до заздалегідь прописаної спеціальної процедури зворотного виклику (оповіщення).
Однією із процедур, що використовує цей механізм є процедура глобального контексту «ПоказатьВопрос()». Вона дозволяє відкрити діалогове вікно з питанням, після чого виконання поточної процедури продовжується. Обробка отриманого результату виконується після завершення взаємодії з користувачем. Процедура, яка викликається після відповіді, задається за допомогою параметру «ОписаниеОповещенияОЗавершении» з типом «ОписаниеОповещения».
Загалом об’єкт «ОписаниеОповещения» являється одним з ключових елементів асинхронного програмування. Одними із напрямків де він використовується є:
– діалоги з користувачем;
– робота с файловою системою;
– відкриття форм і вибір значень;
– підключення зовнішніх компонент і обладнання.
Приклад реалізації: Розглянемо цей механізм на прикладі роботи з документом «Продаж товарів». Будемо вважати, що при записі документу нам необхідно запитати користувача, чи потрібно друкувати видаткову накладну. Якщо користувач відповідає «Так», необхідно сформувати і вивести друковану форму документа.
Для цього в модулі форми документа опрацюємо процедуру «ПослеЗаписи» і напишемо в ній наступний код:

Де ми спочатку створюємо нове «ОписаниеОповещения», в якому першим параметром вказуємо процедуру, що буде викликатись після отримання відповіді від користувача:
![]()
В нашому випадку це процедура «ПослеЗакрытияОкнаВопроса».
Далі використовуємо процедуру глобального контексту «ПоказатьВопрос()» де в параметрах вказуємо «ОписаниеОповещения», саме запитання і далі заздалегідь вибраний режим діалогового вікна:

Примітка! Після виклику «ПоказатьВопрос()» виконання поточної процедури не очікує відповіді. Метод запускає взаємодію з користувачем, а після її завершення платформа викликає процедуру зазначену в «ОписаниеОповещения». Тому результат відповіді недоступний безпосередньо в поточному місці виклику.
Після отримання відповіді від користувача буде викликана вказана нами процедура з результатом у вхідних параметрах. В самій процедурі «ПослеЗакрытияОкнаВопроса» ми напишемо наступний код:

Примітка! Процедура зворотного виклику обов’язково повинна бути експортною.
Перевіривши відповідь користувача, в разі позитивного результату виведем на друк видаткову накладну. В нашому прикладі для простоти використаємо табличний документ і конструктор запиту із обробкою результату:

