1с8.3 Вопрос: Как провести документ до его записи?

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


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

upd: вопрос решен, записал в транзакции не саму форму, а другой объект, поместив в него данные с формы методом:
ДокументОбъект = ДанныеФормыВЗначение(ЭтотОбъект.Объект, Тип("ДокументОбъект.ЭтотНетиповойТипДокумента"));
Найденные решения
15. Arshehremen 06.12.23 18:24 Сейчас в теме
вопрос решен, записал в транзакции не саму форму, а другой объект, поместив в него данные с формы методом:
ДокументОбъект = ДанныеФормыВЗначение(ЭтотОбъект.Объект, Тип("ДокументОбъект.ЭтотНетиповойТипДокумента"));
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 06.12.23 16:26 Сейчас в теме
(1) Ссылку нельзя редактировать.
Дорабатывайте процедуру в модуле с учетом этого.
3. Arshehremen 06.12.23 16:40 Сейчас в теме
(2) да, я об этом написал "у ЭтотОбъектОбъект типа "ДанныеФормыСтруктура" нельзя редактировать ссылку"
4. Sashares 35 06.12.23 16:59 Сейчас в теме
(3)Ни у какого объекта ссылку редактировать нельзя. Ну это так, для понимания.
5. soft_wind 06.12.23 17:15 Сейчас в теме
в проведении просто присвойте полученное значение реквизиту
и запишите объект
в обраотке провдения
...
Остаток = ВременноеОстаток;
Записать(РежимЗаписиДокумента.Запись);
должно сработать
6. Arshehremen 06.12.23 17:21 Сейчас в теме
(5) да, но при создании документа, в момент времени когда ссылки на документ ещё не существует, уже нужно получить значение, более того его нужно несколько раз пересчитывать по прежнему оставляя ссылку на документ пустой.
7. Said-We 06.12.23 17:26 Сейчас в теме
(1) Получите ссылку нового объекта (не записанного). Метод даже такой есть. Но делать движения до записи ссылки это бывает в привычном виде только при обменах. Если речь о форме, то задача неправильно сформулирована и/или решена.
8. VmvLer 06.12.23 17:29 Сейчас в теме
9. soft_wind 06.12.23 17:31 Сейчас в теме
(6) так вам остаток ДО проведения нужен или ПОСЛЕ ?
10. Arshehremen 06.12.23 17:33 Сейчас в теме
(9) в том то и дело, что После
11. soft_wind 06.12.23 17:41 Сейчас в теме
... в обработке Проведения
записали Движения
и запросом получили нужные/новые остатки

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

причем здесь Ссылка самого документа?
12. Arshehremen 06.12.23 17:47 Сейчас в теме
(11) пользователь создаёт новый документ, и сразу, до записи документа, должен увидеть в форме документа какой остаток будет если этот документ провести.
13. gybson 06.12.23 18:07 Сейчас в теме
(12) Согласно ТЗ остаток будет соответствовать значению реквизита, зачем его считать, если он константа?
14. Said-We 06.12.23 18:07 Сейчас в теме
(12) Даже отрицательный? :-)
Остаток до начала документа иногда даже не нужен. Документ проводите на начало дня, а в течении дня был движения. Какой смысл этих остатков на начало дня?

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот