События ПослеПроведения и ПослеУдаленияПроведения
Привет всем.
Ситуация:
Стоит Конфа ЮТД(Упровляемые формы на основе УТ)
Конфу нельзя вскрывать, делаю через расширения.
В расширении Общим модулем написал процедуру..
Нужно что бы процедура вызывалась после проведения и после удаления проведения.
Фишка в том, что я пытался вызывать ее спец функциями самой 1С:
Получается что эти процедуры срабатывают до записи в регистры и остатки еще не актуальные.
Есть ли какие нибудь фишки?
Ситуация:
Стоит Конфа ЮТД(Упровляемые формы на основе УТ)
Конфу нельзя вскрывать, делаю через расширения.
В расширении Общим модулем написал процедуру..
Нужно что бы процедура вызывалась после проведения и после удаления проведения.
Фишка в том, что я пытался вызывать ее спец функциями самой 1С:
&После("ОбработкаПроведения")
Процедура еГ_ОбработкаПроведения(Отказ, РежимПроведения)
еГ_РаботаСXML.СоздатьФайлСОстатками(ЭтотОбъект);
КонецПроцедуры
&После("ОбработкаУдаленияПроведения")
Процедура еГ_ОбработкаУдаленияПроведения(Отказ)
еГ_РаботаСXML.СоздатьФайлСОстатками(ЭтотОбъект);
КонецПроцедуры
ПоказатьПолучается что эти процедуры срабатывают до записи в регистры и остатки еще не актуальные.
Есть ли какие нибудь фишки?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1. Перед проведением/распроведением прочитать и сохранить текущие движения документа, например, в таблице значений.
2. После проведения/распроведения прочитать новые движения и вычесть из них сохраненные старые - именно на эту разницу будут скорректированы регистры.
3. В процедуру СоздатьФайлСОстатками() кроме ЭтотОбъект передавать еще и ТЗ и учитывать ее содержимое при выполнении формирования файла
Получается что эти процедуры срабатывают до записи в регистры и остатки еще не актуальные.
Если проблему нельзя решить, то ее надо обойти. Как вариант обхода:
1. Перед проведением/распроведением прочитать и сохранить текущие движения документа, например, в таблице значений.
2. После проведения/распроведения прочитать новые движения и вычесть из них сохраненные старые - именно на эту разницу будут скорректированы регистры.
3. В процедуру СоздатьФайлСОстатками() кроме ЭтотОбъект передавать еще и ТЗ и учитывать ее содержимое при выполнении формирования файла
(1) Все должно срабатывать, т.к. запись в регистры происходит уже после этой обработки и остатки должны быть актуальные. Исключением могут быть только подписки После проведения или что-то похожее по смыслу для вашего типа документов
1. Получить остатки и из них отнять движения документа.
2. Получить остатки на границу до документа.
2. Получить остатки на границу до документа.
(2)
Так не пойдет, ведь могут провести документ когда он уже проведен
аналог с формы нужен ПослеЗаписи. Все бы ничего, но в расширение форму добавлять, и могут не проводить документ, а просто записывать или помечать на удаление, оно срабатывает(
Так не пойдет, ведь могут провести документ когда он уже проведен
аналог с формы нужен ПослеЗаписи. Все бы ничего, но в расширение форму добавлять, и могут не проводить документ, а просто записывать или помечать на удаление, оно срабатывает(
Потому что остатки нужно в ТекущаяДата() получать, документ могут распровести или провести задним числом, а после того документа еще товар мог прийти или продать могли
ЭтотОбъект самому создать структурой, в котором будет хранится ваш алгоритм. Так же до вызова этих процедур запросом переделать основные данные.
(10)
вот пока временно сделал ПослеЗаписи, но формы меняются иногда и после обновления расширения отваливаются...
И файл получается формируется даже если просто запишут.
А еще проблема что могут в списке проводить а не в форме
вот пока временно сделал ПослеЗаписи, но формы меняются иногда и после обновления расширения отваливаются...
И файл получается формируется даже если просто запишут.
А еще проблема что могут в списке проводить а не в форме
+ (8) я бы добавил регистр сведений, в котором будет ссылка на документ. При проведении/распроведении добавить или удалять движения в этом регистре. В регламентом задании проверять этот регистр и формировать файл.
Тут быстрое решение. Это попробовать добавить строчку Движения.Записать() для регистров влияющих на остатки.
Т.к. только после этого движения добавляются в базу(но транзакция еще не завершена)
Но лучше сделать рег. задание или на худой конец фоновое задание запускать в момент записи. Т.к. вам выше уже написали, что вы увеличиваете время транзакции, а соответственно время блокировки БД.
Т.к. только после этого движения добавляются в базу(но транзакция еще не завершена)
Но лучше сделать рег. задание или на худой конец фоновое задание запускать в момент записи. Т.к. вам выше уже написали, что вы увеличиваете время транзакции, а соответственно время блокировки БД.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
