Как выполнить операцию только после завершения предыдущей?

1. Asya.Ozerova 41 06.10.23 17:52 Сейчас в теме
Всем доброго времени суток!
У меня такая проблема:
В обработкеПроведения выполняется код:
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);

а дальше мне надо выполнить некие действия с Регистром в котором создается запись как раз таки в при проведении, т.е.:
	ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
	
	УстановитьДатыЗаписи();  
	

но в "УстановитьДатуЗаписи" записи в Регистре еще нет, она появляется чуть позже.
Вот, теперь вопрос: как дождаться завершения предыдущей процедуры?

Как выполнить "УстановитьДатыЗаписи();" только после завершения выполнения "ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);["?
Где-то видела, но Сама ни разу не использовала, помогите пожалуйста!
По теме из базы знаний
Найденные решения
3. Vinzor 91 06.10.23 18:20 Сейчас в теме
Облачите первое действие в транзакцию.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 06.10.23 18:18 Сейчас в теме
(1) Меняйте в ЭтотОбъект.Движения. Что бы два раза с дивана не вставать не напрягать базу повторной записью регистра.
4. Asya.Ozerova 41 06.10.23 18:24 Сейчас в теме
(2)Мне надо провести документ и сразу после проведения поменять период, это поможет?
Спасибо, попробую!
6. RustamZz 06.10.23 18:26 Сейчас в теме
(4) Запись регистров происходит по окончании транзакции проведения, если только нет явного Движения.Записать(). Но так лучше не делать, это не по стандарту 1С.
7. Asya.Ozerova 41 06.10.23 18:27 Сейчас в теме
11. gybson 06.10.23 20:27 Сейчас в теме
(4) Вам не нужно этого делать. Это не может решить какую-либо задачу, которую нельзя решить более адекватным способом.
12. Asya.Ozerova 41 06.10.23 20:29 Сейчас в теме
13. gybson 06.10.23 22:02 Сейчас в теме
(12) Никакую значит 0, не существует таких и не существует примера несуществующих вещей.

У вас задача перейти с закрытыми глазами на красный свет. Безусловно, существует много способов её решить, но большинство тех, кто решал, никогда об этом не расскажут. Какая-то часть проявит эрудицию, но сами так делать не станут. Единицы поинтересуются к чему такие сложности.

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

Этот длинный спич к тому, что в практике такие задачи возникают исключительно редко и достаются тем, кто советов не спрашивает.

P.S. В расширении можно добавить свою обработку проведения с директивой &После, она запустится после обработки проведения, но в той же транзакции.
8. Asya.Ozerova 41 06.10.23 18:39 Сейчас в теме
(2)А как будет правильнее поменять период записи регистра накопления?
Вот я его провела с одним периодом, закрыла документ и сразу надо поменять период на другой
9. RustamZz 06.10.23 19:06 Сейчас в теме
(8) Менять не закрывая документ - самый правильный подход.
10. Asya.Ozerova 41 06.10.23 19:25 Сейчас в теме
(9)Даже когда не закрываю, не успевает провести
3. Vinzor 91 06.10.23 18:20 Сейчас в теме
Облачите первое действие в транзакцию.
5. Asya.Ozerova 41 06.10.23 18:24 Сейчас в теме
(3)Сейчас попробую.
Спасибо!
21. Asya.Ozerova 41 07.10.23 11:49 Сейчас в теме
(3)Помогло! Спасибо!!!
14. gybson 06.10.23 22:05 Сейчас в теме
Чтобы действие выполнилось сразу после этой строчки, достаточно написать его на следующей строке после этой. Так работает платформа, код исполняется сверху вниз слева направо.

Т.е. можно даже вот так написать

ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);МояПроцедураПосле();
15. karamazoff 96 06.10.23 22:12 Сейчас в теме
(14)Это так в бейсике было, а тут если сервер, там фоны, длительные операции, самое правильное разнести процессы по разным процедурам
16. gybson 06.10.23 22:20 Сейчас в теме
(15) так до сих пор везде, кроме пролога. Есть одна очевидная вещь, процедура заканчивается ключевым словом "КонецПроцедуры", всё что до него - все еще та же процедура и все команды в ней выполняются строго друг за другом.
19. Asya.Ozerova 41 07.10.23 11:46 Сейчас в теме
(14)Если бы все было так просто!
Они синхронно выполняются и "Моя процедура" по факту успевает выполниться до Проведения!
23. gybson 07.10.23 20:02 Сейчас в теме
(19) у набора регистра записи есть событие "при записи"

Вы пишите лучше задачу сразу, Вам подскажут как это обычно делается.
25. Asya.Ozerova 41 07.10.23 20:06 Сейчас в теме
26. Asya.Ozerova 41 07.10.23 20:07 Сейчас в теме
(23)Вопрос уже закрыт! Вы не видите?
Решение уже найдено
27. Torin57 7 07.10.23 20:44 Сейчас в теме
(26) Любопытствую что за задача была? Какая-то временная обработка на один раз?
28. Asya.Ozerova 41 07.10.23 21:56 Сейчас в теме
(27)Нет, не временная. Посмотрите РМК в УТ, там после ОбработкиПроведения в модуле формы происходит корректировка регистров и повторное проведение, у меня была аналогочная задача
29. Asya.Ozerova 41 07.10.23 22:00 Сейчас в теме
(27)Кстати там как и мне подсказали (3) используется Транзакция, но не в Обработке проведения, а после в модуле формы
30. Torin57 7 08.10.23 12:28 Сейчас в теме
(29) УТ нет. А как так получается что ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ) продолжает выполняться, а уже вызывается УстановитьДатыЗаписи()? Обработка проведения в фоновом задании запускается?
17. karamazoff 96 06.10.23 22:24 Сейчас в теме
Э... а асинхронные вызовы Вам ни о чем не говорят, там как раз процедура запускает другую и не контролирует отработку кода
20. Asya.Ozerova 41 07.10.23 11:47 Сейчас в теме
(17)Это служебный обработчик, не уверена что его можно менять
22. karamazoff 96 07.10.23 13:58 Сейчас в теме
(20)Ну, нужно решить, меняем мы или нет, но менять результаты проведения в самом доке который проводится очень не камильфо. Как вариант обработка по расписанию, которая пройдется по докам и сделает все что нужно, можно через внешнюю, можно через регламент. Если док интерактивный, то в модуле формы есть ПослеЗаписи и ПослеЗаписиНаСервере, можно их поковырять в расширении, там уже должно быть все записано
24. Asya.Ozerova 41 07.10.23 20:05 Сейчас в теме
(22)Вопрос уже решен.
Не надо "велосипед" придумывать
18. user1050439 7 06.10.23 22:42 Сейчас в теме
Асинх Процедура П1...

Процедура П2

      Ожидать П1
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот