Имя: Пароль:
1C
1С v8
Чтение данных из регистра в обработке проведения пишущей в тот же регистр
0 Многолетний Апельсин
 
23.04.14
13:20
Ситуация:
Изобретаю велосипед - систему учета заказов с предоплатой. В обработке проведения платежного документа делаю движения по регистру накопления хранящему долг по заказу и вызываю принудительно "Движения.Записать()".
После чего пытаюсь в той же процедуре получить текущий долг и в зависимости от него поставить статус оплаты документу-заказу (Оплачен,Частичноплачен,Неоплачен). Проблема - долг не всегда правильно высчитывается. Опытным путем было установлено что если медленно пошагово исполнять обработку проведения, и в частности подождать после выполнения "Движения.Записать()" то долг считается правильно, что наводит на мысль что движения пишутся параллельно в базу данных.
В связи с этим вопросом - если возможность гарантировать запись движений последовательно? Т.е. чтобы после окончания вызова "Движения.Записать()" они уже точно были в бд.
Если сморозил жуткий бред - ногами сильно не пинайте.
1 Рэйв
 
23.04.14
13:22
ОбработкаПроведения - это вообщето транзакция.Пока не завершится нет никаких движений в базе. Так что ты что-то путаешь.
2 Многолетний Апельсин
 
23.04.14
13:23
Ну кстати да, но как то оно криво срабатывало же.
3 Maxus43
 
23.04.14
13:23
должно всё правильно показывать. внутри транзакции эти данные уже "записаны", вне транзакции они не "видны", а внутрях видны
4 Maxus43
 
23.04.14
13:24
сама задача конечно криво реализована.
Снимай текущие остатки до записи новых и ставь статус с учетом суммы дока, не надо по движениям которые делаются об этом судить
5 Рэйв
 
23.04.14
13:26
(4)Сейчас еще он спросит "как записать статус дока из обработки проведения" и будет еще постов 100:-)
6 Многолетний Апельсин
 
23.04.14
13:26
Старые движения стираются к моменту выполнения обработки проведения?
7 Ненавижу 1С
 
гуру
23.04.14
13:28
(6) от тебя зависит
8 Maxus43
 
23.04.14
13:28
(6) смотря какой код, в типовых стираются принудительно кодом, в начале обработки проведения.
Изменять реквизиты дока надо по феншую в ПриЗаписи, а не в проведении
9 neo_matrix_123
 
23.04.14
13:37
(0) я такое практикую. реализовано подписками на событие, которые исполняются после проведения типовым глобальным контекстом и довинчивают движок. пример проведение отражения зп в регл учете в моем варианте пишет в регистр нзп заказы. но если в обработку проведения вставить изменение формы документа (статус), то проведение будет дважды. а в этом нет него хорошего. (7) +1
10 Многолетний Апельсин
 
23.04.14
14:06
(9) История статусов в отдельном регистре хранится.
(4) Остановился на таком варианте.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший