Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение
И Объект.Оплачено
И ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.БК_Заявка")
И НЕ Объект.ДокументОснование.Пустая()
И НЕ ПараметрыЗаписи.Свойство("АннулироватьЗаявку")
Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗаписьюЗавершение", ЭтотОбъект,ПараметрыЗаписи), "Аннулировать заявку-основание?",РежимДиалогаВопрос.ДаНет);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса=КодВозвратаДиалога.Да Тогда
Объект.АннулироватьЗаявку = Истина;
Иначе
Объект.АннулироватьЗаявку = Ложь;
КонецЕсли;
ДополнительныеПараметры.Вставить("АннулироватьЗаявку",Объект.АннулироватьЗаявку);
Записать(ДополнительныеПараметры);
КонецПроцедуры
Все хорошо, если была нажата кнопка "Провести" а если нажали "ПровестиИЗакрыть" то форма не закрывается. Признака что форма должна быть закрыта по стандартной кнопке, на который можно было бы смотреть, нигде не нашел. Рисовать свою кнопку "провестиИЗакрыть" не вариант, т.к. ей невозможно назначить стандартное сочетание клавиш. Вывести признак как реквизит на форму протеворечит ТЗ. Перетащить "ПоказатьВопрос" в процедуру события "ПередЗакрытием" тоже не вариант, т.к. будет отрабатывать двойная запись документа.
Есть какие-нибудь варианты как реализовать полноценное поведение для кнопки "ПровестиИЗакрыть" с интерактивным взаимодействием с пользователем?
Нужно где то запомнить того,кто показал диалог,то есть закрытие или перепроведение,показать диалог,а после его закрытия еще раз вызвать нужное действие уже с установкой флага,что ничего показывать не надо
(0) С приходом тренда ухода от модальности товарищи из 1С тоже успели задаться твоим вопросом: http://its.1c.ru/docs/v8nonmodal/#25 (см. раздел "Вопрос в обработчике формы ПередЗаписью")
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший