Имя: Пароль:
1C
 
1c УФ Объекты
0 BanchenkoM
 
17.11.17
09:45
Немного не понятен один вопрос по объектам.

//Вариант 1
ДокументОбъект = РеквизитФормыВЗначение("Объект"); //создает объект Х типа Док.... с данными из формы.
ДокументОбъект.Действие();  // выполняет методы объекта
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");  // данные из объекта Х переписывает данные в форму.
    
// вариант 2    
ДокументОбъект = Объект.ссылка.получитьОбъект(); // Мы получаем объект уже с данными, значит объект уже существует (нафига мы его создавали ещё один в варианте 1?)
ДокументОбъект.Действие();

ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); // Тут нужен метод типа обновить данные на экране, но я такого увидел.

получается так.
вариант 1. (он из учебника 1с)
У нас есть объект типа ДОК-Х форма которого на экране, мы создаем ещё один объект типа ДОК-Х выполняем его метод который меняет данные, и данные записываем в первый объект который уже был.

вопрос в том почему сразу не выполнить метод объекта и не обновить данные на экране?
1 dezss
 
17.11.17
09:50
Вариант 1 не создает объект, он просто преобразует данные формы в объект, с которым можно работать.
Вариант 2 вытягивает данные именно из базы и пофиг, что делалось в этот момент на форме, эти изменения сотрутся.
2 BanchenkoM
 
17.11.17
10:38
по варианту второму понял... я просто не учел, что после сохранения появляется объект в базе... а проверял на уже записанном документе.


не создает объект, он просто преобразует данные формы в объект, с которым можно работать.
не понятно...

Объекта не было он появляется? или он был?
Я нажимаю кнопку создать документ, на экране появляется форма, а объекта не существует до записи в базу? а если существует почему методы его не доступны?



З.Ы. блин почему в паскале все так просто и понятно.....
3 dezss
 
17.11.17
11:12
(2) Объект есть, но не в базе, а пока в памяти. Просто из формы напрямую к нему обратиться нельзя (потому что форма по сути этот самый объект, показанный в виде "графического представления"), отсюда и необходимость использовать РеквизитФормыВЗначение для обращения к методам объекта.

З.Ы.: просто дело привычки)))
4 Ц_У
 
17.11.17
11:13
(2) "ссылка" это указатель на "объект", что бы изменить объект его нужно получить.
Что бы использовать методы объекта не обязательно иметь объект в базе, ты обращаешься "создаешь" что бы использовать его методы
5 dezss
 
17.11.17
11:14
(0)"// Тут нужен метод типа обновить данные на экране, но я такого увидел."
Смотри ОбновитьОтображениеДанных в сп.
6 BanchenkoM
 
21.11.17
16:13
Спасибо огромное. вроде как ясно....