|
Объект по значению. | ☑ | ||
---|---|---|---|---|
0
Lama12
14.02.19
✎
10:43
|
Есть две процедуры в модуле формы, хотя не важно где...
В конце первой процедуры сравнивая Док и Док1 получаем Истину. Ну ок. Если после присвоения переменной Док1 значения функции ОбъектПоЗначению, у переменной Док поменять какой-то реквизит, то онже поменяется и у Док1. Как вообще передача по значению должна работать для сложных типов? В документации не нашел. На ИТС, тоже. Может не так ищу... |
|||
1
Мимохожий Однако
14.02.19
✎
10:44
|
Любопытная конструкция
Б=Док=Док1; |
|||
2
Lama12
14.02.19
✎
10:53
|
(1) Ну для читаемости обычно пишу так Б = (Док=Док1). Здесь отладочный пример, с форматированием не заморачиваюсь.
|
|||
3
Василий Алибабаевич
14.02.19
✎
11:00
|
(0) Для объектных данных в переменной хранится ссылка на объект. После Док1 = ОбъектПоЗначению(Док);
В Док и Док1 лежит ссылка на один и тот же объект. Хотя сами переменных хранятся по разным адресам. Но указывают на данные одного и того же объекта. |
|||
4
Lama12
14.02.19
✎
11:06
|
(3) Ссылки как-бы еще нет. Объект не сохранен в базе.
|
|||
5
Lama12
14.02.19
✎
11:07
|
4+ Допускаю, что система "резервирует" ссылку для нового объекта, и с ней работает, но где об этом почитать?
|
|||
6
VladZ
14.02.19
✎
11:08
|
"Как вообще передача по значению должна работать для сложных типов? " - не врубаюсь, что именно нужно.
Василий Алибабаевич все правильно говорит: переменная - это "поименованная, либо адресуемая иным способом область памяти". В данном случае мы имеем в двух разных "адресах памяти" ссылку на один и тот же элемент. И речь идет не про ссылку объекта (говоря в понятиях 1с). А ссылку на сущность. |
|||
7
Василий Алибабаевич
14.02.19
✎
11:11
|
(4) Птля... "Объект не сохранен в базе." И что? Массивы вообще не хранятся в базе. Существуют только в памяти. И переменная типа массив хранит указатель в памяти на сам массив.
Почитать на ИТС : "Главная"-"Разработка и администрирование"-"1С:Предприятие 8.3.14. Документация" 4.7.3.2. Вызов с передачей управления с клиента на сервер Это для примера. Там нет подробного описания почему так. Там просто обращают внимание на передачу переменных объектных типов. |
|||
8
Lama12
14.02.19
✎
11:14
|
(6) Спасибо понял.
(7) Читаю. Спасибо. |
|||
9
Ёпрст
14.02.19
✎
11:15
|
(0) прочитай про Знач к агрегатным типам
|
|||
10
DrWatson
14.02.19
✎
11:27
|
В "4.7.3.1. Вызов без передачи управления с клиента на сервер" как раз твой случай.
|
|||
11
Lama12
14.02.19
✎
11:29
|
(10) Да, уже прочитал. Хорошая статья. Никогда не задумывался что с передачей строк с клиента на сервер могут быть проблемы.
|
|||
12
Василий Алибабаевич
14.02.19
✎
11:38
|
В этих ваших "сишарпах" для студентов существует хорошая лаба прочищающая мозги в плане объектов, указателей и проТчей ООП. В ней нужно написать код, перегружающий операцию присваивания, когда в новую переменную Вар2 записывается новый объект того же типа, что и в Вар1 и имеющий в свойствах те же значения.
|
|||
13
Василий Алибабаевич
14.02.19
✎
11:40
|
+ (12) И вот после перегрузки можно писать Вар1=Вар2; и тогда уже иметь в Вар1 и Вар2 разные указатели на разные объекты.
|
|||
14
Lama12
14.02.19
✎
11:45
|
(13) Эх... давно это было... :-( Еще на C++.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |