Имя: Пароль:
1C
 
УФ. модальная форма перед записью документа
0 Stim
 
01.02.19
15:57
Перед записью документа нужно пользователю показать форму, в которой он введет связанные значения и потом документ запишется/не запишется в зависимости от введенных значений.


делаю в расширении:


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


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

                КОнецПроцедуры



выскакивает новая форма, интерфейс блокируется, все как надо.
Но документ не ждет обработки оповещения, а спокойно записывается, пока открывается форма "ФормаПодтвержденияТипаСМПКонтрагента"


как не записывать документ, пока открывается вторая форма?
1 Stim
 
01.02.19
15:58
+ если писать

Процедура РасшПередЗаписьюПосле(Отказ, ПараметрыЗаписи)

Отказ = ИСТИНА;


то расширение ругается "Запрещено изменение параметра, отменяющего действие"
2 bolobol
 
01.02.19
16:01
ПередЗаписью()
Отказ= истина;
ПроблемныйЭлементИнтерфейса= ПолеВводаНужныхДанных;
ПроблемныйЭлементИнтерфейса.СообщениеОбОшибке= "Сюда данные введите, иначе ой"

Как-то так это делается.
3 bolobol
 
01.02.19
16:02
А почему После?
Перед же надо проверять, не?
4 Сияющий в темноте
 
01.02.19
16:08
(1)если расширение не дает менять такие параметры,то в топку всю модель расширений и править конфигурацию.
Наверное,проще написать ПередЗаписьюВместо и перенести в нее стандартный код,т.к.после того,как дочерняя форма закроется,то основная должна записаться и выполнить стандартный код.
5 Stim
 
04.02.19
11:12
(4) расширение не причем.

тот же код не отрабатывает как надо и напрямую в форме документа.



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


&НаКлиенте
Процедура ПроцедураОповещения(РезультатОткрытияФормы, ДополнительныеПараметры)  Экспорт
//сюда документ приходит уже записанный
КонецПроцедуры
2 + 2 = 3.9999999999999999999999999999999...