|
|
Как сделать "возврат" в процедуре изменения поля ввода на форме? |
☑ |
|
0
snegovik
01.04.13
✎
03:10
|
На форме документа имеется поле выбора реквизита документа (Подразделение). При изменении подразделения задаю вопрос пользователю, и если ответ отрицательный, то хотелось бы, чтобы подразделение не менялось. Как реализовать эту достаточно простую вещь? Вот что написал в процедуре:
Процедура ПодразделениеПриИзменении(Элемент)
Если Вопрос("Будут очищены скидки! Продолжить?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
ОчиститьСкидки();
Иначе
Возврат; //вот тут хочу, чтобы новое подразделение не выбиралось, а возвращалось старое.
КонецЕсли;
КонецПроцедуры
|
|
|
1
ЧашкаЧая
01.04.13
✎
03:24
|
Объявляешь переменную модуля формы ПредыдущееПодразделение, кидаешь ее обновление в процедуры ПриОткрытии, ПодразделениеПередИзменением, и вот тебе предудущее значение подразделения.
|
|
|
2
alexei366
01.04.13
✎
03:27
|
Попробуй процедуру окончание редактирования, тама есть и старое значение и новое вроде как
|
|
|
3
snegovik
01.04.13
✎
03:34
|
(2) Нет такого события у элемента... ПриОкончанииРедактирования есть только у табличного поля, насколько понимаю.
|
|
|
4
vicof
01.04.13
✎
04:01
|
(0) Перенеси свой код в процедуру НачалоВыбора()
|
|
|
5
golden-pack
01.04.13
✎
04:48
|
Что там в Элемент.Значение ?
|
|
|
6
snegovik
01.04.13
✎
20:15
|
(4) В этом случае после этого события выходит форма выбора справочника подразделений и пользователь всё равно может выбрать другое подразделение.
Поизвращаться можно, конечно, запоминая в переменных текущее подразделение и затем манипулируя и сравнивая подставлять нужное или запретить подставлять нужное. Но кажется странным, что нет процедуры, в которой можно было бы кратко написать: Отказ = Истина и при этом бы процедура закрылась без возможности выбора и дальнейшего выполнения (как это сделано в событии ПередНачаломИзменения(Элемент, Отказ)
|
|
|
7
Mort
01.04.13
✎
21:07
|
ПолеВвода.ОбработкаВыбора (TextBox.ChoiceProcessing)
ПолеВвода (TextBox)
ОбработкаВыбора (ChoiceProcessing)
Синтаксис:
ОбработкаВыбора(<ВыбранноеЗначение>, <СтандартнаяОбработка>)
Параметры:
<ВыбранноеЗначение>
Тип: Произвольный.
Выбранное значение, которое будет установлено как значения поля ввода.
<СтандартнаяОбработка>
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет. Фактически это означает, что выбор произведен не будет.
Значение по умолчанию: Истина
Описание:
Возникает после выполнения выбора при: обработке выбора из списка выбора; обработке выбора из всех модальных диалогов выбора (например, календаря, калькулятора); обработке немодального выбора (например, из списка справочника).
|
|
|
8
Mort
01.04.13
✎
21:08
|
Тока всё это криво
|
|
|
9
Serg_1960
01.04.13
✎
21:21
|
(0) Вообще-то, предупреждать надо "до того как", а не "в процессе" или "после". Имхо, перед выбором предупреждать. Когда ещё ничего не было изменено.
|
|
|
10
snegovik
01.04.13
✎
21:36
|
(9) Ну да, хотелось бы включить событие "НачалоВыбора()", но в нем не получается запретить дальнейшее срабатывание выбора подразделения.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший