Добрый день.
Есть форма обработки для нетипового документа. Документ создается исключительно на основании другого документа.
По ТЗ в один реквизит объекта документа нужно записать значение, обозначающее какой баланс (срез бух.регистра) будет ПОСЛЕ проведения документа. И соответственно этот документ также делает движение по бух.регистру. Сложность возникает из-за того, что при этом пользователь может менять дату документа в форме ещё незаписанного документа, таким образом баланс нужно пересчитывать и выводить на форму.
Пробовал через транзакцию, но возникла проблема, что у ЭтотОбъектОбъект типа "ДанныеФормыСтруктура" нельзя редактировать ссылку, а она должна оставаться пустой для проверки "Объект.Ссылка.Пустая()" внутри метода "НетиповойМодуль.ПолучитьОстаток".

```1c
    НачатьТранзакцию();
    ПараметрыЗаписи = Новый Структура;
    ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
    ЭтаФорма.Записать(ПараметрыЗаписи);
    ВременноеОстаток = НетиповойМодуль.ПолучитьОстаток(ЭтотОбъект.Объект, Ложь);
    ОтменитьТранзакцию();
    ЭтотОбъект.Объект.Ссылка = документы.ЭтотНетиповойТипДокумента.ПустаяСсылка(); //всё хорошо, но у отмененного объекта сохраняется ссылка
    ЭтотОбъект.Объект.Остаток = ВременноеОстаток ;
```

upd: есть ли способ записать на сервере объект типа "ДанныеФормыСтруктура" без связки с формой?
upd: или есть ли способ выполнить метод формы "записать" в транзакции на сервере?

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

https://xn----1-bedvffifm4g.xn--p1ai/articles/2017-02-12-two-methods-for-inventory-check/?ysclid=lptv3p8k6s473884097
---
так вам остаток ДО проведения нужен или ПОСЛЕ ?
---
в том то и дело, что После
---
... в обработке Проведения
записали Движения
и запросом получили нужные/новые остатки

и дальше как выше было.

причем здесь Ссылка самого документа?
---
пользователь создаёт новый документ, и сразу, до записи документа, должен увидеть в форме документа какой остаток будет если этот документ провести.
---
Согласно ТЗ остаток будет соответствовать значению реквизита, зачем его считать, если он константа?
---
Даже отрицательный? :-)
Остаток до начала документа иногда даже не нужен. Документ проводите на начало дня, а в течении дня был движения. Какой смысл этих остатков на начало дня?

Розница - там вообще не важны остатки - торговля в минус как за "здрастЕ". Если покупатель взял с полки товар, значит он есть, а что там в остатках - ему не важно. До инвентаризации и продавцам тоже не важно.

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