|
Создание Док.А при проведении Док.Б с добавлением ссылки в Док.А. |
☑ |
0
M812
05.05.14
✎
12:11
|
Посоветуйте пожалуйста, как правильнее решить задачку.
Есть готовый нетиповой Док.А в УПП 1.3 (автоматическое удаление движений) в нем есть реквизит-ссылка на типовой документ УПП - Док.Б.
При проведении нетипового Док.А делается проверка и создается(изменяется) на его основании типовой Док.Б, ссылку на который нужно добавить в соотвествующий реквизит в Док.А.
Вопрос: как и где кашернее разместить код?
Очевидных два варианта: ОбработкаПроведения и ПередЗаписью.
Если использовать ПередЗаписью - можно будет изменить реквизит Док.А до его проведения, но если проведение не завершится будет создан ненужный документ.
ОбработкаПроведения - Док.Б уже будет создан на основании корректно заполненного Док.А, но добавление ссылки в него на Док.Б приведет к перезаписи и перепроводке Док.А со всеми вытекающими.
|
|
1
Loyt
05.05.14
✎
12:17
|
(0) Дык проведение-то незавершится отказом, небось? А значит вся транзакция с начала ПрередЗаписью по конец Обработка проведения будет откачена. Включая и создание ДокБ.
|
|
2
EugeniaK
05.05.14
✎
12:18
|
(0)Желательно все изменения документа только в ПередЗаписью() в режиме проведения.
Т.е. в момент ОбработкиПроведения() никакие реквизиты ДокА меняться не должны.
Если проведение не завершится, то транзакция откатится и документ Б не появится.
|
|
3
Loyt
05.05.14
✎
12:19
|
(1) Единственное, в объекте ДокА реквизит ДокБ будет заполнен битой ссылкой, его просто подчистить.
|
|
4
M812
05.05.14
✎
12:19
|
(1) Я конечно понимаю, что вопрос по матчасти. Но все же: прям вся-вся транзакция откатится, даже если Док.Б не создавался а менялся?
|
|
5
Loyt
05.05.14
✎
12:20
|
(4) Ну а как? Это ж и есть смысл транзакции.
|
|
6
M812
05.05.14
✎
12:25
|
(2) (5) Спс. Сейчас проверим.
А когда лучше проводить проверку на битую ссылку и чистить?
|
|
7
Loyt
05.05.14
✎
12:33
|
(6) Ели из формы проводишь, то сразу там, в "ПослеЗаписи".
Если эти фокусы на сервере могут проводиться, и с объектами после проведения ещё какие-то изменения происходят с последующей записью - то в модуле "ПередЗаписью", но такое - слишком специфично. Обычно если что на сервере проводится, то либо реквизиты уже заполнены и дёргаться лишний раз не будут, либо после отказа проведения идёт переход к другому объекту, а не повторная запись этого же - тут битая ссылка ничего не испортит.
|
|
8
Loyt
05.05.14
✎
12:35
|
+(7) На управляемых формах специфики не знаю, их пока только сам изучаю помаленьку.
|
|
9
EugeniaK
05.05.14
✎
12:35
|
(6) Не нужно никакой проверки.
Вся транзакция откатится, включая запись ссылки.
Нечего чистить.
|
|
10
Loyt
05.05.14
✎
12:36
|
(9) В самом объекте ссылка останется. В незаписанном. И в форме открытой.
|
|
11
M812
05.05.14
✎
12:54
|
(10) (9) Как раз есть варианты создания Док.А в форме и обработкой.
В 99.9% случаев Док.А при создании обработкой не будет менятся, да и основная проверка корректности его заполнения происходит до создания Док.А, соответственно вероятность того, что он не проведется минимальна.
Тогда остается почистить ссылку, при создании Док.А в его форме.
Спасибо, за советы.
Отпишусь после реализации, для жирной точки в теме.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший