|
Запись документа без перепровдения. | ☑ | ||
---|---|---|---|---|
0
jamesgold
20.09.22
✎
19:19
|
Добрый день, прошу помочь.
Имеется документ на поддержке с возможностью редактирования. Необходимо при проведении документа выполнять алгоритм, однако при записи документа срабатывает проведение и алгоритм: 1. срабатывает когда не должен т.е. при записи. 2. при проведении он срабатывает еще раз. Каким образом при проведении можно различить что инициатор запись. Свойство на форме "ПриЗаписиПерепроводить" менять нельзя. |
|||
1
OldCondom
20.09.22
✎
19:32
|
убрать лишний обработчик призаписи/после записи
|
|||
2
OldCondom
20.09.22
✎
19:33
|
а лучше снять возможность редактирования и подписку сделать
|
|||
3
ejikbeznojek
20.09.22
✎
19:39
|
А если провели, распровели а потом опять провели, алгоритм должен отработать 2 раза или 1?
|
|||
4
ejikbeznojek
20.09.22
✎
19:43
|
Ну или добавь в перед записью чтение ряда реквизитов в глобальную переменную. В том числе и реквизит проведен.
А в проведении смотри, если сейчас проведён, а был не проведён, то запуская свой алгоритм. |
|||
5
jamesgold
20.09.22
✎
19:53
|
(3) один раз
|
|||
6
ejikbeznojek
20.09.22
✎
20:00
|
(5) Тогда 4 не подойдёт))
Наверное тогда нужен 2й алгоритм, который проверит выполнялся ли 1й)) |
|||
7
jamesgold
20.09.22
✎
20:03
|
(6) Проблема в том что алгоритм выполняется лишний раз уже при записи в результате данные которые сформированы когда документ еще не проведен.
|
|||
8
ejikbeznojek
20.09.22
✎
20:06
|
Может быть перенести из ПриЗаписи в Обработку проведения?
|
|||
9
jamesgold
20.09.22
✎
20:07
|
(8) Там на клинете алгоритм выполняется
|
|||
10
ejikbeznojek
20.09.22
✎
20:13
|
Это плохо))
Есть ещё ПослеЗаписи, которое после проведения выполняется, но это уже вроде не транзакция. И в случае ошибки алгоритма, обратно документ не откатится. |
|||
11
OldCondom
20.09.22
✎
20:27
|
что так все сложно то. Пиши реквизит или регистр сведений с признаком "АлгоритмВыполнен", на него же проверку делать/не делать.
Призаписиперепроводить не просто так было придумано. |
|||
12
jamesgold
20.09.22
✎
20:31
|
(11) Проблема в том что при записи и при проведении алгоритм выполняется в процедуре ПриПроведении, но при этом при записи он не должен выполнятся даже если алгоритм еще не выполнен.
|
|||
13
jamesgold
20.09.22
✎
20:32
|
Я не могу понять как в модуле объекта в обработке проведения различить проводится сейчас документ или записывается.
|
|||
14
jamesgold
20.09.22
✎
20:33
|
В этой процедуре нет параметра РежимЗаписи
|
|||
15
jamesgold
20.09.22
✎
20:35
|
Пробовал подписку на событие при проведении, но она также 2 раза срабатывает ведь процедура обработк проведения по факту срабатывает 2 раза при записи и при проведении.
|
|||
16
jamesgold
20.09.22
✎
20:36
|
(10) ПослеЗаписи выполняется также после обычной записи, поэтому это событие не подходит.
|
|||
17
1snik_d
20.09.22
✎
20:40
|
Перенести алгоритм на сервер с клиента
|
|||
18
OldCondom
20.09.22
✎
20:43
|
1 раз пиши признак при проведении. Второй раз проверяй и уже не важно, проводится или записывается. В (5) сказано, что выполняется 1 раз.
(17) - это. Проверяешь проведен/не проведен в обработчике проведения |
|||
19
jamesgold
20.09.22
✎
21:34
|
(17) Только на клинете алгоритм выполняется
|
|||
20
jamesgold
20.09.22
✎
21:50
|
1 раз пиши признак при проведении - как понять что сейчас проведение? В момент первого проведения у реквизита "проведен" уже значение истина.
|
|||
21
OldCondom
20.09.22
✎
22:50
|
(19) а что за алгоритм? В чем суть задачи?
|
|||
22
Serg_1960
21.09.22
✎
08:32
|
А чем автору не нравится классика жанра - ДополнительныеСвойства объекта? Если объект редактируется, то всегда туда можно записать, например, имена обработчиков и не париться с вопросами "Где я? Кто я?"(с)
|
|||
23
Serg_1960
21.09.22
✎
08:49
|
PS: если заголовок темы прочитать дословно, как желание автора записать документ без проведения тогда, когда религия запрещает изменять свойство на форме "ПриЗаписиПерепроводить", то:
Процедура ЗаписатьПрограммноНаСервере() ПерепроведениеПриЗаписи = ПриЗаписиПерепроводить; ПриЗаписиПерепроводить = Ложь; ПараметрыЗаписи = Новый Структура; ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись); Попытка Записать(ПараметрыЗаписи); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ПриЗаписиПерепроводить = ПерепроведениеПриЗаписи; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |