Имя: Пароль:
1C
1С v8
При удачном проведении документа требуется провести второй документ. Как лучше?
,
0 yabes
 
23.06.20
17:07
Добрый день. Задача такая: после удачного проведения Документа_1 необходимо перепровести Документ_2. Проведение Документа_1 не обязательно должно выполняться из формы, оно может выполняться в обработке или, например, при обмене - т.е. нельзя воспользоваться методами модуля формы ПослеЗаписиНаСервере() и т.д. В модуле объекта Документа_1 процедура ОбработкаПроведения() выполняется последней. Так как будет правильно решить такую задачу?
1 FIXXXL
 
23.06.20
17:09
(0) Очередь запилить, к примеру
2 dka80
 
23.06.20
17:10
Пишешь в регистр, потом регзаданием смотришь регистр и проводишь свои документы.
3 fisher
 
23.06.20
17:18
Если на вложенных транзакциях делать будешь - то пофиг, что там последним выполняется. Откат вложенной записи откатит внешнюю запись и наоборот.
4 yabes
 
23.06.20
17:18
(1) Что ты имеешь в виду? Например, при выполнении кода Документ_1.Записать() должно выполняться дополнительно и проведение Документа_2 при удачном проведении Документа_1. Т.е. я не могу предварительно сформировать очередь Документ_1, Документ_2, а потом последовательно провести документы, так как в таком случае во всех частях кода где записывается Документ_1 нужно будет это учитывать
5 vova1122
 
23.06.20
17:18
а что делать с Документом2 при распроведении документа1?
6 yabes
 
23.06.20
17:20
(3) В том-то и дело. Тут другой момент. При неудачном проведении Документа_2, для Документа_1 не должно быть отката транзакции.
7 yabes
 
23.06.20
17:26
Если взять прикладную задачу, то Документ_1 - это СписаниеСРасчетногоСчета, а Документ_2 - это АвансовыйОтчет. В одном АвансовомОтчете может быть несколько Списаний и при перепроведении Списания должен перепроводится и Авансовый отчет. Если же при проведении Списания Авансовый отчет не перепроведется - ничего страшного, главное, чтобы Списание в любом случая провелось. Такую задачу поставили аналитики, какая есть) (5) Ничего не должно происходить)
8 fisher
 
23.06.20
17:34
(6) Интересная задача. Если неудачное проведение Документа2 - некритично, то предлагаю не проводить никакие Документы2.
Ну а если серьезно, то тебе уже предлагали записывать очередь проведения Документов2 в регистр сведений и выгребать их оттуда регламентом.
Как раз те, что не провелись - будут там оставаться и можно будет придумать любую политику поведения в этих случаях.
9 Маленький Вопросик
 
23.06.20
17:47
Делай все через попытку, если что-то в условии не выполнится - все откатится назад.
10 dka80
 
23.06.20
17:49
(9) А потом нарвется на сообщение "В данной транзакции уже были ошибки" и будет искать причину до посинения
11 abibas
 
23.06.20
18:11
(7) Т.е., если в одном авансовом отчете 10 списаний, то этот авансовый отчет будет 10 раз проведен?
12 Лефмихалыч
 
23.06.20
18:56
1. бизнес-события, как в ДО
2. тупо регламентным заданием
3. любой другой доступный способ сэмулировать или использовать очередь
13 Злопчинский
 
23.06.20
19:27
(2) херняс получится. ибо логически это связанные вещи могут быть, а по исполнению между ними - дырка. в которую может вклиниться что-то другое и "получить" неверный "результат"
14 Злопчинский
 
23.06.20
19:36
(7) какую-то адскую хрень поставили ваши оналитеги имхо.
это в принуипе два события, разнесенные по времени.
а вы их впиливаете как единомоментное событие. что-то не так в консерватории.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn