|   |   | 
| 
 | КД 2.1 Возможно ли в "После загрузки" подменить гуид у нового объекта? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Бешеный заяц 14.12.20✎ 15:18 | 
        При выгрузке кидаю Нужный гуид в параметр, далее в модуле после загрузки планирую достать его от туда и присвоить новому объекту? сработает? или это по другому делается и просто так в лоб не получиться?
 Если Объект.ЭтоНовый() Тогда Гуид = ПараметрыОбъекта.Получить("ГуидСерии"); СсылкаСерии = Справочники.СерииНоменклатуры.ПолучитьСсылку(Гуид); Объект.УстановитьСсылкуНового(СсылкаСерии); КонецЕсли; В полях поиска у меня соотвтственно поиск тоже по данному гуиду ГУИД = ПараметрыОбъекта.Получить("ГуидСерии"); Если ЗначениеЗаполнено(ГУИД) Тогда НовыйGUID = Новый УникальныйИдентификатор(ГУИД); СсылкаСерии = Справочники.СерииНоменклатуры.ПолучитьСсылку(НовыйGUID); Если СсылкаТовар.ПолучитьОбъект() <> Неопределено СсылкаНаОбъект = СсылкаСерии; КонецЕсли; КонецЕсли; ПрекратитьПоиск = Истина; | |||
| 1
    
        mistеr 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 | 
        вверх     | |||
| 6
    
        Cthulhu 14.12.20✎ 16:40 | 
        а подменить гуид перед выгрузкой - никак?..
 тогда для загрузки хватит и (1) | |||
| 7
    
        hhhh 14.12.20✎ 17:12 | 
        (4) нет, не нужно в ПриЗагрузке. Делайте в ПослеЗагрузки.     | |||
| 8
    
        Aleksey 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. В обработчике ПКС "Перед выгрузкой" ставишь отказ = Истина и программно формируешь в узле ссылки узел "{УникальныйИдентификатор}" точно такой же, как Кд формирует при наличии галки "Поиск по ГУИД", но, соответственно, с нужным тебе значением. | |||
| 12
    
        Aleksey 14.12.20✎ 17:36 | 
        (9) Да примерно как ты и написал в (0). только добавить УстановитьСсылкуНового     | |||
| 13
    
        Aleksey 14.12.20✎ 17:44 | 
        ТОлько параметры объекта недоступны, там доступен СвойстваПоиска
 И когда ты найдешь свою ссылку (или создашь новую), не забудь удалить свойства поиска иначе он будет пытаться заполнить реквизит твоим гуидом | |||
| 14
    
        Aleksey 14.12.20✎ 17:45 | 
        Короче нужно пробывать я давно так делал, уже даже пример не найду. В крайнем случае ты всегда в полях поиска можешь написать
 ЗагружаемыйОбъект = Справочники.СерииНоменклатуры.СоздатьЭлемент(); ЗагружаемыйОбъект.УстановитьСсылкуНового(СсылкаСерии); ЗагружаемыйОбъект.Записать(); СсылкаСерии = ЗагружаемыйОбъект.Ссылка; | |||
| 15
    
        Aleksey 14.12.20✎ 17:58 | 
        нашел у себя пример при выгрузки из 7-к в 8-ку ищу по гуиду
 Источник GUID Приемник пусто Пример для справочника контрагенты GUID = СвойстваПоиска[""]; //так как у приемника нет имени, то в свойствах поиска ничего не будет СвойстваПоиска.Удалить(""); СвойстваПоиска.Вставить("{УникальныйИдентификатор}",GUID);//делаем так как будто такой гуид к нам прилетел из источника УстанавливатьУОбъектаВсеСвойстваПоиска = ложь; ПрекратитьПоиск =истина; СсылкаНаОбъект = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(GUID)); Далее типовой алгоритм вполне справляется с "подменой" и создает с нужным гуидом | |||
| 16
    
        Aleksey 14.12.20✎ 18:01 | 
        (3) Вариант с подменой гуид при выгрузке описан тут v8: КД. Поиск по гуид., но по мне это сильнее заморочено чем подмена при поиске     | |||
| 17
    
        Бешеный заяц 14.12.20✎ 20:56 | 
        ок спасибо буду пробовать     | |||
| 18
    
        Бешеный заяц 14.12.20✎ 21:29 | 
        Сделал через поля поиска все ок
 те ищу по гуиду, если не нашел создаю элемент с нужным гуидом прям в модуле "Поля поиска" и присваиваю новый элемент переменной "СсылкаНаОбъект" далее стандартным механизмом заполняется мой элемент. ГУИД = ПараметрыОбъекта.Получить("ГуидСерии"); Если ЗначениеЗаполнено(ГУИД) Тогда НовыйGUID = Новый УникальныйИдентификатор(ГУИД); СсылкаСерии = Справочники.СерииНоменклатуры.ПолучитьСсылку(НовыйGUID); Если СсылкаСерии.ПолучитьОбъект() = Неопределено тогда //его нет ТекСпр = Справочники.СерииНоменклатуры.СоздатьЭлемент(); ТекСпр.УстановитьСсылкуНового(СсылкаСерии); ТекСпр.ОбменДанными.Загрузка = ИСТИНА; ТекСпр.Записать(); КонецЕсли; СсылкаНаОбъект = СсылкаСерии; КонецЕсли; | |||
| 19
    
        Aleksey 15.12.20✎ 00:15 | 
        (18) Создавать не обязательно.
 И разве в параметры объекта доступны в Поля поиска? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |