Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

УФ. Задать вопрос пользователю при изменение реквизита

УФ. Задать вопрос пользователю при изменение реквизита
Я
   Wefast
 
26.04.18 - 09:37
На форме выведен реквизит.
Нужно при выборе определенного значения выводить пользователю вопрос. "Вы точно уверены. При изменение удалю данные".

Если он согласен - значение реквизита меняется и я выполняю ряд других действий. А если нет - то ничего не делаю.

Событие ОбработкаВыбора я думаю мне нужна. Там видно что я выбрал и видно что я изменяю.

В нем я могу отказаться от изменения написав СтандартнаяОбработка = Ложь.

Но мне там надо задать вопрос. И тогда я выйду из контекста этой процедуры.

Видел пример с событием ПриЗакрытие, где задавалась глобальная переменная и в событие проверялось ее значение, а в обработке события вопроса завалось ее значение и писалось Закрыть() чем вызывало событие ПриЗакрытие еще раз.

Я вроде видел где то в типовых кон-ях подобно, но не помню где чтобы поискать
 
 
   zwei
 
1 - 26.04.18 - 09:41
Кто тот негодяй, который запрещает тебе присвоить нужное выбраное значение без "контекста это процедуры"?
   Wefast
 
2 - 26.04.18 - 09:45
(1) я

Там же пишется
   Wefast
 
3 - 26.04.18 - 09:46
ПоказатьВопрос(Новый ОписаниеОповещения("ОбработкаВыбораЗавершение", ЭтотОбъект),
                                                        "Закрывать форму?", РежимДиалогаВопрос.ДаНет)


И все. в эту процедуру он уже не вернется
   Wefast
 
4 - 26.04.18 - 09:48
Вижу такое решение.

В обработке ПриИзменение запросом получать значение реквизита из базы и сравнивать, в случае нужного ответа возвращать значение назад.

Но что то мне кажется это не правильно.
   zwei
 
5 - 26.04.18 - 09:50
(3) МойВажныйРеквизит = ДополнительныеПараметры.ВыбраноеЗначение;
   Mort
 
6 - 26.04.18 - 09:50
В первый раз этот вопрос пользователя напугает, а в последующие он тупо будет жать на автомате. Бесполезняк.
   zwei
 
7 - 26.04.18 - 09:51
Вообще да, такое надо перед записью спрашивать, когда все изменения применяются.
   Cyberhawk
 
8 - 26.04.18 - 09:51
"при выборе определенного значения" // Подробнее
   Тихий омут
 
9 - 26.04.18 - 09:51
(4) У конструктора описания оповещения третьим параметром идёт произвольный доп. параметр, он будет передан в обработчик оповещения - ну и передай через него выбранное значение, а в обработчике оповещения результата вопроса в зависимости от ответа пользвоателя присваивай это значение своему реквизиту или нет.
   zwei
 
10 - 26.04.18 - 09:52
(8) Вы выбрали торговую точку, проклятую генереальным. Ваша зарплата будет очищена. Продолжить?
 
 Рекламное место пустует
   Mort
 
11 - 26.04.18 - 09:53
А причина подобных нелепых вопросов, конечно, в кривой архитектуре процесса работы с формой. Нефиг менять какие либо данные в базе пока юзер не нажмет записать.
   Митяйский
 
12 - 26.04.18 - 09:55
А не лучше ли сделать на манер стандартной блокировки редактирования номера документа?
То есть хочешь влезть в опасный реквизит - будь добр нажать кнопку, снимающую с него ридонли.

И регулировать все это дело доступностью полей, безо всяких голимых асинхронных вызовов
   Mort
 
13 - 26.04.18 - 09:55
(7) не нужно ничего спрашивать, информации на форме должно быть достаточно чтобы все остальное сделать без вопросов.
   Wefast
 
14 - 26.04.18 - 10:00
В общем зачем мне все это надо.
Есть реквизит "Вид операции"

Если вид операции №1 то обязательные реквизиты для заполнения одни.
Если другой - другие.

Если они зайдут и выберут первый вид операции, заполнят все. А потом захотят изменить тип, я хочу удалить значения реквизитов которые не участвуют в другом виде операции.

Но считаю что пользователь должен быть предупрежден
   Wefast
 
15 - 26.04.18 - 10:04
(5) не очень понял.
1.в событие ОбработкаВыбора сразу написать СтандартнаяОбработка = Ложь
2. Передать выбранное значение в вопросе
3. В обработке результата вопроса написать Объект.МойРевизит = ДопПараметры.ВыбранноеЗначение

