События ПослеПроведения и ПослеУдаленияПроведения

1. BARDER 25 27.02.22 19:38 Сейчас в теме
Привет всем.
Ситуация:
Стоит Конфа ЮТД(Упровляемые формы на основе УТ)
Конфу нельзя вскрывать, делаю через расширения.
В расширении Общим модулем написал процедуру..
Нужно что бы процедура вызывалась после проведения и после удаления проведения.
Фишка в том, что я пытался вызывать ее спец функциями самой 1С:

&После("ОбработкаПроведения")
Процедура еГ_ОбработкаПроведения(Отказ, РежимПроведения)
	еГ_РаботаСXML.СоздатьФайлСОстатками(ЭтотОбъект);
КонецПроцедуры

&После("ОбработкаУдаленияПроведения")
Процедура еГ_ОбработкаУдаленияПроведения(Отказ)
	еГ_РаботаСXML.СоздатьФайлСОстатками(ЭтотОбъект);
КонецПроцедуры
Показать


Получается что эти процедуры срабатывают до записи в регистры и остатки еще не актуальные.

Есть ли какие нибудь фишки?
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. ishelper 28.02.22 13:24 Сейчас в теме
(1)
Получается что эти процедуры срабатывают до записи в регистры и остатки еще не актуальные.
Если проблему нельзя решить, то ее надо обойти. Как вариант обхода:
1. Перед проведением/распроведением прочитать и сохранить текущие движения документа, например, в таблице значений.
2. После проведения/распроведения прочитать новые движения и вычесть из них сохраненные старые - именно на эту разницу будут скорректированы регистры.
3. В процедуру СоздатьФайлСОстатками() кроме ЭтотОбъект передавать еще и ТЗ и учитывать ее содержимое при выполнении формирования файла
13. 603692 3 28.02.22 13:38 Сейчас в теме
(1) Все должно срабатывать, т.к. запись в регистры происходит уже после этой обработки и остатки должны быть актуальные. Исключением могут быть только подписки После проведения или что-то похожее по смыслу для вашего типа документов
14. 603692 3 28.02.22 13:40 Сейчас в теме
(1) посмотрите по отладке есть ли все движения после обработки проведения, и если нет, посмотрите в какие процедуры отладки идет после
20. dandykry 11 01.03.22 07:01 Сейчас в теме
(1)

&После("ОбработкаПроведения")
Процедура еГ_ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Записать();
еГ_РаботаСXML.СоздатьФайлСОстатками(ЭтотОбъект);
КонецПроцедуры
21. x_under 13 01.03.22 18:25 Сейчас в теме
(1) Я бы привязался не к событию документа, а к событию регистра накопления ПриЗаписи.
22. BARDER 25 01.03.22 20:27 Сейчас в теме
(21) не получиться, при распроведении не будет это событии выполнять
23. x_under 13 02.03.22 08:44 Сейчас в теме
(22) кто вам такое сказал? Данное событие работает с набором записей и в любом случае его генерирует
Прикрепленные файлы:
24. mark_oilbass 02.03.22 10:07 Сейчас в теме
(1) а что если сделать события с дериктивой Вместо или ИзменениеИКонтроль. Найти место где произошла запись (Движения.Записать()) и после этого разместить свой код
2. burgomister 59 27.02.22 20:35 Сейчас в теме
1. Получить остатки и из них отнять движения документа.
2. Получить остатки на границу до документа.
3. BARDER 25 27.02.22 21:07 Сейчас в теме
(2)
Так не пойдет, ведь могут провести документ когда он уже проведен
аналог с формы нужен ПослеЗаписи. Все бы ничего, но в расширение форму добавлять, и могут не проводить документ, а просто записывать или помечать на удаление, оно срабатывает(
4. burgomister 59 27.02.22 21:09 Сейчас в теме
Почему второй вариант не пойдёт? Граница ДО документа.
5. BARDER 25 27.02.22 22:15 Сейчас в теме
Потому что остатки нужно в ТекущаяДата() получать, документ могут распровести или провести задним числом, а после того документа еще товар мог прийти или продать могли
6. CrazyBee 5 28.02.22 06:21 Сейчас в теме
ЭтотОбъект самому создать структурой, в котором будет хранится ваш алгоритм. Так же до вызова этих процедур запросом переделать основные данные.
7. polax 28.02.22 07:50 Сейчас в теме
А что мешает делать это в модуле формы в ПриЗаписиНаСервере?
9. BARDER 25 28.02.22 12:47 Сейчас в теме
(7)
ПриЗаписиНаСервере работает даже в момент когда просто запишут документ... а мне надо после проведения и после распроведения, именно после!
10. user1278383 5 28.02.22 12:55 Сейчас в теме
(9) если можно сделать из формы, то там есть событие после записи на сервере
18. BARDER 25 28.02.22 18:20 Сейчас в теме
(10)
вот пока временно сделал ПослеЗаписи, но формы меняются иногда и после обновления расширения отваливаются...
И файл получается формируется даже если просто запишут.
А еще проблема что могут в списке проводить а не в форме
25. mark_oilbass 02.03.22 10:15 Сейчас в теме
(9)В этой процедуре можно посмотреть режим записи если проведение в ДополнительныеСведения передать признак "ФормироватьФайл", послеЗаписиНаСервере на форме проверять этот признак и формировать файл
8. user1278383 5 28.02.22 08:12 Сейчас в теме
И долго такой файл формируется? Задерживать транзакцию ради формирования файла...
coollerinc; Adilgeriy; +2 Ответить
11. user1278383 5 28.02.22 12:56 Сейчас в теме
+ (8) я бы добавил регистр сведений, в котором будет ссылка на документ. При проведении/распроведении добавить или удалять движения в этом регистре. В регламентом задании проверять этот регистр и формировать файл.
16. BARDER 25 28.02.22 16:08 Сейчас в теме
(11)
с регламентом проблемы, это Ювелирсофт... у них через одно место...
15. coollerinc 196 28.02.22 14:40 Сейчас в теме
Тут быстрое решение. Это попробовать добавить строчку Движения.Записать() для регистров влияющих на остатки.
Т.к. только после этого движения добавляются в базу(но транзакция еще не завершена)

Но лучше сделать рег. задание или на худой конец фоновое задание запускать в момент записи. Т.к. вам выше уже написали, что вы увеличиваете время транзакции, а соответственно время блокировки БД.
user1835472; +1 Ответить
17. BARDER 25 28.02.22 18:19 Сейчас в теме
(15)
Не получиться фоновое запускать, конфа Ювелирсофтовская не доделаная... и регл не добавить через расширения
19. coollerinc 196 28.02.22 21:48 Сейчас в теме
(17) если есть БСП то можно через внешнюю обработку, запускать регламентно задание.
Оставьте свое сообщение

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