Имя: Пароль:
1C
1С v8
Конвертация данных, изменение GUID-а.
, ,
0 бомболюк
 
17.01.12
14:54
Добрый день.
Подскажите пожалуйста, как то можно при выгрузке данных подменить значение уникального идентификатора на свой?
1 ЧеловекДуши
 
17.01.12
14:55
Можно, во время, когда еще не загрузил файл, а он уже выгружен :)
2 ЧеловекДуши
 
17.01.12
14:55
+ Ну или при формировании файлов подменяешь ГУИД на свой.
3 ЧеловекДуши
 
17.01.12
14:55
+ И так же можно это делать во время загрузки.
4 бомболюк
 
17.01.12
14:56
да мне бы обойтись возможностями конвертации хотелось бы
5 ЧеловекДуши
 
17.01.12
14:56
Вот только беда в том, что как ты сопоставишь гуиды?
6 бомболюк
 
17.01.12
14:56
что то там подменять в xml-файле после выгрузки не охота
7 бомболюк
 
17.01.12
14:56
(5) а у меня есть табличка ;-)
8 ЧеловекДуши
 
17.01.12
14:57
(4)Тогда какая разница, какой Гуид?
9 бомболюк
 
17.01.12
14:58
предыстория: 2 базы сливаются в одну. Эти 2 базы раньше были одной, потом одну скопировали и начали вторую. В итоге гуиды в основном одни и теже, а на разные гуиды есть таблица соответствия элементов в разных базах.
10 ЧеловекДуши
 
17.01.12
14:59
Бред несу. Гуид же присваивается объекту во время его создания.
Т.е. по сути он системный.
11 бомболюк
 
17.01.12
14:59
(10) ну нет, его можно назначит для нового объекта
12 ЧеловекДуши
 
17.01.12
15:00
13 бомболюк
 
17.01.12
15:01
+(9) ну и значит сначала выгружается инфа из одной базы, а потом из другой. и чтоб правила не менять для второй выгрузки мне только и надо решить задачу в сабже, иначе надо правила менять а лень.
14 Aleksey
 
17.01.12
15:01
Штатно - нет
15 ЧеловекДуши
 
17.01.12
15:01
16 cw014
 
17.01.12
15:02
(13) Кури в сторону обработчиков
17 бомболюк
 
17.01.12
15:02
(16) курил уже, может подскажешь каких?
18 cw014
 
17.01.12
15:02
(13) Как вариант отключаешь поиск и подменяешь УзелСсылки
19 бомболюк
 
17.01.12
15:03
(18) есть пример?
20 Рэйв
 
17.01.12
15:05
(0)А зачем?
21 cw014
 
17.01.12
15:05
(20) смотри (9)
22 cw014
 
17.01.12
15:06
(19) Если дождешься - попробую накинуть
23 бомболюк
 
17.01.12
15:07
я тута долго ;-) спасибо тебе добрый человек
24 Aleksey
 
17.01.12
15:08
(17)
Обработчики "Правила конвертации объектов"
При загрузке


Событие выполняется после попытки идентификации. В случае успешной синхронизации доступен найденный объект. В противном случае его значение Неопределено. Можно произвести произвольную инициализацию, заполняемого данными объекта.

Параметры:
ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе

Объект - Произвольный. Загружаемый, модифицируемый объект, созданный по ссылке или найденный в информационной базе. Если способ идентификации объекта в файле не указан (т.е. отсутствует узел "Ссылка"), то параметр содержит значение Неопределено. В этом случае в обработчике возможна произвольная инициализация загружаемого объекта, в противном случае, объект будет создан автоматически.
25 бомболюк
 
17.01.12
15:12
(24) да, судя по описанию это решит проблему. Спасибо за наводку.
26 cw014
 
17.01.12
16:53
(23) Если еще тут, то лови:

1. Отключаешь все ключи поиска
2. "При выгрузке" объекта ставишь такой примерно код:

УзелСсылкиXML = СоздатьУзел("Ссылка");
УстановитьАтрибут(УзелСсылкиXML,"Нпп",УзелСсылки);
УзелГуид = ДобавитьУзел(УзелСсылкиXML,"Свойство");
УстановитьАтрибут(УзелГуид,"Тип","Строка");
УстановитьАтрибут(УзелГуид,"Имя","{УникальныйИдентификатор}");
одЗаписатьЭлемент(УзелГуид,"Значение", "00000000-0000-0000-0000-000000000000");
УзелСсылкиXML.ЗаписатьКонецЭлемента();

// тут можно записать дополнительные поля поиска кроме гуида

УзелСсылкиXML.ЗаписатьКонецЭлемента();
УзелСсылки = УзелСсылкиXML.Закрыть();
ДобавитьПодчиненный(Приемник,УзелСсылки);

3. "После выгрузки" объекта ставишь код:

ВыгруженныеОбъекты[КлючВыгружаемыхДанных] = УзелСсылки;

И будет тебе счастье
27 бомболюк
 
18.01.12
09:17
(26) спасибо, попробую. что то первый вариант у меня не заладился. не понял, как в ПриЗагрузке получить старый ГУИД, который надо заменить на другой из таблицы соответствия.
28 Aprobator
 
18.01.12
09:28
(27) дык куда нить записать его при выгрузке и ключик придумать для поиска.
29 GenV
 
18.01.12
09:30
30 cw014
 
18.01.12
09:32
(27) В xml объект можно вставить произвольную ветку. Главное ее отработать при загрузке, что бы не отвалилась на загрузке (простите мой каламбур)
31 Aprobator
 
18.01.12
09:35
+(30) кстати - если из 8 ки выгрузка то элементарно. В КД есть передача значения в параметр. Лепишь там значение = Твой ГУИД, имя праметра. При загрузке можно достать из ПараметрыОбъекта[ИмяПараметра]. Из 7 - ки придется прописывать руками.
32 GenV
 
18.01.12
09:38
(31) Все можно сделать проще )
33 ЧеловекДуши
 
18.01.12
09:38
Больше всего поражает, а накой, Автору, нужен старый гуид, если он по сути только идентифицирует загружаемые данные.
При этом гуид может и совпасть, т.к. автор уже писал, что базы раньше были общими.

Т.е. ему надо чисто подставить элементы по определенному признаку + Создать новые обекты и соответственно у нового будет новый гуид, и далее только нужно помнить о новом и создать где нить таблицу соответствия :)

...но автор истинный программист, он пойдет по граблям через гору :)
34 GenV
 
18.01.12
09:40
(33) Правильно. Ему просто сразу нужно указывать для элементов новый УИД. А КД сама должна или найти или создать элемент.
35 Aprobator
 
18.01.12
09:47
(33) дык таблица ж соответствия для поиска. Не хочется ему использовать стандартные поля поиска. Поскольку после того как базы разъехались мало ли что там происходило с теми же ключевыми полями код и наименование (у справочников например), а свести все хочется в то, что было.
(32) может быть ) Я се вооще на КД сваял загрузку из экселя )))