Добрый день.
Есть форма обработки для нетипового документа. Документ создается исключительно на основании другого документа.
По ТЗ в один реквизит объекта документа нужно записать значение, обозначающее какой баланс (срез бух.регистра) будет ПОСЛЕ проведения документа. И соответственно этот документ также делает движение по бух.регистру. Сложность возникает из-за того, что при этом пользователь может менять дату документа в форме ещё незаписанного документа, таким образом баланс нужно пересчитывать и выводить на форму.
Пробовал через транзакцию, но возникла проблема, что у ЭтотОбъектОбъект типа "ДанныеФормыСтруктура" нельзя редактировать ссылку, а она должна оставаться пустой для проверки "Объект.Ссылка.Пустая()" внутри метода "НетиповойМодуль.ПолучитьОстаток".
НачатьТранзакцию();
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
ЭтаФорма.Записать(ПараметрыЗаписи);
ВременноеОстаток = НетиповойМодуль.ПолучитьОстаток(ЭтотОбъект.Объект, Ложь);
ОтменитьТранзакцию();
ЭтотОбъект.Объект.Ссылка = документы.ЭтотНетиповойТипДокумента.ПустаяСсылка(); //всё хорошо, но у отмененного объекта сохраняется ссылка
ЭтотОбъект.Объект.Остаток = ВременноеОстаток ;
upd: есть ли способ записать на сервере объект типа "ДанныеФормыСтруктура" без связки с формой?
upd: или есть ли способ выполнить метод формы "записать" в транзакции на сервере?
upd: вопрос решен, записал в транзакции не саму форму, а другой объект, поместив в него данные с формы методом:
ДокументОбъект = ДанныеФормыВЗначение(ЭтотОбъект.Объект, Тип("ДокументОбъект.ЭтотНетиповойТипДокумента"));
вопрос решен, записал в транзакции не саму форму, а другой объект, поместив в него данные с формы методом:
ДокументОбъект = ДанныеФормыВЗначение(ЭтотОбъект.Объект, Тип("ДокументОбъект.ЭтотНетиповойТипДокумента"));
в проведении просто присвойте полученное значение реквизиту
и запишите объект
в обраотке провдения
...
Остаток = ВременноеОстаток;
Записать(РежимЗаписиДокумента.Запись);
должно сработать
(5) да, но при создании документа, в момент времени когда ссылки на документ ещё не существует, уже нужно получить значение, более того его нужно несколько раз пересчитывать по прежнему оставляя ссылку на документ пустой.
(1) Получите ссылку нового объекта (не записанного). Метод даже такой есть. Но делать движения до записи ссылки это бывает в привычном виде только при обменах. Если речь о форме, то задача неправильно сформулирована и/или решена.
(11) пользователь создаёт новый документ, и сразу, до записи документа, должен увидеть в форме документа какой остаток будет если этот документ провести.
(12) Даже отрицательный? :-)
Остаток до начала документа иногда даже не нужен. Документ проводите на начало дня, а в течении дня был движения. Какой смысл этих остатков на начало дня?
Розница - там вообще не важны остатки - торговля в минус как за "здрастЕ". Если покупатель взял с полки товар, значит он есть, а что там в остатках - ему не важно. До инвентаризации и продавцам тоже не важно.
Смотрите метод "ПолучитьСсылкуНового()". Выше уже писал. Зачем вам пустая ссылка?
Когда вы создаете объект, то ссылка на этот ещё не записанный объект как бы есть и её можно уже получить.
вопрос решен, записал в транзакции не саму форму, а другой объект, поместив в него данные с формы методом:
ДокументОбъект = ДанныеФормыВЗначение(ЭтотОбъект.Объект, Тип("ДокументОбъект.ЭтотНетиповойТипДокумента"));