Имя: Пароль:
1C
 
Запись объекта из модуля формы
0 seraf
 
20.12.19
14:20
Я что-то порядок не помню.
Если из модуля формы делаю ЭтотОбъект.Записать(), это же приводит к записи формы и по идее её основного реквизита, спр.объект.
А если до этого изменил СпрОбъект в коде, то я должен явно передать Объект через ЗначениеВДанныеФормы чтобы этот измененный, но еще не записанный объект обновился и для УФ, это правильный подход?
1 Momus
 
20.12.19
14:29
(0) Я правильно понимаю, что есть какой-то объект СпрОбъект, который меняется в коде, и есть независимый от него, но такого же типа, основной реквизит формы?
2 seraf
 
20.12.19
14:47
Короче я в модуле формы справочника.
У него основной реквизит СправочникОбъект.
Далее хочу изменить некоторые данные объекта.
Если меняю непосредственно в БД, то ошибка о несоответсвии форме.

Правильно как менять, передать СправочникОбъект через ДанныеФормыВ значение, изменить, вернуть через ЗначениеВДанныеФормы и далее записать форму, это должно поместить всё данные в БД? или надо было записать объект до ЗначениеВДанныеФормы
3 Momus
 
20.12.19
14:59
(2) для этого, если не ошибаюсь, есть метод формы "ОбновитьОтображениеДанных". Можно в СП почитать о нем
4 seraf
 
20.12.19
15:21
(3) вижу такое, да.

Так а когда форма открыта, она знает только ссылку на свой объект.
Когда я делаю ДанныеФормыВЗначение(Объект, Тип) что происходит, то же что и при Объект.Ссылка.ПолучитьОбъект()?

После определенные манипуляции с объектом и могу вернуть обновленное состояние с помощью ЗначениеВДанныеФормы, либо ОбновитьОтображениеДанных примерно то же сделает?

Вроде всё получилось, так для понимания разницы спрашиваю, как правильнее
5 RomanYS
 
20.12.19
15:28
(2) Зачем ДанныеФормыВзначение, ЗначениеВДанныеФормы?
Просто меняешь Объект(реквизит форму) и "записываешь форму"
6 Cyberhawk
 
20.12.19
15:29
"После определенные манипуляции с объектом и могу вернуть обновленное состояние с помощью ЗначениеВДанныеФормы, либо ОбновитьОтображениеДанных примерно то же сделает?" // Прочитать()
7 seraf
 
20.12.19
15:35
(5) не знаю, тренируюсь, по разному пробую, а в каких случаях эти методы использовать тогда
8 RomanYS
 
20.12.19
15:37
(7) Если тебе нужно вызвать методы объекта (ДокументОбъект). Для непосредственного изменения полей они не нужны - просто меня данные формы
9 seraf
 
20.12.19
15:39
в общем я могу с формы на сервере менять её объект напрямую и запись формы будет эквивалентна записи объекта в БД

(8) да кстати процедурку в модуле объекта хочу вызвать, значит в этом случае через ДанныеФормыВЗначение
10 RomanYS
 
20.12.19
15:45
(9)
1. Да (при этом не получишь ошибки не соответствия..)
2. Да
11 seraf
 
20.12.19
16:19
Благодарю
12 singlych
 
20.12.19
16:20
Че-то ты там мутишь...

Надеюсь, понимаешь, что данные об элементе справочника в БД, объект справочника, объект-основной реквизит формы справочника и сам объект формы справочника - это все немного разные вещи.

Запись формы это не то же самое что запись объекта. Ну то есть, при записи формы с основным реквизитом, конечно, произойдет запись объекта (при этом того экземпляра объекта, который подразумевается основным реквизитом, а не какого-нибудь левого экземпляра, который ты мог получить хз где), но не наоборот. Ну плюс в форме при записи еще может много чего происходить чего не происходит при записи объекта.

Если запишешь объект справочника, данные объекта лягут в БД, но форма про это ничего знать не будет (пока не попытаешься записать эту форму и она не заругается).
Если запишешь форму справочника, данные объекта из формы лягут в БД, но про это ничего не узнает твоя переменная с объектом справочника.
Если хочешь синхронизировать форму справочника или объект справочника с данными из БД, то есть метод Прочитать (а в форме еще выполнится ПриЧтенииНаСервере и все такое).
Если хочешь синхронизировать реквизит формы с объектом справочника, то есть ЗначениеВРеквизитФормы или там ЗначениеВДанныеФормы.
13 seraf
 
20.12.19
16:30
(13) спасибо за подробный ответ!
14 seraf
 
20.12.19
16:44
Но когда у меня на руках измененный, но не записаный в БД СправочникОбъект и я отдают его в форму через ЗначениеВДанныеФормы и после в форме делаю ЭтотОбъект.Записать(), СправочникОбъект должен же записаться?
15 seraf
 
20.12.19
16:46
судя по моему примеру нет..
16 singlych
 
20.12.19
16:50
(14) Не должен. Плохо читал. "Если запишешь форму справочника, данные объекта из формы лягут в БД, но про это ничего не узнает твоя переменная с объектом справочника."
17 singlych
 
20.12.19
16:52
Действуют разные экземпляры объектов, между ними нет никакой трансцендентой связи, это тебе не запутанные кварки.
18 seraf
 
20.12.19
18:06
(16) так я же перед тем как записать форму справочника передал ей переменную с объектом справочника, в которую вносил изменения.. но из БД вроде всё равно старые данные тянутся, так что на добавил запись объекта перед передачей в форму, так работает
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший