|
Чтение данных из регистра в обработке проведения пишущей в тот же регистр |
☑ |
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) Остановился на таком варианте.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший