|
оповещение пользователю в форме документа Бухгалтерия 3.0 | ☑ | ||
---|---|---|---|---|
0
Новый1сник2
30.11.22
✎
13:33
|
Добрый день!
делаю перед записью в форме документа оповещение пользователю если пользователь нажимает провести или записать, оповещение работает и в зависимости от выбора до заполняются, некоторые реквизиты. если же пользователь нажимает "провести и закрыть", оповещение задает вопрос, но не дожидаясь ответа, документ проводится и закрывается. при этом еще выводит сообщения. подскажите как настроить чтобы документ не проводился, пока пользователь не выбрал ответ |
|||
1
Максим Нижегородец
30.11.22
✎
13:40
|
Через КОСТЫЛЬ это получается сделать. Добавляется реквизит на форму (типа булево) и пока он Ложь не давать записывать и закрывать форму. А когда ответили на вопрос, то закрывать и записывать с реквизитом в Истина.
|
|||
2
arsik
гуру
30.11.22
✎
13:42
|
(0) Добро пожаловать в управляемые формы и асинхронность
|
|||
3
Новый1сник2
30.11.22
✎
13:42
|
думал об этом, реквизит формы доступен будет в модуле объекта ?
|
|||
4
Максим Нижегородец
30.11.22
✎
13:46
|
(3) Нет, эта схема работы в рамках формы производится "НаКлиенте".
|
|||
5
arsik
гуру
30.11.22
✎
13:47
|
(3) Нет конечно. Скорее всего нужно через ДополнительныеСвойства это реализовывать.
|
|||
6
rozer76
30.11.22
✎
13:50
|
(4) не знаю как у вас там в БП3 )) но в КА 2.4/УТ11.4 в форме заказе в клиента поглядите как отрабатывается многооборотная тара...и да (2)
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Если НеВыполнятьПроверкуПередЗаписью Тогда НеВыполнятьПроверкуПередЗаписью = Ложь; Возврат; КонецЕсли; // Если документ проводится, проверим рассчитанность скидок и корректность графика оплаты по заказу. Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда Отказ = Истина; ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи); МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару( ЭтаФорма, "Товары", "Номенклатура,Характеристика,Количество,Склад,ДатаОтгрузки", Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры)); КонецЕсли; |
|||
7
rozer76
30.11.22
✎
13:51
|
(6) к (0)
|
|||
8
Новый1сник2
30.11.22
✎
13:52
|
(6) НеВыполнятьПроверкуПередЗаписью это реквизит документа ?
|
|||
9
rozer76
30.11.22
✎
13:53
|
(8) да, но там надо сначала раскурить как происходит запись - там много чего интересного
|
|||
10
Максим Нижегородец
30.11.22
✎
14:07
|
Вы меня заинтриговали. Зачем для интерактивного функционала использовать реквизиты Документа (т.е. реквизиты, которые могут быть использованы при проведении обработкой и т.п.)?
|
|||
11
Новый1сник2
30.11.22
✎
14:18
|
(10) если будет перепроведение то в реквизите уже будет истина
вставил такой код в обработку проведения и перед записью Если Не мНеВыполнятьПроверкуПередПроведением Тогда Возврат; КонецЕсли; документ все равно проводится и закрывается |
|||
12
Максим Нижегородец
30.11.22
✎
14:25
|
(11) Схема программируется нормально на уровне формы (На Клиенте). Нужно просто предусмотреть обработку событий при нажатии разных КНОПОК и обрабатывать события формы "ПередЗаписью", "ПередЗаписьюНаСервере", "ПослеЗаписиНаСервере" и т.п.
|
|||
13
Новый1сник2
30.11.22
✎
14:26
|
(12) звучит красиво, как можно перехватить событие "Провести и закрыть" ?
|
|||
14
Максим Нижегородец
30.11.22
✎
14:32
|
Обрабатывать ПередЗаписью(<Отказ>, <ПараметрыЗаписи>) - закрытие формы происходит позднее (на момент закрытия документ может быть проведен). Если нужно отдельная обработка события именного этой кнопки, придется эту кнопку подменять своей (и вешай на нее что хочешь).
|
|||
15
Новый1сник2
30.11.22
✎
14:44
|
(14) так перед записью и делаю, оповещение срабатывает, а документ проводится и закрывается.
|
|||
16
Новый1сник2
30.11.22
✎
14:48
|
(14) добавил
Отказ = Истина; форма документа остается открытой как бы так и нужно, но выдает ошибку не удалось Не удалось провести: "Перемещение товаров, материалов"! |
|||
17
Максим Нижегородец
30.11.22
✎
15:02
|
(16) В самом начале процедуры ПередЗаписью(<Отказ>, <ПараметрыЗаписи>) выполняем проверку на наше ОСОБОЕ УСЛОВИЕ и далее:
Отказ = Истина; Возврат; // Это важно, чтобы не было глупых сообщений. Иначе Отказ = Ложь; // Пошли дальше по АЛГОРИТМУ |
|||
18
Новый1сник2
30.11.22
✎
15:07
|
(17) так и сделано
Отказ = Истина; Возврат; |
|||
19
Новый1сник2
30.11.22
✎
15:08
|
похоже не получится так сделать, потому что есть и программное создание документов и с этой проверкой не работает.
|
|||
20
Максим Нижегородец
30.11.22
✎
15:20
|
(19) Есть проверка на вновь созданный документ (еще не записанный), это тоже проверяется при написании логики.
Поверь, пока не нашлось еще такого КОСТЫЛЯ, который не смог написать наш программист для УФ - чтобы пользователь остался доволен (как в былые времена без УФ). |
|||
21
Новый1сник2
30.11.22
✎
15:22
|
(20) "Есть проверка на вновь созданный документ (еще не записанный)" это уже есть
|
|||
22
Новый1сник2
30.11.22
✎
15:24
|
завтра может придумаю костыль, сегодня уже неохота
|
|||
23
Новый1сник2
30.11.22
✎
17:24
|
поменял логику, сделал оповещение при открытии если документ новый. при записи проверки стали не нужны
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |