Тот же учебный сброс выполняем через ОписаниеОповещения. Завершение приходит в отдельную экспортную процедуру с ответом и дополнительными параметрами.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
Этот урок хранит только собственное целое учебное количество 0–9: начальное 3, сброс в 0. Это не универсальный тип количества товаров.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный));
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = 3;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Учебное количество";
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Вопрос через оповещение";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
КонтекстВопроса = Новый Структура("КоличествоДоВопроса", ЗначениеПримера);
Оповещение = Новый ОписаниеОповещения("ПослеПодтверждения", ЭтаФорма, КонтекстВопроса);
Сообщить(Оповещение.ИмяПроцедуры = "ПослеПодтверждения");
Сообщить(ТипЗнч(Оповещение.Модуль) = ТипЗнч(ЭтаФорма));
Сообщить(Оповещение.ДополнительныеПараметры.КоличествоДоВопроса = ЗначениеПримера);
Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
Попытка
ПоказатьВопрос(Оповещение, "Сбросить только учебное количество?",
РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Нет, "Учебное оповещение");
Исключение
Элементы.КнопкаУчебноеДействие.Доступность = Истина;
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтверждения(Ответ, ДополнительныеПараметры) Экспорт
Элементы.КнопкаУчебноеДействие.Доступность = Истина;
Если Ответ <> КодВозвратаДиалога.Да Тогда
Сообщить("Количество не изменено");
Возврат;
КонецЕсли;
Если ЗначениеПримера <> ДополнительныеПараметры.КоличествоДоВопроса Тогда
Сообщить("Количество изменилось за время ожидания. Повторите вопрос.");
Возврат;
КонецЕсли;
ЗначениеПримера = 0;
Сообщить("Сброшено только количество учебной формы");
КонецПроцедуры
Разбор по шагам
КвалификаторыЧисла(1, 0, Неотрицательный) разрешают начальное 3, ноль после сброса и прочие целые значения 0–9. Без числовых квалификаторов ОписаниеТипов не разрешает хранить числа.
ОписаниеОповещения связывает имя экспортной процедуры, модуль формы и структуру дополнительного контекста.
Читаем три свойства описания, чтобы увидеть, куда пойдёт результат и какой снимок данных передан.
ПоказатьВопрос возвращает управление до ответа. Код сразу после вызова не должен считать вопрос завершённым.
ПослеПодтверждения получает два параметра: Ответ и ДополнительныеПараметры. Имя процедуры совпадает со строкой описания и есть Экспорт.
Кнопка снова становится доступной; сброс происходит только при Да и совпадении текущего числа с переданным снимком.
В КонтекстВопроса попадает уже типизированное значение, не текст поля. Собственное изменение 3 → 4 до ответа не меняет снимок 3; callback обязан сохранить новое 4 даже при Да.
Как проверить результат
Три начальные булевы проверки свойств оповещения Истина.
Нет сохраняет 3, Да меняет на 0; после ответа кнопка доступна.
Количество не меняется сразу после открытия вопроса, до ответа.
Задайте 9 до вызова: Нет сохраняет 9, Да сбрасывает в 0. Повторный вызов после сброса передаёт снимок 0 и оставляет 0 при любом ответе.
Отдельная проверка ветки callback в отладчике собственной формы: снимок 3, фактическое значение 4 или 9, ответ Да — новое значение сохраняется. Ввод в поле во время модального вопроса не предполагается.
Ожидаемый результат
Полный callback-сценарий показывает правильную сигнатуру завершения и передачу контекста без глобальных временных переменных.
На что обратить внимание
В обработчик передаётся не команда кнопки, а результат вопроса и дополнительные параметры.
Числовые квалификаторы не валидируют первоначальный текст: Первоначальный текст с дробной частью или большей точностью может измениться при приведении к типу. Исходный текст здесь не анализируется.
Модальный вопрос может не разрешать редактирование поля; проверка снимка не означает гарантированный интерактивный ввод во время ожидания.
Отсутствие Экспорт или несовпадение имени обработчика приводит к ошибке вызова.
Не используйте ожидаемый ответ после ПоказатьВопрос синхронно: результат приходит позже.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.