Имя: Пароль:
1C
1С v8
Создание Док.А при проведении Док.Б с добавлением ссылки в Док.А.
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% случаев Док.А при создании обработкой не будет менятся, да и основная проверка корректности его заполнения происходит до создания Док.А, соответственно вероятность того, что он не проведется минимальна.

Тогда остается почистить ссылку, при создании Док.А в его форме.

Спасибо, за советы.
Отпишусь после реализации, для жирной точки в теме.