Имя: Пароль:
1C
 
Передача уникального идентификатора (реквизит табличной части) через Конвертацию
0 etlau
 
15.01.15
17:03
Дано:
две похожие базы, в одном из реквизитов ТЧ объекта используется УникальныйИдентификатор
Конвертация версии 2.1.8.2

Задача:
передать этот реквиит по правилам обмена в другую базу.

Проблема:
не указывая правила обмена, просто как тип данных передавать -  ничего не передает.
При попытке указать правило - ругается что
Ссылка на несуществующий объект метаданных в правилах обмена
    Объект                 =  Уникальный идентификатор
    ОписаниеОшибки         =  Значение не является значением объектного типа (ПКО)

хотя саму выгрузку делает.


Что сделать можно?
Вычитал, что по параметру, но влет не получилось.
Не подскажете, как?
1 mehfk
 
15.01.15
17:07
Значение = Строка(ОбъектКоллекции.ТвоеПоле)
2 ktvladimir
 
15.01.15
17:07
Возможно в обработке обмена данных есть переменная с названием УникальныйИдентификатор
3 etlau
 
15.01.15
17:08
Сам реквизит называется GUID
4 ktvladimir
 
15.01.15
17:10
соответсвенно переменная с названием GUID)))... я как то просто столкнулся с проблемой что у меня был реквизит с названием объект :) и все рухнуло а я долго вкуривал почему
5 mikecool
 
15.01.15
17:11
что надо получить в результате в приемнике? ссылку по гуид?
6 etlau
 
15.01.15
17:17
(1) Да, теперь передается, в исходящем файле есть, но не получается

Значение = Строка(ОбъектКоллекции.GUID)

Где и что прописать, чтобы получалось на стороне приемника?
7 etlau
 
15.01.15
17:19
В приемнике надо получить опять таки УникальныйИдентификатор
8 mikecool
 
15.01.15
17:20
(7) ПриЗагрузке
Значение = Новый УникальныйИдентификатор(Строка которую передали)
сработает?
9 ktvladimir
 
15.01.15
17:24
я иногда пользуюсь таким приемом, когда есть реквизит неограниченной длины типа примечание
в данном случае
перед выгрузкой примечания

структ = новый Структура
Структ.Вставить("Примечание", источник.Примечание);
тз = ТЧ.Выгрузить();
тз.Свернуть("НомерСтроки, GUID");
Структ.Вставить("ТЧ", тз)
Значение = ЗначениеВСтрокуВнутр(Структ)

Соответсвтенно у обекта При записи разворачиваем
Структ = ЗначениеИзСтрокиВнутр(Объект.Примечание)
Объект.Примечание = Структ.Примечание
тз = Структ.тч ну итд
10 etlau
 
15.01.15
17:28
(8) близко, но в каком месте это писать и как получить эту строку
11 Гёдза
 
15.01.15
17:32
КД пытается получить УникальныйИдентификатор.ПКО и обламывается.
смотри какое правило указано у реквизита
12 mikecool
 
15.01.15
17:32
(10) передавать просто как строку, если получится
либо при выгрузке попробовать в ПКС написать
Значение = Новый УникальныйИдентификатор(Строка источник)
13 Гёдза
 
15.01.15
17:34
Можно так
ГУИД= Строка(ОбъектКоллекции.ГУИД);
Выражение = "Новый УникальныйИдентификатор(""" + ГУИД + """)";
14 etlau
 
15.01.15
17:43
(13) в информации по обработчикам переменной "Выражение" нет, это работает?

Где писать? Перед выгрузкой?
15 etlau
 
15.01.15
17:48
(13) Все, спасибо, так получилось!

Выражение сработало.


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

Спасибо!
16 etlau
 
15.01.15
17:55
(15) Точнее в "перед выгрузкой"
17 Новенький_2009
 
15.01.15
17:55
(9) интересное решение. Извратное :) А что мешало создать доп.служебный узел при выгрузке, и в приемнике его прочитать, и что-то там сделать?
18 etlau
 
15.01.15
18:05
(17) Как? Мне этот механизм не знаком
19 Новенький_2009
 
15.01.15
18:13
(17) Создаешь дополнительный узел у объекта, валишь туда что тебе нужно, затем читаешь его в приемнике, и опять - делаешь что нужно. Но это так - к слову какбэ сказано. Это я к тому, что чел озвучил задачу "как к строке ТЧ дописать что-то в приемнике". Можно вот таким способом, как я описал, но будут траблы с распарсиванием, если прикрепленное - надо по правилам конвертировать. Есть еще один классный вариант, мне он даже больше нравится: В ПКГС ТЧ делаешь параметр. Параметру можно уже навесить правило конвертации. В обработчике ПослеЗагрузки он становится доступен как соответствие, в котором лежит с конвертированный параметр. Все :)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс