|
Тонкий клиент. Проведение документа. Спросить пользователя. | ☑ | ||
---|---|---|---|---|
0
Target1025
18.07.22
✎
12:13
|
В Толстом клиенте в методе клиента формы ПередЗаписью можно было тормознуть процесс и задать вопрос пользователю. В Тонком клиенте Модальные окна запрещены, вызовы асинхронные, т.е. процесс проведения тормознуть нельзя и пользователя спросить невозможно, так получается?
|
|||
1
timurhv
18.07.22
✎
12:15
|
Стандартные команды убирать, добавлять свои в форму документа\справочника, а также на формы списка и журналы документов\общие формы.
|
|||
2
1Сергей
18.07.22
✎
12:15
|
В асинхронном вызове можно указать какая процедура будет выполнятся после реакции пользователя
|
|||
3
Ryzeman
18.07.22
✎
12:17
|
(2) событие ПередЗаписью-то при этом не тормознётся.. Наверное. ТС об этом.
|
|||
4
Target1025
18.07.22
✎
12:18
|
(3) Да, об этом. Оно отлетит и проведение пойдет себе дальше. Отменить проведение вопросом пользователю, получается, невозожно.
|
|||
5
1Сергей
18.07.22
✎
12:20
|
(3) Дык, надо переписывать процедуру при записи. После вызова диалога ничего не делать
|
|||
6
Ryzeman
18.07.22
✎
12:24
|
(4) ИТС такие огороды рекомендует городить... Если ОЧЕНЬ надо:
https://its.1c.ru/db/metod8dev/content/5272/hdoc |
|||
7
RomanYS
18.07.22
✎
12:25
|
(4) Не надо тормозить проведение. Нужно его запускать только при выполнении условий.
(0) Кстати для толстого клиента это тоже очень плохо: подвешивать на неопределенное время открытую транзакцию |
|||
8
1Сергей
18.07.22
✎
12:25
|
И посмотрите как в типовых сделано
|
|||
9
Kassern
18.07.22
✎
12:26
|
(0) " пользователя спросить невозможно, так получается" - все можно, если осторожно и с умом)
Делаете свою кнопку записи/проведения с блекжеком и вопросами |
|||
10
Kassern
18.07.22
✎
12:27
|
примерно так же поступают и в типовых конфах
|
|||
11
Ryzeman
18.07.22
✎
12:29
|
(7) ТС всё правильно делает и вопрос там где надо. Просто сказал чуток криво. Он хочет задавать вопрос ПередЗаписью - это в общем то самое правильное место для диалога с пользователем для его задачи.
|
|||
12
Target1025
18.07.22
✎
12:29
|
(7) "ПередЗаписью" работает не в транзакции.
(9) Видимо с кнопой и придется работать, спасибо. |
|||
13
Ryzeman
18.07.22
✎
12:31
|
(12) А чем вариант ИТС не нравится?) Ну помимо смысловой убогости. По реализации то явно попроще, да и по-понятнее. Из ссылки выше:
&НаКлиенте Перем ОтветПередЗакрытием; &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Если ОтветПередЗакрытием <> Истина Тогда Отказ = Истина; Оповещение = Новый ОписаниеОповещения( "ПередЗакрытиемЗавершение", ЭтотОбъект); ПоказатьВопрос(Оповещение, “Закрыть?”, РежимДиалогаВопрос.ДаНет); КонецЕсли КонецПроцедуры &НаКлиенте Процедура ПередЗакрытиемЗавершение(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ОтветПередЗакрытием = Истина; Закрыть(); КонецЕсли; КонецПроцедуры |
|||
14
Target1025
18.07.22
✎
12:33
|
(13) Пользователь может нажать "Провести", передЗАкрытием не будет вызвано. Требуется проверить, задать вопрос и при необходимости подправить док.
|
|||
15
Kassern
18.07.22
✎
12:34
|
(13) и как это поможет ТС? Ему нужно стопорнуть запись объекта и задать вопрос. А от варианта ответа будет зависеть, продолжится запись, или нет.
|
|||
16
Kassern
18.07.22
✎
12:35
|
(14) посмотрите как в типовой УТ11 сделано. Там эти кнопки переопределены поэтому без проблем задать вопрос, а уж по ответу начать запись, или не начинать.
|
|||
17
Фрэнки
18.07.22
✎
12:38
|
(14) Вот как раз посмотрел на кнопку Провести
&НаКлиенте Процедура ПровестиДокумент() ОчиститьСообщения(); Если Объект.ПометкаУдаления Тогда ПоказатьПредупреждение(, НСтр("ru = 'Помеченный на удаление документ не может быть проведен.'")); Возврат; КонецЕсли; Если СотрудникиКРасчету.Количество() > 0 Тогда РасчетЗарплатыРасширенныйКлиент.ПередЗаписьюДокументаСоСпискомСотрудников(ЭтаФорма, "ПровестиДокументОкончание"); Иначе ПровестиДокументНаКлиенте(); КонецЕсли; КонецПроцедуры Это в ЗУП в модуле формы документы Начисление |
|||
18
Ryzeman
18.07.22
✎
12:40
|
(14)(15) Да при чём тут перед закрытием... Это ж, блин, пример. Переделать под ПередЗаписью - то же самое. Переменную на отказ записи, её отказ в самой процедуре, а при успешной проверке взводим отказ в ложь и Записать(). Разве что режим записи наследовать надо.
|
|||
19
Target1025
18.07.22
✎
12:41
|
(17) спасибо!
|
|||
20
Kassern
18.07.22
✎
12:52
|
(18) Вы предлагаете всегда отказ=истина для записи документа, а после вызывать вопрос и записывать при успешном ответе?
|
|||
21
Ryzeman
18.07.22
✎
12:59
|
(20) не я, ИТС. Но да. В принципе это происходит ещё до обработки проверки заполнения даже... Тормозить не должно - нечему.
|
|||
22
Kassern
18.07.22
✎
13:07
|
(21) Типовая торговля придерживается вот такой практики:
&НаКлиенте Процедура ПровестиДокумент(Команда) ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина); КонецПроцедуры |
|||
23
1Сергей
18.07.22
✎
13:26
|
(22) В проведении уже никаких вопросов не задается
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |