как сделать копию объекта? (документа) #789076


#0 by vde69
у меня есть не записаный в базу объект (документ), я его передаю в процедуру в которой выполняется произвольный код (через Выполнить), я не хочу, что бы в этом коде можно было что либо поменять в объекте, то есть в процедуру мне нужно передать копию объекта... как сие сделать кошернее?
#1 by Cool_Profi
ЗНАЧ ?
#2 by vde69
по логике - да, а вот будет работать или нет сейчас попробую...
#3 by Vaflya
Выполнить? Недавно с восьмеркой что ли? Доставалась как то конфигурация, где на каждом шагу было Выполнить, даже не на каждом шагу, а везде, такой ппц был помечен как нетленка и учебное пособие для поколений "как делать не надо" хммм или я чего то не понял
#4 by Ёпрст
ну, создать еще один объект и через заполнитьЗначения свойств заполнить его
#5 by Ёпрст
а.. зачем токма это всё ?
#6 by trdm
Только простые типы.
#7 by timurhv
передавай структуру без ссылки документа и номера
#8 by vde69
вроде на мутабельность не ругается, но Объект.ВерсияДанных одинаковый делаю заполнение одного реквизита через пользовательский код, что-то типа произвольного фильтра... по сколько эта фигня будет часто манятся и не понятно какие варианты потребуются делаю так... что-то вроде конвертации данных...
#9 by youalex
или через ЗаписатьХML/ПрочитатьXML. Но это будет неполная копия, без доп.свойств, экспортных переменных
#10 by vde69
табличные части не заполняет :)
#11 by Лефмихалыч
значечниеВРеквизитФормы?..
#12 by Лефмихалыч
но, чтобы наверняка - нарисуй функцию, которая получает объект, а возвращает структуру
#13 by Лефмихалыч
единственное, что может помешать внутри Выполнить взять да и Записать переданный объект - это отсутствие метода Записать у переданного объета.
#14 by Ёпрст
ну, цикл по ним и копировать
#15 by Лефмихалыч
#16 by Лефмихалыч
та же балда с движениями легко делается
#17 by gero
А так не взлетит? НовыйОбъект = ТвойДокумент.Скопировать;
#18 by Вафель
движений не будет
#19 by Волшебник
можно допилить ещё цикл по наборам регистров
#20 by Лефмихалыч
это не решает задачу - ни чего не мешает записать копию объекта.
#21 by Волшебник
Да пусть пишет. Все работают в едином контексте, т.е. с базой. Любой модуль может записать объект в базу, если будет достаточно доступа
#22 by Волшебник
+ Кстати, можно ещё заблокировать запись через управляемые блокировки и хрен что запишешь
#23 by Torquader
Только тогда блокировать нужно будет из другого сеанса или, так как тот же самый сеанс может не заметить блокировки. P.S. если мы передаём копию объекта, то её также могут записать. Если же мы передаём объект, который не записан, то можно у него поставить заранее заданный GUID, чтобы потом, если его уже записали (а всякое бывает), найти его по этому GUID-у и "расписать" (то есть удалить). Создание "суррогата" из структур и массивов не очень хорошо, так как, в этом случае, могут оказаться различные документы с одинаковой структурой, что тоже не есть хорошо.
#24 by vde69
сделал что-то вроде , завтра тестить буду
#25 by Torquader
Мне тут подумалось - если фильтр писать в виде запроса, то логичнее к нему данные передавать как набор временных таблиц - будет и быстрее работать, и точно никто и ничего поменять не сможет.
#26 by vde69
там все сложнее... суть задачи - записать в документ реквизит по которому будет идти маршрутиризация документа и визуальное оформление его в задачах (и таких реквизитов несколько). Проблема в том, что что правила по которым тот или иной элемент справочник постоянно меняют (раз в месяц)... пока правила состоят из 1. ЦФО при этом сумма для каждой комбинации ЦФО+Статья разная, в преспективе сюда может добавится еще с пяток параметров...
#27 by Torquader
А если реквизит для маршрутизации хранить вообще в отдельном регистре, чтобы его можно было записать, не записывая документ ?
#28 by vde69
тогда джойн делать в динамических списках, реквизит проще... хотя в перспективе может и придется переделывать, пока не известно...
#29 by Torquader
Просто, потом может понадобится история этого реквизита. Да и, если он используется при обменах и т.п., то отдельный реквизит, как бы, не предполагает передачи между базами. А список, соединение с регистром не сильно изменит скорость исполнения. Зато, один реквизит для всех документов, а не для каждого свой - в некоторых случаях, выборка в общем виде будет быстрее, чем по таблицам всех документов.
#30 by i_rodionov
Загрузить копию объекта в фиксированную структуру и передать как параметр
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С