Правильно?
   _Дайвер_
 
16 - 26.04.18 - 10:05
(14) Если они у тебя постоянные, значения твоего вида операции, заполни сам. Или просто при изменении Вопрос задай, даНет, и очищай по ответу. Это еще делается доступностью элементов формы, если реквизыты отличаются
   Wefast
 
17 - 26.04.18 - 10:08
(16) Первую часть не понял. Но в ПриИзменение предыдущее значение уже не доступно через точку, мне кажется получать его из базы, сравнивать и присваивать нужное значение не правильно. Опять заморачиваться с модифицированностью, чтобы если пользователь по факту ничего не менял, то не было признака изменения
   _Дайвер_
 
18 - 26.04.18 - 10:10
(17) Если ВИДЫОПЕРАЦИИ используют только определенные значения, тогда при изменении ВИДАОПЕРАЦИИ заполняй остальные реквизиты сам, и доступность элементов поставь ЛОЖЬ
   zwei
 
19 - 26.04.18 - 10:11
(13) Боже упаси от подобных "проектировщиков".
   zwei
 
20 - 26.04.18 - 10:13
"А почему, Галина Ивановна, вы перед записю не заглянули на 15 вкладку, где серенький чекбокс полностью меняет смысл операции?"
   Wefast
 
21 - 26.04.18 - 10:20
(18) И откуда я возьму  эти значение других реквизитов, если их вводит пользователь?

Т.е. для одного вида операции важно чтобы был к примеру указан договор.
А для другого не важен, так зачем записывать его значение если пользователь умудрился его заполнить?

(20) Ну я готов услышать годную версию как это делается.

Есть документ. Им принимается продукция от поставщика, а так же он используется для приемки товара с другого склада внутри производства.

Если от поставщика то нужно знать номер и дату входящего документа.

Если же пользователь выберет вид операции "из другого склада", то у этой операции нет даты и номера входящего документа.
Я делаю эти реквизиты на форме не доступными
Но их же нужно очистить. А для этого я хочу спросить пользователя, что он знает что делает.
   Aletar
 
22 - 26.04.18 - 10:20
Предложу такое решение.

В палитре свойств элемента формы есть такие свойства:
"ОтображатьПредупреждениеПриРедактированиии" и "ПредупреждениеПриРедактировании" (см. http://joxi.ru/YmEYJjGhZ4Xebm )

Можно установить эти свойства, а при изменении поля уже безусловно выполнять нужный алгоритм.
   Wefast
 
23 - 26.04.18 - 10:24
(22) Как вариант, но не спасает, если пользователь открыл документ. Начал менять реквизит, согласился с предупреждением. Заполнил все. Опять "случайно" поменял вид операции и он уже не предупреждает о последствиях
   Wefast
 
24 - 26.04.18 - 10:38
В общем сделал так:

&НаКлиенте
Процедура ВидПриемкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    Если ВыбранноеЗначение <> Объект.ВидПриемки И ВыбранноеЗначение = ПолучитьВидПриемкиШокер() Тогда
        ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтотОбъект,ВыбранноеЗначение),
        "Данные о входящем документе будут очищены. Продолжить?", РежимДиалогаВопрос.ДаНет);
        СтандартнаяОбработка = ЛОЖЬ;
    ИначеЕсли ВыбранноеЗначение <> Объект.ВидПриемки Тогда
        Элементы.ВходящийНомерДата.Доступность = Истина;    
        
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытиемЗавершение(РезультатВопроса, ПараметрыЗаписи) Экспорт
        
         Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
             Объект.ВидПриемки = ПараметрыЗаписи;
             Элементы.ВходящийНомерДата.Доступность = ЛОЖЬ;
             Объект.НомерВходящегоДокумента = Неопределено;
             Объект.ДатаВходящегоДокумента = Неопределено;
             Объект.ДатаПроизводства = Неопределено;
         КонецЕсли;
        
КонецПроцедуры

Функция ПолучитьВидПриемкиШокер()
    Возврат Перечисления.КА_ВидыПриемки.ИзШокера;
КонецФункции
   Mort
 
25 - 26.04.18 - 11:13
(20) 15 вкладок и галку изменяющую суть операции делают те же люди, которые задают вопросы перед записью.
   Mort
 
26 - 26.04.18 - 11:14
+(25) И для них есть отдельное название.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует