Вход | Регистрация
 

КД 2.1 Возможно ли в "После загрузки" подменить гуид у нового объекта?

КД 2.1 Возможно ли в "После загрузки" подменить гуид у нового объекта?
Я
   Бешеный заяц
 
14.12.20 - 15:18
При выгрузке кидаю Нужный гуид в параметр, далее в модуле после загрузки планирую достать его от туда и присвоить новому объекту? сработает? или это по другому делается и просто так в лоб не получиться?
Если Объект.ЭтоНовый() Тогда
    Гуид = ПараметрыОбъекта.Получить("ГуидСерии");
    СсылкаСерии = Справочники.СерииНоменклатуры.ПолучитьСсылку(Гуид);
    Объект.УстановитьСсылкуНового(СсылкаСерии);
КонецЕсли;    

В полях поиска у меня соотвтственно поиск тоже по данному гуиду

ГУИД = ПараметрыОбъекта.Получить("ГуидСерии");
Если ЗначениеЗаполнено(ГУИД) Тогда     
     НовыйGUID = Новый УникальныйИдентификатор(ГУИД);
     СсылкаСерии = Справочники.СерииНоменклатуры.ПолучитьСсылку(НовыйGUID);
     Если  СсылкаТовар.ПолучитьОбъект() <> Неопределено
         СсылкаНаОбъект = СсылкаСерии;
     КонецЕсли;
КонецЕсли;
ПрекратитьПоиск = Истина;
   mistеr
 
1 - 14.12.20 - 15:26
(0) А просто флаг "искать по внутреннему идентификатору" не работает что ли? Больше ничего и не нужно вроде.
   Бешеный заяц
 
2 - 14.12.20 - 15:42
(1) не не лучше, внутренний идентификатор не совпадает с внутренним базы приемника и храниться в отдельном реквизите соответственно по нему и ищем и создёем новый
   Бешеный заяц
 
3 - 14.12.20 - 15:43
(1) есть еще вариант при выгрузке гуид подменять , но видел это давно и уже не помню как
   Бешеный заяц
 
4 - 14.12.20 - 15:52
Единственное меня грызут сомнения что подобное нужно делать в "После загрузке"... ,а не "При загрузке" но там "Объект" отсутствует если его нет
   Бешеный заяц
 
5 - 14.12.20 - 16:38
вверх
   Cthulhu
 
6 - 14.12.20 - 16:40
а подменить гуид перед выгрузкой - никак?..
тогда для загрузки хватит и (1)
   hhhh
 
7 - 14.12.20 - 17:12
(4) нет, не нужно в ПриЗагрузке. Делайте в ПослеЗагрузки.
   Aleksey
 
8 - 14.12.20 - 17:29
(4) Можно, только в полях поиска, а не при загрузки
   Бешеный заяц
 
9 - 14.12.20 - 17:30
(6) вопрос как?
   Бешеный заяц
 
10 - 14.12.20 - 17:34
Надо найти как то только что выгруженный атрибут с гуидом и подменить его значение?
   бомболюк
 
11 - 14.12.20 - 17:35
1. У ПКО снимаешь галку "Поиск по ГУИД", или как там она зовется
2. Добавляешь ПКС с галкой поиск по любому полю.
3. В обработчике ПКС "Перед выгрузкой" ставишь отказ = Истина и программно формируешь в узле ссылки узел "{УникальныйИдентификатор}" точно такой же, как Кд формирует при наличии галки "Поиск по ГУИД", но, соответственно, с нужным тебе значением.
   Aleksey
 
12 - 14.12.20 - 17:36
(9) Да примерно как ты и написал в (0). только добавить УстановитьСсылкуНового
   Aleksey
 
13 - 14.12.20 - 17:44
ТОлько параметры объекта недоступны, там доступен СвойстваПоиска
И когда ты найдешь свою ссылку (или создашь новую), не забудь удалить свойства поиска иначе он будет пытаться заполнить реквизит твоим гуидом
   Aleksey
 
14 - 14.12.20 - 17:45
Короче нужно пробывать я давно так делал, уже даже пример не найду. В крайнем случае ты всегда в полях поиска можешь написать

ЗагружаемыйОбъект  = Справочники.СерииНоменклатуры.СоздатьЭлемент();
ЗагружаемыйОбъект.УстановитьСсылкуНового(СсылкаСерии);
ЗагружаемыйОбъект.Записать();
СсылкаСерии = ЗагружаемыйОбъект.Ссылка;
   Aleksey
 
15 - 14.12.20 - 17:58
нашел у себя пример при выгрузки из 7-к в 8-ку ищу по гуиду

Источник GUID Приемник пусто

Пример для справочника контрагенты

GUID = СвойстваПоиска[""];//так как у приемника нет имени, то в свойствах поиска ничего не будет

СвойстваПоиска.Удалить("");
СвойстваПоиска.Вставить("{УникальныйИдентификатор}",GUID)//делаем так как будто такой гуид к нам прилетел из источника

УстанавливатьУОбъектаВсеСвойстваПоиска = ложь;
ПрекратитьПоиск =истина;
СсылкаНаОбъект = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(GUID));

Далее типовой алгоритм вполне справляется с "подменой" и создает с нужным гуидом
   Aleksey
 
16 - 14.12.20 - 18:01
(3) Вариант с подменой гуид при выгрузке описан тут v8: КД. Поиск по гуид., но по мне это сильнее заморочено чем подмена при поиске
   Бешеный заяц
 
17 - 14.12.20 - 20:56
ок спасибо буду пробовать
   Бешеный заяц
 
18 - 14.12.20 - 21:29
Сделал через поля поиска все ок
те ищу по гуиду, если не нашел создаю элемент с нужным гуидом прям в модуле "Поля поиска" и присваиваю новый элемент переменной "СсылкаНаОбъект"
далее стандартным механизмом заполняется мой элемент.



 ГУИД = ПараметрыОбъекта.Получить("ГуидСерии");
 Если ЗначениеЗаполнено(ГУИД) Тогда     
     НовыйGUID = Новый УникальныйИдентификатор(ГУИД);
     СсылкаСерии = Справочники.СерииНоменклатуры.ПолучитьСсылку(НовыйGUID);
     Если  СсылкаСерии.ПолучитьОбъект() = Неопределено тогда//его нет

         ТекСпр = Справочники.СерииНоменклатуры.СоздатьЭлемент();
         ТекСпр.УстановитьСсылкуНового(СсылкаСерии);
         ТекСпр.ОбменДанными.Загрузка = ИСТИНА;
         ТекСпр.Записать();
     КонецЕсли;
     СсылкаНаОбъект = СсылкаСерии;
 КонецЕсли;
   Aleksey
 
19 - 15.12.20 - 00:15
(18) Создавать не обязательно.
И разве в параметры объекта доступны в Поля поиска?

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.