|
Конвертация данных: как передать в приемник произвольную таблицу значений | ☑ | ||
---|---|---|---|---|
0
ботаникус
06.03.12
✎
12:58
|
Всем привет. Нужно передавать в приемник таблицу значений/дерево значений, с какими-то данными, которые не нужно никак конвертировать и т.д.... Нужно обрабатываать эту тз перед обменом и выполнять с базой кое-какие действия. Каким образом можно такого добиться ? подскажите
|
|||
1
Stim
06.03.12
✎
13:01
|
ПКО с пустыми приемниками и источниками. произвольная выгрузка для этого ПКО. В обработчик ПКО пишешь свой код
|
|||
2
ботаникус
06.03.12
✎
13:12
|
(1)хорошо, а как в этом случае добиться того, чтобы то, что я описал просходило до обмена, а не в процессе
|
|||
3
GenV
06.03.12
✎
13:20
|
(2) Выражайся яснее: до выгрузки объектов или после выгрузки и до загрузки объектов.
|
|||
4
СноваЗдорова
06.03.12
✎
13:21
|
может через параметры?
|
|||
5
zippygrill
06.03.12
✎
13:26
|
(4) кому как нравится.
|
|||
6
ботаникус
06.03.12
✎
13:38
|
(4) а как через параметры ? параметр может иметь тип деревозначений? или преобразовывать дерево в строку?
|
|||
7
ботаникус
06.03.12
✎
16:46
|
товарищи, а кто-нибудь пробовал дописывать файл обмена в событии "После выгрузки данных"? может есть примеры?
|
|||
8
ботаникус
06.03.12
✎
18:12
|
подниму, кто нибудь добавлял свои узлы в файл обмена?
|
|||
9
acsent
06.03.12
✎
18:16
|
передавать тз сереализованную в строку
|
|||
10
fisher
06.03.12
✎
18:24
|
(8) Сам не добавлял, но в справке по обработчикам встречал мини-примерчики
|
|||
11
ботаникус
06.03.12
✎
18:28
|
(10) ни могу найти никаких примеров, можешь подкинуть?
|
|||
12
fisher
06.03.12
✎
18:36
|
Ну, например в справке по "При выгрузке" ПКО вижу такое:
Приемник - инициализированный xml-узел объекта приемника. Может быть дополнен призвольным xml-содержимым, например используемым при загрузке. В случае отключения СтандартнойОбработки, правила конвертации свойств (ПКС) не обрабатываются, т.е. необходимо реализовать алгоритм заполняющий узел приемника в соответствии с форматом файла обмена Пример: ИнформацияОПользователе = СоздатьУзел("ИнформацияОПользователе"); УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияОС", Источник.АутентификацияОС); УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияСтандартная", Источник.АутентификацияСтандартная); УстановитьАтрибут(ИнформацияОПользователе, "ПоказыватьВСпискеВыбора", Источник.ПоказыватьВСпискеВыбора); УстановитьАтрибут(ИнформацияОПользователе, "ПользовательОС", Источник.ПользовательОС); УстановитьАтрибут(ИнформацияОПользователе, "ПолноеИмя", Источник.ПолноеИмя); ЧислоРолей = 1; Для Каждого Роль Из Источник.Роли Цикл УстановитьАтрибут(ИнформацияОПользователе, "Роль"+ЧислоРолей, Роль.Имя); Сообщить(Роль.Имя); ЧислоРолей = ЧислоРолей + 1; КонецЦикла; ДобавитьПодчиненный(Приемник, ИнформацияОПользователе |
|||
13
fisher
06.03.12
✎
18:40
|
А в при загрузке вот такая хня:
Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(Объект.Код)); Если Пользователь = Неопределено Тогда Пользователь = ПользователиИнформационнойБазы.СоздатьПользователя(); Пользователь.Имя = СокрЛП(Объект.Код); Пользователь.ПолноеИмя = СокрЛП(Объект.Код); КонецЕсли; Пока ФайлОбмена.Прочитать() Цикл ИмяУзла = ФайлОбмена.ЛокальноеИмя; ТипУзла = ФайлОбмена.ТипУзла; Если ИмяУзла = "ИнформацияОПользователе" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда Пользователь.АутентификацияОС = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияОС"); Пользователь.АутентификацияСтандартная = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияСтандартная"); Пользователь.ПоказыватьВСпискеВыбора = одАтрибут(ФайлОбмена, одТипБулево, "ПоказыватьВСпискеВыбора"); Пользователь.ПользовательОС = одАтрибут(ФайлОбмена, одТипСтрока, "ПользовательОС"); Пользователь.ПолноеИмя = одАтрибут(ФайлОбмена, одТипСтрока, "ПолноеИмя"); СтрокаРоль1 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль1"); СтрокаРоль2 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль2"); СтрокаРоль3 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль3"); ИначеЕсли (ИмяУзла = "ИнформацияОПользователе") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда Прервать; КонецЕсли; КонецЦикла; Пользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Полный; Пользователь.Язык = Метаданные.Языки.Русский; Пользователь.Роли.Очистить(); Роль1 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Роль2 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Роль3 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Если НЕ Роль1 = Неопределено Тогда Пользователь.Роли.Добавить(Роль1); КонецЕсли; Если НЕ Роль2 = Неопределено Тогда Пользователь.Роли.Добавить(Роль2); КонецЕсли; Если НЕ Роль3 = Неопределено Тогда Пользователь.Роли.Добавить(Роль3); КонецЕсли; Пользователь.Записать(); |
|||
14
ботаникус
06.03.12
✎
18:43
|
(13)спасибо друг
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |