Имя: Пароль:
1C
1С v8
ПоказатьВопрос в событии ПередЗаписью УФ
,
0 Georg_QQ
 
19.04.18
16:26
Задачка следующая перед интерактивным проведением необходимо интерактивно получить у пользователя вариант действия при проведении.

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

&НаКлиенте
Процедура ПередЗаписьюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
    Если РезультатВопроса=КодВозвратаДиалога.Да Тогда
        Объект.АннулироватьЗаявку = Истина;
    Иначе
        Объект.АннулироватьЗаявку = Ложь;
    КонецЕсли;
    ДополнительныеПараметры.Вставить("АннулироватьЗаявку",Объект.АннулироватьЗаявку);
    Записать(ДополнительныеПараметры);
КонецПроцедуры


Все хорошо, если была нажата кнопка "Провести" а если нажали "ПровестиИЗакрыть" то форма не закрывается. Признака что форма должна быть закрыта по стандартной кнопке, на который можно было бы смотреть, нигде не нашел. Рисовать свою кнопку "провестиИЗакрыть" не вариант, т.к. ей невозможно назначить стандартное сочетание клавиш. Вывести признак как реквизит на форму протеворечит ТЗ. Перетащить "ПоказатьВопрос" в процедуру события "ПередЗакрытием" тоже не вариант, т.к. будет отрабатывать двойная запись документа.

Есть какие-нибудь варианты как реализовать полноценное поведение для кнопки "ПровестиИЗакрыть" с интерактивным взаимодействием с пользователем?
1 Georg_QQ
 
19.04.18
16:29
Если кто-то знает как назначить произвольной кнопке (команде) стандартное сочетание клавиш - это было бы решением всех проблем
2 Вафель
 
19.04.18
16:32
Ctrl=Enter = можно назначить. Это называется "кнопка по умолчанию"
3 Georg_QQ
 
19.04.18
16:36
(2) Называется "почувствуй себя неполноценным", элементарной вещи не знал, спасибо)))) Это решает задачу.

Но хотелось бы все таки найти решение с использованием стандартной кнопки)
4 Сияющий в темноте
 
19.04.18
21:53
Нужно где то запомнить того,кто показал диалог,то есть закрытие или перепроведение,показать диалог,а после его закрытия еще раз вызвать нужное действие уже с установкой флага,что ничего показывать не надо
5 sima
 
19.04.18
23:53
(0) С приходом тренда ухода от модальности товарищи из 1С тоже успели задаться твоим вопросом: http://its.1c.ru/docs/v8nonmodal/#25 (см. раздел "Вопрос в обработчике формы ПередЗаписью")
6 famnam
 
20.04.18
06:41
(0) в типовых как раз рисуют свои кнопки
Программист всегда исправляет последнюю ошибку.