Движения документа в подписке на события #628385


#0 by suvolod
Бух 2.0, док "Перемещение товаров", хочу дописать некоторые движения по забалансовому счету при проведении этого документа. Пытался сделать так: В итоге при первом проведении - мой набор всегда пуст, при перепроведении документа - набор содержит "старые" записи по бух.регистру (т.е. существовавшие до перепроведения документа) Вопрос. Каким образом можно (и можно ли вообще) получить новые движения документа через подписку на событие по этому документу?
#1 by sanja26
если хочешь дописать, то и дописывай Движение = Источник.Движения.Хозрасчетный.Добавить
#2 by Naumov
А читать за чем? Пиши в коллекцию и спи спокойно
#3 by sanja26
или после записи получай набор, предварительно проверив на проведен
#4 by suvolod
для формирования проводки по забалансовому счету мне нужны данные, которые были сформированны основным кодом. В частности, субконто Партии
#5 by ОбычныйЧеловек
Делай через набор записей НаборЗаписей=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей; НаборЗаписей.Отбор.Регистратор.Установить(Регистратор); НаборЗаписей.Прочитать;
#6 by sanja26
кстати да в подписке на проведение уже должны быть движения
#7 by y22-k
#8 by y22-k
Подписка обработка проведения
#9 by suvolod
Код, похожий на твой, уже пробовал, но таблица движений остается пустая:
#10 by suvolod
Спасибо, сейчас попробую
#11 by suvolod
нет, тоже не прокатывает.. первая же строчка возвращает пустую ТЗ. Но движения определенно есть! После проведения документа вижу целых 4 проводки
#12 by suvolod
видимо, придется через подписку ПриЗаписи наборазаписей регистра делать.. хотя лично мне кажется более удобным (да и логичным) засунуть это в подписку ОбработкаПроведения самого документа.
#13 by ОбычныйЧеловек
&suvolod хочешь нас уверить, что у тебя в подписке на событии приведенный выше код не видит движений?
#14 by suvolod
да
#15 by ОбычныйЧеловек
Быть такого не может.
#16 by ОбычныйЧеловек
Движение по регистру бух. выполняется в модуле проведения или в еще одной подписке?
#17 by Naumov
1С считает, что алгоритм подписки не должен зависеть/влиять от алгоритма проведения документа.
#18 by 0Mint
НачатьТранзакцию нигде не применяешь?
#19 by unregistered
Явно подписка не на то событие. На какое событие подписываешься?
#20 by hhhh
может. Там или или. Или вариант из видит движения или из .
#21 by ОбычныйЧеловек
В подписке уже есть все движения т.е. она выполняется после модуля проведения (у меня на этом конфа вся построена а автор уверяет, что движений там нету).
#22 by suvolod
как это проверить? Я использую абсолютно типовую БП 2.0, в которой добавил единственную подписку - Источник: ДокументОбъект.ПеремещениеТоваров, Событие - ОбработкаПроведения. Код: НаборЗаписей пуст, хотя после проведения проводки по доку есть
#23 by ОбычныйЧеловек
Не знаю как работает типовая, но с удовольствием бы посмотрел как может этот код не возвращать записи..
#24 by hhhh
если движения не записаны, тогда Источник.Движения их видит, а НаборЗаписей.Прочитать не видит. или случай 2. Движения пишутся через НаборЗаписей. ТОгда надо всегда делать Прочитать;
#25 by unregistered
Такой код вроде как должен вернуть пустой набор, т.к. данные еще не записаны в базу. Код из более правильный - получать набор через свойство Источник.Движения.
#26 by ОбычныйЧеловек
Так как они могут быть не записаны, если в "подписку на событие" попадаем только когда выполнится "модуль проведения"
#27 by sanja26
здесь что?
#28 by sanja26
в модуль подписки вообще попадает? все должно быть, если есть движения у документа Галки сервер стоят, вызов сервера?
#29 by unregistered
Молча. Если в коде обработки проведения ни где не было принудительной записи Движения.Записать или Движения.Хозрасчетный.Записать, то наборы записеи будут записаны в базу по окончании транзакции.
#30 by ОбычныйЧеловек
#31 by Alex S D
в общем случае они могут быть записаны в модуле набора записей регистра, кстати там идет обращение к движениям, там что показывает в наборе?
#32 by unregistered
В обработке проведения твой код вернет либо пустой набор (при первом проведении), либо старый набор (при перепроведении).
#33 by ОбычныйЧеловек
Мы же говорим о подписке на событие ведь так?
#34 by unregistered
Да.
#35 by ОбычныйЧеловек
может код проверить?
#36 by sanja26
обработка проведения выполняется в транзакции
#37 by unregistered
Бинго! Так что прочитать записи наборов ты сможешь только по окончании транзакции (если не делается принудительная их запись в коде Движения.Записать)
#38 by Alex S D
и что, они же должны быть видны через Движения.Хозрасчетный всеравно
#39 by sanja26
т.е. в БП 2.0 забыли написать Движения.Записать)?????????
#40 by unregistered
Совершенно верно. Через свойства Источник.Движения ты их увидишь. А из базы прочитать не сможешь - их в базе еще нет.
#41 by unregistered
А зачем они должны были это написать?....
#42 by sanja26
для механизма подписок епт..
#43 by unregistered
Свой код в исправь:
#44 by unregistered
Дятел? Тебе русским языком говорят, что надо читать набор через свойства документа Движения. В подписке это будет выглядеть так:
#45 by Alex S D
хехе см
#46 by unregistered
я читал . И сильно сомневаюсь, что там написана правда. Либо обработчик вообще не отрабатывает, либо подписка сделана на другое событие, а не на обработку проведения.
#47 by Alex S D
судя по параметрам имеено на проведение сделана)
#48 by sanja26
Сам дятел Как ты запросом будешь получать движения с учетом движений, уже сделанных этим документом. скройся под стол
#49 by Alex S D
кеш почисть xD
#50 by ОбычныйЧеловек
возьми код из - потом расскажешь работает так или нет.
#51 by unregistered
Солнышко. И откуда у нас вдруг вылез запрос? Что-то в про запрос ни какой речи нет.
#52 by unregistered
Не будет твой код работать. Он получит СТАРЫЕ движения докмента.
#53 by sanja26
у меня в подписке на проведение запрос, использующий движеня из обработки проведения...
#54 by ОбычныйЧеловек
не вижу смысла спорить - если автору будет интересно - он проверит (будетнебудет)
#55 by unregistered
А чтож ты родной раньше молчал? Если тебе в обработке проведения нужно получать данные из регстров уже С УЧЕТОМ проведения, то единственный способ это делать принудительную запись - Движения.Записать или Движения.Хозрасчетный.Записать и только после этого писать свои запросы к регистрам.
#56 by sanja26
ну у меня получение остатков идет, конечно, вид границы исключая, но движения, насколько помню, попадали, если без границы
#57 by unregistered
Короче только что проверил. БП 2.0.37.14 Документ ПеремещениеТоваров Подписка на событие ОбработкаПроведения Код обработчика подписки: При любых раскладах (первое проведение/перепроведение ранее проведенного) выдает правильный результат. То есть набор записей есть и с правильным количеством записей. Можете спорить дальше сколько хотите.
#58 by sanja26
споришь ты. доказывал, что в типовой в подписке может не быть движений
#59 by unregistered
Такого быть не может. Как может что-то попасть в результат запроса, если этого еще нет в базе данных? Либо этот запрос делался уже после записи (которая идет в одной транзакции с проведением). Либо внутри обработки проведения была выполнена принудительная запись движений.
#60 by unregistered
Ааааааа..... Перечитай все мои посты и найди, где я говорил, что движений нет! Ты хоть понимаешь разницу между и
#61 by unregistered
Движения (свойство документа, содержащее наборы записей по всем регистрам) есть. Но эти наборы записей еще не записаны в базу данных. Поэтому посмотреть наборы записей через свойство документа "Движения" ты можешь, а вот прочитать их из базы запросом или объектной моделью методом СоздатьНаборЗаписей - нет.
#62 by Lama12
Всю ветку не читал... но мнение имею :) 1. Проверяем как делает движения документ. Если документ делает движения стандартным способом то это одно, если делает записи в наборы регистров, то подписку нужно делать на запись в регистр, иначе не перехватишь. 2. По поводу пустого набора записей. Скорее всего документ действительно делает запись движений "кривым" - правильным способом. В подписке ты перехватываешь только затирание движений, а сами движения записываются в другом месте петум прямой записи в набор записи регистра. 3. При простой - "не правильной" записи движений, в подписке перехватываются движения которые документ будет делать если ты их не изменишь.
#63 by sanja26
внутри обработки проведения была запись движений. КА, РТиУ
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С