|
УФ. Задать вопрос пользователю при изменение реквизита | ☑ | ||
---|---|---|---|---|
0
Wefast
26.04.18
✎
09:37
|
На форме выведен реквизит.
Нужно при выборе определенного значения выводить пользователю вопрос. "Вы точно уверены. При изменение удалю данные". Если он согласен - значение реквизита меняется и я выполняю ряд других действий. А если нет - то ничего не делаю. Событие ОбработкаВыбора я думаю мне нужна. Там видно что я выбрал и видно что я изменяю. В нем я могу отказаться от изменения написав СтандартнаяОбработка = Ложь. Но мне там надо задать вопрос. И тогда я выйду из контекста этой процедуры. Видел пример с событием ПриЗакрытие, где задавалась глобальная переменная и в событие проверялось ее значение, а в обработке события вопроса завалось ее значение и писалось Закрыть() чем вызывало событие ПриЗакрытие еще раз. Я вроде видел где то в типовых кон-ях подобно, но не помню где чтобы поискать |
|||
1
zwei
26.04.18
✎
09:41
|
Кто тот негодяй, который запрещает тебе присвоить нужное выбраное значение без "контекста это процедуры"?
|
|||
2
Wefast
26.04.18
✎
09:45
|
(1) я
Там же пишется |
|||
3
Wefast
26.04.18
✎
09:46
|
ПоказатьВопрос(Новый ОписаниеОповещения("ОбработкаВыбораЗавершение", ЭтотОбъект),
"Закрывать форму?", РежимДиалогаВопрос.ДаНет) И все. в эту процедуру он уже не вернется |
|||
4
Wefast
26.04.18
✎
09:48
|
Вижу такое решение.
В обработке ПриИзменение запросом получать значение реквизита из базы и сравнивать, в случае нужного ответа возвращать значение назад. Но что то мне кажется это не правильно. |
|||
5
zwei
26.04.18
✎
09:50
|
(3) МойВажныйРеквизит = ДополнительныеПараметры.ВыбраноеЗначение;
|
|||
6
Mort
26.04.18
✎
09:50
|
В первый раз этот вопрос пользователя напугает, а в последующие он тупо будет жать на автомате. Бесполезняк.
|
|||
7
zwei
26.04.18
✎
09:51
|
Вообще да, такое надо перед записью спрашивать, когда все изменения применяются.
|
|||
8
Cyberhawk
26.04.18
✎
09:51
|
"при выборе определенного значения" // Подробнее
|
|||
9
Тихий омут
26.04.18
✎
09:51
|
(4) У конструктора описания оповещения третьим параметром идёт произвольный доп. параметр, он будет передан в обработчик оповещения - ну и передай через него выбранное значение, а в обработчике оповещения результата вопроса в зависимости от ответа пользвоателя присваивай это значение своему реквизиту или нет.
|
|||
10
zwei
26.04.18
✎
09:52
|
(8) Вы выбрали торговую точку, проклятую генереальным. Ваша зарплата будет очищена. Продолжить?
|
|||
11
Mort
26.04.18
✎
09:53
|
А причина подобных нелепых вопросов, конечно, в кривой архитектуре процесса работы с формой. Нефиг менять какие либо данные в базе пока юзер не нажмет записать.
|
|||
12
Митяйский
26.04.18
✎
09:55
|
А не лучше ли сделать на манер стандартной блокировки редактирования номера документа?
То есть хочешь влезть в опасный реквизит - будь добр нажать кнопку, снимающую с него ридонли. И регулировать все это дело доступностью полей, безо всяких голимых асинхронных вызовов |
|||
13
Mort
26.04.18
✎
09:55
|
(7) не нужно ничего спрашивать, информации на форме должно быть достаточно чтобы все остальное сделать без вопросов.
|
|||
14
Wefast
26.04.18
✎
10:00
|
В общем зачем мне все это надо.
Есть реквизит "Вид операции" Если вид операции №1 то обязательные реквизиты для заполнения одни. Если другой - другие. Если они зайдут и выберут первый вид операции, заполнят все. А потом захотят изменить тип, я хочу удалить значения реквизитов которые не участвуют в другом виде операции. Но считаю что пользователь должен быть предупрежден |
|||
15
Wefast
26.04.18
✎
10:04
|
(5) не очень понял.
1.в событие ОбработкаВыбора сразу написать СтандартнаяОбработка = Ложь 2. Передать выбранное значение в вопросе 3. В обработке результата вопроса написать Объект.МойРевизит = ДопПараметры.ВыбранноеЗначение Правильно? |
|||
16
_Дайвер_
26.04.18
✎
10:05
|
(14) Если они у тебя постоянные, значения твоего вида операции, заполни сам. Или просто при изменении Вопрос задай, даНет, и очищай по ответу. Это еще делается доступностью элементов формы, если реквизыты отличаются
|
|||
17
Wefast
26.04.18
✎
10:08
|
(16) Первую часть не понял. Но в ПриИзменение предыдущее значение уже не доступно через точку, мне кажется получать его из базы, сравнивать и присваивать нужное значение не правильно. Опять заморачиваться с модифицированностью, чтобы если пользователь по факту ничего не менял, то не было признака изменения
|
|||
18
_Дайвер_
26.04.18
✎
10:10
|
(17) Если ВИДЫОПЕРАЦИИ используют только определенные значения, тогда при изменении ВИДАОПЕРАЦИИ заполняй остальные реквизиты сам, и доступность элементов поставь ЛОЖЬ
|
|||
19
zwei
26.04.18
✎
10:11
|
(13) Боже упаси от подобных "проектировщиков".
|
|||
20
zwei
26.04.18
✎
10:13
|
"А почему, Галина Ивановна, вы перед записю не заглянули на 15 вкладку, где серенький чекбокс полностью меняет смысл операции?"
|
|||
21
Wefast
26.04.18
✎
10:20
|
(18) И откуда я возьму эти значение других реквизитов, если их вводит пользователь?
Т.е. для одного вида операции важно чтобы был к примеру указан договор. А для другого не важен, так зачем записывать его значение если пользователь умудрился его заполнить? (20) Ну я готов услышать годную версию как это делается. Есть документ. Им принимается продукция от поставщика, а так же он используется для приемки товара с другого склада внутри производства. Если от поставщика то нужно знать номер и дату входящего документа. Если же пользователь выберет вид операции "из другого склада", то у этой операции нет даты и номера входящего документа. Я делаю эти реквизиты на форме не доступными Но их же нужно очистить. А для этого я хочу спросить пользователя, что он знает что делает. |
|||
22
Aletar
26.04.18
✎
10:20
|
Предложу такое решение.
В палитре свойств элемента формы есть такие свойства: "ОтображатьПредупреждениеПриРедактированиии" и "ПредупреждениеПриРедактировании" (см. http://joxi.ru/YmEYJjGhZ4Xebm ) Можно установить эти свойства, а при изменении поля уже безусловно выполнять нужный алгоритм. |
|||
23
Wefast
26.04.18
✎
10:24
|
(22) Как вариант, но не спасает, если пользователь открыл документ. Начал менять реквизит, согласился с предупреждением. Заполнил все. Опять "случайно" поменял вид операции и он уже не предупреждает о последствиях
|
|||
24
Wefast
26.04.18
✎
10:38
|
В общем сделал так:
&НаКлиенте Процедура ВидПриемкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Если ВыбранноеЗначение <> Объект.ВидПриемки И ВыбранноеЗначение = ПолучитьВидПриемкиШокер() Тогда ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтотОбъект,ВыбранноеЗначение), "Данные о входящем документе будут очищены. Продолжить?", РежимДиалогаВопрос.ДаНет); СтандартнаяОбработка = ЛОЖЬ; ИначеЕсли ВыбранноеЗначение <> Объект.ВидПриемки Тогда Элементы.ВходящийНомерДата.Доступность = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПередЗакрытиемЗавершение(РезультатВопроса, ПараметрыЗаписи) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Да Тогда Объект.ВидПриемки = ПараметрыЗаписи; Элементы.ВходящийНомерДата.Доступность = ЛОЖЬ; Объект.НомерВходящегоДокумента = Неопределено; Объект.ДатаВходящегоДокумента = Неопределено; Объект.ДатаПроизводства = Неопределено; КонецЕсли; КонецПроцедуры Функция ПолучитьВидПриемкиШокер() Возврат Перечисления.КА_ВидыПриемки.ИзШокера; КонецФункции |
|||
25
Mort
26.04.18
✎
11:13
|
(20) 15 вкладок и галку изменяющую суть операции делают те же люди, которые задают вопросы перед записью.
|
|||
26
Mort
26.04.18
✎
11:14
|
+(25) И для них есть отдельное название.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |