BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как склонировать объект?
 
Копирование массивов(многомерных) осуществляется посредством ACLone() по причине того, что запись вида

Код
Local aMass2:={{{1},{2}},{2}}
aMass1:=aMass2


означает лишь, что в переменную aMass1 будет записан указатель на aMass2. По этой же причине объекты тоже нельзя копировать "присвоением" (оObject1:=оObject2).
Но как их тогда копировать?
 
Давайте начнем с разъяснения ситуации.
А именно с Вопроса ЗАЧЕМ ?
 
Цитата
nordk пишет:
Давайте начнем с разъяснения ситуации.
А именно с Вопроса ЗАЧЕМ ?

В примере работы со складскими документами есть задачка с последовательным сохранением, распечаткой и редактир документа.
Так вот для этих целей разработчики делают 3 разных объекта. Каждый раз задавая абсолютно одинаковые параметры:
Код
..............................................
   oDoc1:CodeDoc:= oDoc2:CodeDoc:=oDoc3:CodeDoc:="001"
   oDoc1:NumDoc := oDoc2:NumDoc:=oDoc3:NumDoc := "000001"
   oDoc1:Sclad:=oDoc2:Sclad:=oDoc3:Sclad := "Центр."
.....................................
//итд

Хотя в 100 раз проще сделать
oDoc2:=Клон(oDoc1)
вместо перечисления по 100 раз одного и того же....

Еще интересно стало как "обнулить" массив\объект и был такой Вопрос у кого-то на форуме "освободить" объект, стереть. Потому как если добавить в коллекцию объектов(объект класса ScladDocs) документ (объект класса ScladDoc), то он уже оттуда не стирается...
Изменено: Саак Шахламджян - 02.03.2009 15:12:52
 
Цитата
Саак Шахламджян пишет:
Копирование массивов(многомерных) осуществляется посредством ACLone() по причине того, что запись вида





Код


Local aMass2:={{{1},{2}},{2}}
aMass1:=aMass2

означает лишь, что в переменную aMass1 будет записан указатель на aMass2. По этой же причине объекты тоже нельзя копировать "присвоением" (оObject1:=оObject2).
Но как их тогда копировать?


Клонировать объект можно следующим образом:
oDoc:=ScladDoc():New()
oDoc:Sclad:="12345"
oDoc1:=__objclone(oDoc)
Страницы: 1
Читают тему (гостей: 1)