|
Как прервать проведение документа, и записать его? ↓ (Волшебник 08.02.2024 19:49) |
☑ | ||
---|---|---|---|---|
0
tabarigen
08.02.24
✎
17:11
|
Попробовал так
Процедура ОбработкаПроведения(Отказ, РежимПроведения) //.... Отказ= Истина; Записать(РежимЗаписиДокумента.Запись); //.... КонецПроцедуры но не прокатило. |
|||
1
Волшебник
08.02.24
✎
17:15
|
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Возврат; КонецПроцедуры |
|||
2
tabarigen
08.02.24
✎
17:16
|
(1) а произойдет ли в таком случае Запись?
|
|||
3
Волшебник
08.02.24
✎
17:17
|
(2) да
|
|||
4
Garykom
08.02.24
✎
17:23
|
Движения останутся старыми (если документ был уже ранее проведен)
Получится рассинхронизация между самим документом и его движениями/проводками |
|||
5
tabarigen
08.02.24
✎
17:24
|
(3) проверил)
Записи не происходит, что в принципе логично. |
|||
6
Волшебник
08.02.24
✎
17:27
|
(5) Плохо проверяли. Должно получиться (4)
|
|||
7
tabarigen
08.02.24
✎
17:40
|
(4) я же написал, что должны сохраниться изменения но проводиться док не должен.
например я поменяю значения в реквизите комментарий и буду проводить док. Так вот я хочу чтоб док не проводился то есть Отказ=Истина; и чтоб дох записался при этом в режиме Запись |
|||
8
tabarigen
08.02.24
✎
17:42
|
Если НЕ ТчСоответствуетПеремещению Тогда
Отказ= Истина; Записать(РежимЗаписиДокумента.Запись); Возврат; КонецЕсли; скорее всего так а запись не происхоит потому что типовые процедуры переписаны вдоль и поперек |
|||
9
Волшебник
08.02.24
✎
17:52
|
(7) Уберите Отказ=Истина и остальные строчки, оставьте только Возврат. Не искажайте мою мысль
|
|||
10
RomanYS
08.02.24
✎
18:17
|
(0) в транзакции проведения боржоми пить уже поздно. Сохранить и не провести не получится. Сделай внешнюю обертку для проведения.
И не надо ничего менять в объекте в процессе проведения, делайте это ПередЗаписью (можно проверить режим записи, если нужно) |
|||
11
RomanYS
08.02.24
✎
18:19
|
(7)
Док.Записать(); Док.Записать(РежимЗаписиДокумента.Проведение) |
|||
12
RomanYS
08.02.24
✎
18:19
|
+(11) или так
Попытка Док.Записать(РежимЗаписиДокумента.Проведение) Исключение Док.Записать(); КонецПопытки; |
|||
13
Волшебник
08.02.24
✎
18:42
|
Мне сейчас лениво проверять, но может сработает это?
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Если НеДелатьДвижения тогда Проведен = Ложь; Возврат; КонецЕсли; // ниже стандартная обработка проведения // ... КонецПроцедуры |
|||
14
Прохожий
08.02.24
✎
18:51
|
(13) Конечно сработает, но документ будет проведенный. Хоть и без проводок. А он хочет чтобы проведен = ложь после обработки проведения стало. Даже если он перепроводит уже проведенный документ чтобы он тоже стал не проведенным.
|
|||
15
Волшебник
08.02.24
✎
18:54
|
(14) Вы проверили? Жаль, что платформа присваивает Проведен=Истина в конце. А ведь могло быть красиво: проведение без галочки и непроведение с галочкой - полный полёт фантазии и театр абсурда.
|
|||
16
Прохожий
08.02.24
✎
18:54
|
(7) Если настала ОбработкаПроведения то он уже проводится. Как может быть "но проводиться док не должен"?
|
|||
17
Волшебник
08.02.24
✎
18:55
|
(16) Слово "проводится" ничего не означает.
Это куски программного кода, которые делают движения по регистрам, и галочка "Проведен". Так Вы проверяли или гадаете вместе со мной? |
|||
18
tabarigen
08.02.24
✎
18:56
|
(12) все верно, перенес в ПередЗаписью()
но все равно пока не могу добиться сохранения. Если ЗначениеЗаполнено(ТранзитноеПеремещение) Тогда ТчСоответствуетПеремещению = ПроверитьСоответствиеТоваровВПеремещении(ТранзитноеПеремещение); Если НЕ ТчСоответствуетПеремещению Тогда #Если Клиент Тогда Сообщить("Для транзитных отгрузок количество товара в накладной должно соответствовать количеству в связанном перемещении"); #КонецЕсли КонецЕсли; КонецЕсли; Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда Попытка Записать(РежимЗаписиДокумента.Запись); Отказ = Истина; Возврат; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; |
|||
19
Прохожий
08.02.24
✎
18:58
|
(8) "запись не происхоит" видимо потому что текущая транзакция уже заблокировала этот же объект. По идее самовзаимоблокировка, дэдлок, но кто-то защиту от дурака вставил в платформу.
|
|||
20
Прохожий
08.02.24
✎
18:59
|
(17) Делайте ставки, господа... Кто ж такое проверяет.
|
|||
21
Волшебник
08.02.24
✎
19:00
|
(18) Пока Вы оставляете фразу "Отказ = Истина;", ничего не получится. Транзакция отменяется. Транзакция включает в себя и запись документа. Вы хотите не делать движений при определённых условиях. Сдвиньте контекст.
|
|||
22
Прохожий
08.02.24
✎
19:00
|
Мы проверяем только собственные телепатические способности.
|
|||
23
Прохожий
08.02.24
✎
19:01
|
Ладно, попробуем сейчас...
|
|||
24
tabarigen
08.02.24
✎
19:05
|
(21) да все верно.
Я что то концептуально делаю не так.. Возможно не в тех обработчиках. |
|||
25
Волшебник
08.02.24
✎
19:07
|
(20) Я проверил. Галочку "Проведен" ставит платформа в конце ОбработкаПроведения.
Так что только обёртки из формы как пишет RomanYS в (10)(11)(12) |
|||
26
H A D G E H O G s
08.02.24
✎
19:10
|
Вызови фоновое задание да запиши там.
|
|||
27
Волшебник
08.02.24
✎
19:14
|
Внутри ОбработкаПроведения() фраза "Отказ=Истина" или выброс исключения приведёт к отмене _записи_ документа, потому что запись+проведение выполняются в одной транзакции.
Если же Вы не проведёте документ по регистрам (не сделаете движения), то всё отработает без ошибок (документ будет записан), но флаг Проведен будет Истина, появится синяя галочка. И не важно, что вы меняли флаг Проведен внутри ОбработкаПроведения, оно присваивается в Истина в конце, потому что не было Отказ=Истина и не было исключения. |
|||
28
Волшебник
08.02.24
✎
19:15
|
(26) При чём тут фоновые задания?
|
|||
29
Asmody
08.02.24
✎
19:16
|
(0) Зачем?!
|
|||
30
Волшебник
08.02.24
✎
19:16
|
(29) Ну всё, лесник пришёл...
|
|||
31
tabarigen
08.02.24
✎
19:17
|
В общем сделал так.
В передзаписью() Проверяю и устанавливаю флаг ТчСоответствуетПеремещению Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда ТранзитноеПеремещение = ПолучитьСвязанноеТранзитноеПеремещение(); Если ЗначениеЗаполнено(ТранзитноеПеремещение) Тогда ТчСоответствуетПеремещению = ПроверитьСоответствиеТоваровВПеремещении(ТранзитноеПеремещение); КонецЕсли; КонецЕсли; А потом уже в ОБработкеПроведения проверяют этот флаг и делаю Отказ |
|||
32
Волшебник
08.02.24
✎
19:18
|
(31) Ну ок. Мы нихрена не поняли Вашу бизнес-логику, но если Вас устраивает, то ок.
|
|||
33
Прохожий
08.02.24
✎
19:26
|
Можно так попробовать, но на сервере оповещений нет. Смысл общий понятен, через длительные операции (фоновым заданием) переделать легко.
Скрыто модератором, как возможно недостоверная информацияПроцедура ОбработкаПроведения(Отказ, РежимПроведения) Если ПроводяНеПроводить Тогда Обработчик = Новый ОписаниеОповещения("ОбработкаПроведенияЗавершение", ЭтотОбъект, Новый Структура("ЭтаСсылка", Ссылка)); ВыполнитьОбработкуОповещения(Оповещение); Отказ = Истина; Возврат; КонецЕсли; КонецПроцедуры Процедура ОбработкаПроведенияЗавершение(Результат, ДополнительныеПараметры) Экспорт Док = ДополнительныеПараметры.ЭтаСсылка.ПолучитьОбъект(); Пока Док.Заблокирован() Цикл КонецЦикла; Док.Записать(РежимЗаписиДокумента.Запись); КонецПроцедуры |
|||
34
Прохожий
08.02.24
✎
19:23
|
(26) + 1
|
|||
35
Волшебник
08.02.24
✎
19:26
|
(33) Чушь какая-то
|
|||
36
Прохожий
08.02.24
✎
19:26
|
Мир начинался с хаоса
|
|||
37
Прохожий
08.02.24
✎
19:26
|
Иначе дорабатывать будет нечего. ТС наш человек.
|
|||
38
Волшебник
08.02.24
✎
19:28
|
(37) Я слежу за вами всеми и всеми вами. Вы мне не нравитесь.
|
|||
39
tabarigen
08.02.24
✎
19:45
|
(33) так у меня вообще Обычные формы)
|
|||
40
Волшебник
08.02.24
✎
19:45
|
(39) 👍 Наш человек!
|
|||
41
tabarigen
08.02.24
✎
19:46
|
(37) а ты такое ТЗ бизнеса иначе не решишь)
Я еще опустил ту часть ТЗ в которой просили в транзации проведения Создавать и проводить связанные документ) |
|||
42
tabarigen
08.02.24
✎
19:46
|
(40) хватит троллить
|
|||
43
Волшебник
08.02.24
✎
19:47
|
(42) Ага, но я не смогу удержаться, если захочу протроллить кого-то на своём форуме.
|
|||
44
Волшебник
08.02.24
✎
19:50
|
(41) Ваша орг-фигня не имеет отношения к сабжу, так что я ветку закрываю. Вам даётся право последнего слова.
|
|||
45
Прохожий
10.02.24
✎
20:25
|
(39) Я надеялся что у вас шестерка, хотел предложить сразу оригинальный переход на 8.3
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |