|
Движения в регистр не записываются | ☑ | ||
---|---|---|---|---|
0
1nvertex
17.07.14
✎
14:18
|
В подписке на событие при проведении, код:
________________________________ НаборТовары = ДокОбъект.Движения.ПартииТоваровНаСкладах; Если Не НаборТовары.Модифицированность() Тогда НаборТовары.Прочитать(); КонецЕсли; ТЗ_Партии = НаборТовары.Выгрузить(); ________________________________ Больше НаборТовары и вообще ПартииТоваровНаСкладах нигде не трогаю, работаю только с ТЗ_Партии. Почему при оперативном проведении записи в регистре партий появляются через раз? Как исправить? |
|||
1
Hans
17.07.14
✎
14:20
|
В обработке проведения документа Движения.записать() есть? Возможно если это написать движения будут всегда.
|
|||
2
1nvertex
17.07.14
✎
14:26
|
(1) Не помогло.
|
|||
3
1nvertex
17.07.14
✎
14:28
|
Если мой код убрать записывается все и всегда.
|
|||
4
Ymryn
17.07.14
✎
14:31
|
НаборТовары.Прочитать(); - вообще вот эта строчка должна очищаться весь набор, если он был изменен в результате обработки на то, что было записано в регистре. Т.е если ты это делаешь после того как заполнил движения, то ты должен бы все потерять. Если делаешь до, то ты должен получить то, что в самом регистре и это никак не должно сказаться. Поэтому тут или всегда не должно записываться, либо вообще никак влиять не должно. Но как-то моя теория расходится с практикой. :(
|
|||
5
Ymryn
17.07.14
✎
14:31
|
(4) *исправляюсь не очищать, а заменять
|
|||
6
Ymryn
17.07.14
✎
14:32
|
А врубился, не всегда Модифицированность срабатывает судя по всему.
|
|||
7
GROOVY
17.07.14
✎
14:33
|
Потому как набор записей еще не был записан в модуле документа. Ты читаешь пустой набор.
|
|||
8
GROOVY
17.07.14
✎
14:34
|
И, не могу понять в чем сакральный смысл чтения набора записей, если мы не собираемся его изменять?
|
|||
9
Hans
17.07.14
✎
14:41
|
(8) наверное он что то будет другое писать на основе этих данных.
|
|||
10
GROOVY
17.07.14
✎
14:44
|
(9) Для чтения (только) не используют объекты, которые система анализирует для установки блокировок.
|
|||
11
Hans
17.07.14
✎
14:50
|
(10) Пишем как можем. Оптимизировать будем потом.
|
|||
12
GROOVY
17.07.14
✎
14:51
|
(11) Нет ничего более постоянного, чем временное.
А, что если эта подписка не последняя, а вы там данные чтением поменяли? |
|||
13
1nvertex
17.07.14
✎
14:52
|
(6) Ymryn, как такое может быть?
(7) GROOVY, Добавление ДокОбъект.Движения.Записать() перед кодом не помогает. (8) GROOVY, Анализирую данные для записи в свой регистр. |
|||
14
1nvertex
17.07.14
✎
14:52
|
(12) Подписка последняя, больше ничего нет.
|
|||
15
GROOVY
17.07.14
✎
14:54
|
(13) 2. И не должно.
(14) В системе нельзя угадать последовательность вызова подписок на события. Это четко прописано в документации. |
|||
16
Ymryn
17.07.14
✎
14:55
|
(13) Ну я пытаюсь угадать, почему не всегда :) Чревовещание работает пока плохо. В целом, главный вопрос - НаборТовары.Прочитать();
Вот этим что достигается? Отдается отчет себе, что это может изменить текущий НаборТовары? |
|||
17
1nvertex
17.07.14
✎
14:59
|
(15) Проверил по замеру производительности, подписка последняя. Больше никуда не заходит.
|
|||
18
Hans
17.07.14
✎
15:00
|
Если движения через раз попробуй побаловаться со свойством "Удалять движения автоматически" и Обработкой удаления проведения.
|
|||
19
GROOVY
17.07.14
✎
15:01
|
(17) Это хорошо, главное, каждый раз перед запуском проверяй.
Не пойму, а запросом данные не вытащить? Ну или крайняк не менять существующий набор данных, а его копию создать? |
|||
20
1nvertex
17.07.14
✎
15:09
|
(19) А смысл создавать копию, если записей в коллекции движений нет? В копии их тоже не будет.
|
|||
21
1nvertex
17.07.14
✎
15:11
|
(19) Запросом по каким данным? Их еще нигде нет, они не записаны.
|
|||
22
sirsp
17.07.14
✎
15:14
|
(13) 3. Может стоит подписаться на запись регистра, а не документа?
|
|||
23
LORD
17.07.14
✎
15:16
|
РегистрНакопления.МодульНаборЗаписей
|
|||
24
LORD
17.07.14
✎
15:16
|
может через него проще?
|
|||
25
РенеДекарт
17.07.14
✎
15:17
|
(0) вот тут уже ерунда:
>В подписке на событие при проведении >Если Не НаборТовары.Модифицированность() >НаборТовары.Прочитать(); - вы что, при проведении порядок проведения по регситрам (и модифицированность) хотите отловить? Да еще потом и прочитать именнно то, что нужно, а не то, что еще не успело записаться? Вы еще в транзакцию влезьте, чтобы в её середине - поменять у неё конец )) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |