|
Отказ от модальности и ПередЗакрытием | ☑ | ||
---|---|---|---|---|
0
Остап Сулейманович
05.03.15
✎
12:28
|
Ситуация следующая :
&НаКлиенте Процедура ОбработчикЗакрытияНепустойФормы(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; ЭтаФорма.Закрыть(); КонецПроцедуры &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Если Объект.ТоварныйСостав.Количество() > 0 Тогда Отказ = Истина; Обработчик = Новый ОписаниеОповещения("ОбработчикЗакрытияНепустойФормы", ЭтаФорма); Заголовок = "Операция не завершена |Отменить закрытие формы?"; ПоказатьВопрос(Обработчик, Заголовок, РежимДиалогаВопрос.ДаНет, 20); КонецЕсли; КонецПроцедуры Если пользователь согласен с тем, что операцию нужно отменить и в диалоге нажимает "Нет" обработка из кода ЭтаФорма.Закрыть() уходит в обработчик ПередЗакрытием() и так по кругу. Самый простой вариант таки почистить ТоварныйСостав, что б ПередЗакрытием не ставить отказ. Еще способ - выставить какой нибудь флаг и в ПередЗакрытием его проверять. Хотелось бы найти способ узнать как закрывается форма интерактивно или из кода. Это вообще как-то возможно? |
|||
1
lxndr
05.03.15
✎
12:38
|
поставь для табличной части ТоварныйСостав
ПроверкаЗаполнения = Истина |
|||
2
Остап Сулейманович
05.03.15
✎
12:40
|
(1) Вопрос не в том, какой флаг использовать. Вопрос - как сказать форме безусловно закрыться положив/поклав/забив на все проверки.
|
|||
3
Остап Сулейманович
05.03.15
✎
12:43
|
+ (2) В режиме с модальностью - все просто.
Спросили - получили ответ (не выходя из ПередЗакрытием) - выставили / не выставили отказ в зависимости от ответа. В случае с отказом от модальности все решается за пределами ПередЗакрытием. И вот ему нужно как то сказать спрашивать или забить на все вопросы. |
|||
4
lxndr
05.03.15
✎
13:23
|
заведи клиентскую переменную или реквизит формы. Возводи его при положительном ответе и при закрытии проверку отменяй при взведенном значении.
Хотя я щщщетаю все-равно это плохая идея. |
|||
5
Гёдза
05.03.15
✎
13:25
|
флаг взводи
|
|||
6
DrZombi
гуру
05.03.15
✎
14:02
|
(0) Нуна
1. Позволить писать новый документ в любом виде, даже пустой 2. При проведении, начинать проверять ошибки заполнения документа, при этом не в модуле документа, а в форме. Т.е. Пользователь жамкает там "Провести" и вуаля, далее ты анализируешь в процедуре "ПередЗаписью" 3. Запретить проводить такой документ из Списка или еще откуда, т.е. нужен некий Булевский реквизит, который запретит проведение документа не из диалога. 4. Из УФ можно передать значение в Модуль документа, через "ПриЗаписиНаСервере", лишь в этот момент можно работать с параметром "ДополнительноеСвойство". Как пользоваться "Структурой", сам разберешься. 5. Все зависит от твоей фантазии и знаниях. 6. И прекращай проверять ошибки при простой записи документа или во время Проведения :) |
|||
7
Maniac
05.03.15
✎
14:04
|
включи модальность и не парь мозг
|
|||
8
Fish
05.03.15
✎
14:05
|
(7) Модальность - это вчерашний день.
|
|||
9
Остап Сулейманович
05.03.15
✎
15:17
|
Всем спасибо. Ситуация решилась все же очисткой табличных частей. Но вопрос остался.
(6) Терки не за форму документа, а за форму обработки. Посему 1 - мимо, 2 - мимо, 3 - мимо, 4 - за флаг в каком либо виде уже упоминалось, 5 - жаль... хотелось внятного совета, 6 - опять же к обработке не относится. (7) Хочется сделать как правильно. Как неправильно - оно само... |
|||
10
LordCMEPTb
05.03.15
✎
15:44
|
(9) Скорее всего придется заводить булевую переменную на форме:
http://its.1c.ru/docs/v8nonmodal/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |