Движения в регистр не записываются #714564


#0 by 1nvertex
В подписке на событие при проведении, код: Больше НаборТовары и вообще ПартииТоваровНаСкладах нигде не трогаю, работаю только с ТЗ_Партии. Почему при оперативном проведении записи в регистре партий появляются через раз? Как исправить?
#1 by Hans
В обработке проведения документа Движения.записать есть? Возможно если это написать движения будут всегда.
#2 by 1nvertex
Не помогло.
#3 by 1nvertex
Если мой код убрать записывается все и всегда.
#4 by Ymryn
НаборТовары.Прочитать; - вообще вот эта строчка должна очищаться весь набор, если он был изменен в результате обработки на то, что было записано в регистре. Т.е если ты это делаешь после того как заполнил движения, то ты должен бы все потерять. Если делаешь до, то ты должен получить то, что в самом регистре и это никак не должно сказаться. Поэтому тут или всегда не должно записываться, либо вообще никак влиять не должно. Но как-то моя теория расходится с практикой. :(
#5 by Ymryn
*исправляюсь не очищать, а заменять
#6 by Ymryn
А врубился, не всегда Модифицированность срабатывает судя по всему.
#7 by GROOVY
Потому как набор записей еще не был записан в модуле документа. Ты читаешь пустой набор.
#8 by GROOVY
И, не могу понять в чем сакральный смысл чтения набора записей, если мы не собираемся его изменять?
#9 by Hans
наверное он что то будет другое писать на основе этих данных.
#10 by GROOVY
Для чтения (только) не используют объекты, которые система анализирует для установки блокировок.
#11 by Hans
Пишем как можем. Оптимизировать будем потом.
#12 by GROOVY
Нет ничего более постоянного, чем временное. А, что если эта подписка не последняя, а вы там данные чтением поменяли?
#13 by 1nvertex
Ymryn, как такое может быть? GROOVY, Добавление ДокОбъект.Движения.Записать перед кодом не помогает. GROOVY, Анализирую данные для записи в свой регистр.
#14 by 1nvertex
Подписка последняя, больше ничего нет.
#15 by GROOVY
2. И не должно. В системе нельзя угадать последовательность вызова подписок на события. Это четко прописано в документации.
#16 by Ymryn
Ну я пытаюсь угадать, почему не всегда :) Чревовещание работает пока плохо. В целом, главный вопрос -  НаборТовары.Прочитать; Вот этим что достигается? Отдается отчет себе, что это может изменить текущий НаборТовары?
#17 by 1nvertex
Проверил по замеру производительности, подписка последняя. Больше никуда не заходит.
#18 by Hans
Если движения через раз попробуй побаловаться со свойством "Удалять движения автоматически" и Обработкой удаления проведения.
#19 by GROOVY
Это хорошо, главное, каждый раз перед запуском проверяй. Не пойму, а запросом данные не вытащить? Ну или крайняк не менять существующий набор данных, а его копию создать?
#20 by 1nvertex
А смысл создавать копию, если записей в коллекции движений нет? В копии их тоже не будет.
#21 by 1nvertex
Запросом по каким данным? Их еще нигде нет, они не записаны.
#22 by sirsp
3. Может стоит подписаться на запись регистра, а не документа?
#23 by LORD
РегистрНакопления.МодульНаборЗаписей
#24 by LORD
может через него проще?
#25 by РенеДекарт
вот тут уже ерунда: >В подписке на событие при проведении >Если Не НаборТовары.Модифицированность >НаборТовары.Прочитать; - вы что, при проведении порядок проведения по регситрам (и модифицированность) хотите отловить? Да еще потом и прочитать именнно то, что нужно, а не то, что еще не успело записаться? Вы еще в транзакцию влезьте, чтобы в её середине - поменять у неё конец ))
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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