Имя: Пароль:
1C
 
Очищаются движения регистра после каждого второго проведения
0 ГдеСобака Зарыта
 
02.07.20
15:42
8.3.14.1854 ЗУП 3.1.10.50
Добавлен новый регистр накопления. Движения в него пишутся подпиской на запись набора другого типового регистра. При четных перепроведениях документа, по подписке формируются движения моего регистра, запсываются, все Ок. При нечетном перепроведении - по подписке формируются движения моего регистра, записываются и следом записывается уже пустой набор записей. То бишь первый раз только подписка, второй - подписка и следом запись пустого набора. И так через раз. В стеке вызовов второй записи регистра пусто.
Что это может быть?
1 ГдеСобака Зарыта
 
02.07.20
15:45
Удаление движений документа - Удалять автоматически при отмене проведения
2 1nvertex
 
02.07.20
15:55
Первый раз подписка не видит движений, так как сами движения еще не записаны. Второй раз она видит еще не удаленные движения. Можете убедиться в этом, если поменяете какой нибудь реквизит между проведениями.
3 Волшебник
 
модератор
02.07.20
15:57
Это потому что "движения в него пишутся подпиской". Перестаньте заниматься извращениями и сделайте нормальную запись из модуля документа.
4 ГдеСобака Зарыта
 
02.07.20
16:01
(3) Мопед не мой так-то. Сам я всегда из модулей объектов делал. Подписка от предшественника досталась. Обнаружил забавное поведение и стало интересно что это и как победить.
5 Мимохожий Однако
 
02.07.20
16:59
(4) для победы см (3). Вопрос "Почему подпиской?" есть кому задать?
6 rogachev
 
02.07.20
17:10
нигде в типовых подпиской движения в док не пишутся . в модуле объекта  . на крайний случай через общий модуль
7 ptiz
 
02.07.20
17:11
(4) Точку останова в подписку и вперёд.
8 ГдеСобака Зарыта
 
02.07.20
18:06
Перенос в модуль объекта конечно же решил проблему, но сущность и механика ее остались неразгаданными до конца. Может кто и расскажет для будущих поколений в чем дело было.
9 Волшебник
 
модератор
02.07.20
18:09
(8) Скорее всего подписка срабатывает в параллельной транзакции и не видит результаты транзакции, которая добавляет движения.
10 1nvertex
 
03.07.20
10:33
(9) Не так. Подписка срабатывает до завершения транзакции. См.п.2
11 MyNick
 
03.07.20
10:41
(0) теперь я знаю как реализовать крестики нолики в 1С
12 fisher
 
03.07.20
10:44
Какие значения свойств документа "Удаление движений" и "Запись движений при проведении"?
13 fisher
 
03.07.20
10:45
Ага. На первый вопрос вижу ответ в (1). А "Запись движений при проведении"?
14 fisher
 
03.07.20
10:54
Тут фишка в том, что платформа вызывает системную Движения.Записать() не до подписок, а после. И скорее всего в четных случаях она считает что набор записей регистра записывать не нужно (и поэтому не выполняет запись пустого набора после отработки всех подписок), а в нечетных - что нужно. Навскидку это может происходить, если "Запись движений при проведении" установлено в "Записывать модифицированные".
15 fisher
 
03.07.20
10:58
А в подписке, вероятно, работа ведется не через коллекцию Движения, а через отдельный набор записей.