Имя: Пароль:
1C
1С v8
Как откатить присвоение значения в поле ввода УП
,
0 iva77ru
 
10.07.14
11:34
Пожалуйста, помогите разобраться?

На УП есть поле ввода связано с данными справочника контраген. Нужно по окончанию ввода/выбора нового значения задать вопрос и либо откатить присвоение нового значения либо нет.

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Неопределено;

    ПоказатьВопрос(Новый ОписаниеОповещения("КонтрагентПриИзмененииЗавершение", ЭтотОбъект),
                    "Выполнить перерасчет по ценам выбранного контрагента: "+ Объект.Контрагент + "?", Режим, 0);
КонецПроцедуры

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

Если ответить нет, то все равно остается новое выьранное значение.
1 Господин ПЖ
 
10.07.14
11:36
КонтрагентПриИзменении

уже поздно пить баржоми...
2 Maxus43
 
10.07.14
11:38
ОбработкаВыбора, или другие подходящие
3 iva77ru
 
10.07.14
11:46
Обработка выбора или подобное не подходит, т.к. нужно использовать не модальный вызов для вопроса и, следовательно, нет остановки в процедуре, а в др. процедуре уже нет возможности установить ложь для отмены ввода.
4 Maxus43
 
10.07.14
11:48
(3) ПриОткрытии пихай в реквизит формы "СтароеЗначение", а в (0) оттуда устанавливай обратно, если ответ отрицательный
5 Enders
 
10.07.14
11:49
Запомни прошлое значение поля (ПриОткрытии, ПриАктивизации,НачалоВыбора), и при ответе "нет". Верни его.
В чем сложность?
6 mikecool
 
10.07.14
11:49
смотреть передизменением - запоминаем
смотреть приизменении - анализ и откат или принятие
7 iva77ru
 
10.07.14
11:59
Интефейс Такси.
Нажимаем на стрелочку в правом углу поля ввода.Видим список выбора. Выбираем что-то новенькое и не одна из доступных процедур не срабатывает для отлова ранее установленного значения.
Проверял:
НачалоВыбораИзСписка()
НачалоВыбора()
8 Enders
 
10.07.14
12:06
(7) Ну вроде как было предложено больше процедур для запоминания старого значения...
9 mikecool
 
10.07.14
12:10
(7) проверяй все процедуры
я когда не могу точно предположить - какой конкретно обработчик сработает, добавляю все, ставлю точки останова и смотрю где выстрелит
10 mistеr
 
10.07.14
12:51
(7) Что, прям нигде значение не получить?
11 iva77ru
 
10.07.14
13:02
Для текущего случая подходит:
АвтоПодбор() для фиксации значения до изменения.
СП:
возникает при активизации поля ввода, для которого выключен быстрый выбор, мышью.
12 iva77ru
 
10.07.14
13:07
Правильно нужно задействавать все обработчики:
НачалоВыбораИзСписка()
НачалоВыбора()
АвтоПодбор()

Чтобы учесть все варианты ввода. То есть при замене модальных вызовов на не модальные нужно еще и дописывать кучу лишнего кода. Спасибо, разработчикам платформы.
13 Enders
 
10.07.14
17:07
(12) Ну или обойтись процедурой "ПриОткрытии", кто как хочет так и извращается. При чем тут разработчики?)