|
КД 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) Создавать не обязательно.
И разве в параметры объекта доступны в Поля поиска? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |