Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: alyuev от 27 мая 2024, 19:54

Название: ПослеПроведения() - что можно придумать?
Отправлено: alyuev от 27 мая 2024, 19:54
Возникла задача изменять дату подчиненного документа к дате текущего. Автомат проводит документы, работает перехватчик. Там возникает событие ОбработкаПроведения() и вот после неё хотелось быть выполнить поиск подчиненных для текущего и изменить им даты.
Пробовал сделать через Сервис.ВнешнееСобытие(). Событие_ОбработкаВнешнегоСобытия() вызвалось. Но аж после всего пакета проведения. Т.е. сначала отработал весь пакет для проведения. Затем, видимо, запоминется стек ВнешнегоСобытия, и уже в конце стал изменять время. И то - это была проверка интерактивная. Под пользователем. А под автоматом еще не пробовали даже.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 27 мая 2024, 22:48
Что есть "пакет проведения"...?
.
У меня сделано так при интерактивной работе пользователя:
После того как отработает проведение в самом конце процедуры ОбработкаПроведения генерится формексом внешнее событие "счетфактура" И после завершения модуля проведения отрабатывает создание счф.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 27 мая 2024, 22:54
Как в пакете - если идёт проведение документов в цикле - чтобы отработало внешнее событие должен закончится код исполнения. И потом уже внешнее событие пошло отрабатывать. Накопить тысячу внешних событий мне не кажется хорошей илеей.может проще после проведения документа сделать код обработки подч. Справочников? Безо всяких внешних событий на каждое проведение? - я бы так сделал.
Или извращаться с ОО чтобы был тайм-аут в который может отработать внешнее событие - но жто мне кардинально не нравится
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 27 мая 2024, 22:55
Всё вышенаписанное про ситуацию когда не используется перехватчик.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: alyuev от 28 мая 2024, 10:36
"Пакет проведения" - это цикл по тз документов. А что такое "ОО"?
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 28 мая 2024, 16:48
ОО - обработка ожидания
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 28 мая 2024, 16:51
Цитата: alyuev от 28 мая 2024, 10:36"Пакет проведения" - это цикл по тз документов."
Зачем тогда извращения всякие?
Делать просто
В цикле по ТЗ для каждого документа типа
Начать транзакцию
    Провести документ
    Обработать подчинённые
Зафиксировать транзакуию
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: alyuev от 28 мая 2024, 18:13
Провести документ можно из любого места: вручную, из внешней обработки своей, из внешней обработки чужой. Переватчик всё проглотит. И в нем место централизованной обработки. Но тут нашлось место более сложной задачи. Вот и думаем, как её решить. Если бы был обработчик ПослеПроведения(), т.е. когда завершилась транзакция текущего проводимого документа - тот тут можно было бы сделать нужные нам действия, но пока его нет. Поэтому использовали ВнешнееСобытие.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 28 мая 2024, 20:10
Ну тут тогда внешнее событие отработает после завершения всего кода, если проводится один документ, то норм будет, а если пакет документов без перерываи и хз где и как может быть сформирован такой пакет - то будет уже кака при попытке сделать универсально при любой ситуации...
Может тут попробовать в конце проведения писать некое "задание" в "очередь заданий" (Например, справочник заданий) И после записи задания ещё и генерить ВС (внешнее событие). Тогда независимо от количества заданий в очереди первое же отработающее ВС обсчитает всю очередь заданий, а если будет следующее ВС - если очередь пуста, то и ок, непуста - обсчитает...
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: alyuev от 31 мая 2024, 11:52
Альф, а формексом можно ввобще сделать вызов такой процедры как ПослеПроведения(), т.е. чтобы она вызвалась в модуле проведения документа автоматом уже ПОСЛЕ выхода из ОбработкаПроведения()? Понятно, что перехватчик уже это не сделает (надо будет и его дореализовывать, как я понимаю, в 1cpp).
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: АЛьФ от 31 мая 2024, 16:22
Цитата: alyuev от 31 мая 2024, 11:52Альф, а формексом можно ввобще сделать вызов такой процедры как ПослеПроведения(), т.е. чтобы она вызвалась в модуле проведения документа автоматом уже ПОСЛЕ выхода из ОбработкаПроведения()? Понятно, что перехватчик уже это не сделает (надо будет и его дореализовывать, как я понимаю, в 1cpp).
Теоретически можно. Только в контексте озвученной задачи это должно быть ПослеЗавершенияТранзакции. И что там внутри транзакции было, какие документы менялись уже непонятно будет.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Arbuz от 31 мая 2024, 17:35
Ага, и тут выходит из тумана ПослеОтменыПроведения(), далее ПередПроведением() и ПередОтменойПроведения(), которую легендарный Wirth несколько приколхозил при успешно реализованных ПриЗаписи; ПередПроведением; ПослеПроведения; ПослеУдаленияПроведения; ПередУдалением; ПослеУдаления; ПередОтменойУдаления; ПослеОтменыУдаления. Оно у него называется ПередУдалениемПроведения(). Все эти события работают вне родной транзакции, но в одном контексте(!), окромя одного — того проблемного.

И для развлечения делаем такой прикол — создаём петлю подчинённых документов, желательно подлиннее и перепроводим один документ из неё )).
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 31 мая 2024, 23:43
Баба Яга против такого колхозекостыльного строения.
Наколхозить можно всякого полезного, но оно должно работать железобетонное. Нахрена нам ещё один глючный и тормозной а-ля снеговик?
.
Для одиночного интерактивного или программного проведения в интерактивном сеансе - хотелка ТС в (0) решается ф-штатно.
.
В пакетном проведении решается штатно нормально написанным кодом транзакций и попыток с сохранением кода отработки одиночного интерактивного проведения.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 31 мая 2024, 23:44
Ф-штатно = с использованием текущих возможностей форекс.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 31 мая 2024, 23:46
А если через ВК или как-то иначе умудряться доставать из объекта реквизит Verstamp - было бы кузяво.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Djelf от 01 июня 2024, 07:34
Цитата: Злоп от 31 мая 2024, 23:46А если через ВК или как-то иначе умудряться доставать из объекта реквизит Verstamp - было бы кузяво.
1sqlite Verstamp достает. Только оно слетает в ноль, при Выгрузить/Загрузить.
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Злоп от 01 июня 2024, 10:18
Это понятно, хотелось бы типа штатно док.verstamp
Название: Re: ПослеПроведения() - что можно придумать?
Отправлено: Arbuz от 03 июня 2024, 15:53
Рзвратил, понимаешь, АЛьФ нас тут исполнением желаний — хочется, видишь ли, странного теперь...  ;D