ОписаниеОповещения.Модуль

Свойства · Module

Тип: ФормаКлиентскогоПриложения, КомандаКомандногоИнтерфейса, ОбщийМодуль. Программный модуль, процедура которого будет вызвана. При использовании типа ФормаКлиентскогоПриложения будет вызван метод модуля указанной формы клиентского приложения. При использовании типа КомандаКомандногоИнтерфейса будет вызван метод модуля команды командного интерфейса. При использовании типа ОбщийМодуль будет вызван метод общего неглобального модуля.

Полное описание, параметры и ограничения

ОписаниеОповещения.Модуль (CallbackDescription.Module)

ОписаниеОповещения (CallbackDescription)

Модуль (Module)

Доступен, начиная с версии 8.3.3.

Использование:
Только чтение.
Описание:
Тип: ФормаКлиентскогоПриложения, КомандаКомандногоИнтерфейса, ОбщийМодуль.
Программный модуль, процедура которого будет вызвана.
При использовании типа ФормаКлиентскогоПриложения будет вызван метод модуля указанной формы клиентского приложения.
При использовании типа КомандаКомандногоИнтерфейса будет вызван метод модуля команды командного интерфейса.
При использовании типа ОбщийМодуль будет вызван метод общего неглобального модуля.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

Использование в версии:

Доступен, начиная с версии 8.3.3.

Методическая информация

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

Передать исходное значение в обработчик завершения вопроса

Тот же учебный сброс выполняем через ОписаниеОповещения. Завершение приходит в отдельную экспортную процедуру с ответом и дополнительными параметрами.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.

  2. Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.

  3. В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.

  4. Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.

  5. Этот урок хранит только собственное целое учебное количество 0–9: начальное 3, сброс в 0. Это не универсальный тип количества товаров.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = 3;
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Учебное количество";


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Вопрос через оповещение";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    КонтекстВопроса = Новый Структура("КоличествоДоВопроса", ЗначениеПримера);
    Оповещение = Новый ОписаниеОповещения("ПослеПодтверждения", ЭтаФорма, КонтекстВопроса);
    Сообщить(Оповещение.ИмяПроцедуры = "ПослеПодтверждения");
    Сообщить(ТипЗнч(Оповещение.Модуль) = ТипЗнч(ЭтаФорма));
    Сообщить(Оповещение.ДополнительныеПараметры.КоличествоДоВопроса = ЗначениеПримера);
    Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
    Попытка
        ПоказатьВопрос(Оповещение, "Сбросить только учебное количество?",
            РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Нет, "Учебное оповещение");
    Исключение
        Элементы.КнопкаУчебноеДействие.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ПослеПодтверждения(Ответ, ДополнительныеПараметры) Экспорт
    Элементы.КнопкаУчебноеДействие.Доступность = Истина;
    Если Ответ <> КодВозвратаДиалога.Да Тогда
        Сообщить("Количество не изменено");
        Возврат;
    КонецЕсли;
    Если ЗначениеПримера <> ДополнительныеПараметры.КоличествоДоВопроса Тогда
        Сообщить("Количество изменилось за время ожидания. Повторите вопрос.");
        Возврат;
    КонецЕсли;
    ЗначениеПримера = 0;
    Сообщить("Сброшено только количество учебной формы");
КонецПроцедуры

Разбор по шагам

  1. КвалификаторыЧисла(1, 0, Неотрицательный) разрешают начальное 3, ноль после сброса и прочие целые значения 0–9. Без числовых квалификаторов ОписаниеТипов не разрешает хранить числа.

  2. ОписаниеОповещения связывает имя экспортной процедуры, модуль формы и структуру дополнительного контекста.

  3. Читаем три свойства описания, чтобы увидеть, куда пойдёт результат и какой снимок данных передан.

  4. ПоказатьВопрос возвращает управление до ответа. Код сразу после вызова не должен считать вопрос завершённым.

  5. ПослеПодтверждения получает два параметра: Ответ и ДополнительныеПараметры. Имя процедуры совпадает со строкой описания и есть Экспорт.

  6. Кнопка снова становится доступной; сброс происходит только при Да и совпадении текущего числа с переданным снимком.

  7. В КонтекстВопроса попадает уже типизированное значение, не текст поля. Собственное изменение 3 → 4 до ответа не меняет снимок 3; callback обязан сохранить новое 4 даже при Да.

Как проверить результат

  1. Три начальные булевы проверки свойств оповещения Истина.

  2. Нет сохраняет 3, Да меняет на 0; после ответа кнопка доступна.

  3. Количество не меняется сразу после открытия вопроса, до ответа.

  4. Задайте 9 до вызова: Нет сохраняет 9, Да сбрасывает в 0. Повторный вызов после сброса передаёт снимок 0 и оставляет 0 при любом ответе.

  5. Отдельная проверка ветки callback в отладчике собственной формы: снимок 3, фактическое значение 4 или 9, ответ Да — новое значение сохраняется. Ввод в поле во время модального вопроса не предполагается.

Ожидаемый результат

Полный callback-сценарий показывает правильную сигнатуру завершения и передачу контекста без глобальных временных переменных.

На что обратить внимание

  1. В обработчик передаётся не команда кнопки, а результат вопроса и дополнительные параметры.

  2. Числовые квалификаторы не валидируют первоначальный текст: Первоначальный текст с дробной частью или большей точностью может измениться при приведении к типу. Исходный текст здесь не анализируется.

  3. Модальный вопрос может не разрешать редактирование поля; проверка снимка не означает гарантированный интерактивный ввод во время ожидания.

  4. Отсутствие Экспорт или несовпадение имени обработчика приводит к ошибке вызова.

  5. Не используйте ожидаемый ответ после ПоказатьВопрос синхронно: результат приходит позже.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.