|   |   | 
| 
 | Конвертация данных. Позиционирование в файле | ☑ | ||
|---|---|---|---|---|
| 0
    
        Beduin 18.10.16✎ 14:10 | 
        В конвертации данных есть возможность с помощью переменной ФайлОбмена проходить по исходному файлу. 
 Вопрос. Если мы в одном объекте пробежались по этому файлу, то при переходе к другому объекту, мы будем в начале файла или в конце? И если будем в конце, то как попасть в начало. Проблема простая. К каждому объекту выгрузки в конвертации данных я добавляю собственную информацию через узлы. Задача вытащить эту информацию для каждого объекта. Может у меня вообще подход неверный для этой задачи? | |||
| 1
    
        b_ru 18.10.16✎ 14:12 | 
        Так в параметры эту информацию пихать, да и не извращаться с чтением xml.     | |||
| 2
    
        gorakh 18.10.16✎ 14:12 | 
        А загружать будем в 1с?     | |||
| 3
    
        gorakh 18.10.16✎ 14:14 | 
        Зачем?     | |||
| 4
    
        Beduin 18.10.16✎ 14:26 | 
        (1) В параметрах для каждого объекта?     | |||
| 5
    
        gorakh 18.10.16✎ 14:29 | 
        Задачу "в студию" ВСЮ.     | |||
| 6
    
        Beduin 18.10.16✎ 14:35 | 
        (5) Миграция пользователей между базами. Нужны правила, которые позволят переносить от одного и больше пользователей за раз в одну или несколько соседних баз.     | |||
| 7
    
        gorakh 18.10.16✎ 14:42 | 
        (6) В контексте конфигурации на базе БСП?     | |||
| 8
    
        Beduin 18.10.16✎ 14:44 | 
        (7) Типовые, да.
 Переносится должен справочник пользователей и пользователи создаваемые платформой. | |||
| 9
    
        gorakh 18.10.16✎ 14:51 | 
        Справочник пользователеи перенесется, кроме реквизита ИдентификаторПользователяИБ который надо подставлять из ГУИДа на стороне Приемника после записи связанного элемента пользователь ИБ. Ну и роли уже должны присутствовать. ИМХО как-то так.     | |||
| 10
    
        gorakh 18.10.16✎ 14:52 | 
        Подставлять уже в событии при загрузке.     | |||
| 11
    
        Beduin 18.10.16✎ 14:55 | 
        (9) Я понимаю. Вопрос как правильно реализовать это. Если пихать в файл дополнительные узлы, то обходом через стандартную переменную ФайлОбмена, я уже после загрузки первых данных оказываюсь в конце выборки. И когда переходим, ко второму объекту, то все.     | |||
| 12
    
        gorakh 18.10.16✎ 15:13 | 
        (11) После загрузки
 "Условия возникновения события Только для платформы V8. Событие выполняется после прочтения и установки атрибутов объекта из файла, но до его записи в информационную базу. Возможна модификация загруженного объекта." Не подходит? | |||
| 13
    
        Beduin 18.10.16✎ 15:17 | 
        (12) Подходит. Проблема не в этом. 
 Вот пример из конвертации. Который они советуют использовать. Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(Объект.Код)); Если Пользователь = Неопределено Тогда Пользователь = ПользователиИнформационнойБазы.СоздатьПользователя(); Пользователь.Имя = СокрЛП(Объект.Код); Пользователь.ПолноеИмя = СокрЛП(Объект.Код); КонецЕсли; Пока ФайлОбмена.Прочитать() Цикл ИмяУзла = ФайлОбмена.ЛокальноеИмя; ТипУзла = ФайлОбмена.ТипУзла; Если ИмяУзла = "ИнформацияОПользователе" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда Пользователь.АутентификацияОС = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияОС"); Пользователь.АутентификацияСтандартная = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияСтандартная"); Пользователь.ПоказыватьВСпискеВыбора = одАтрибут(ФайлОбмена, одТипБулево, "ПоказыватьВСпискеВыбора"); Пользователь.ПользовательОС = одАтрибут(ФайлОбмена, одТипСтрока, "ПользовательОС"); Пользователь.ПолноеИмя = одАтрибут(ФайлОбмена, одТипСтрока, "ПолноеИмя"); СтрокаРоль1 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль1"); СтрокаРоль2 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль2"); СтрокаРоль3 = одАтрибут(ФайлОбмена, одТипСтрока, "Роль3"); ИначеЕсли (ИмяУзла = "ИнформацияОПользователе") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда Прервать; КонецЕсли; КонецЦикла; Пользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Полный; Пользователь.Язык = Метаданные.Языки.Русский; Пользователь.Роли.Очистить(); Роль1 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Роль2 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Роль3 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1)); Если НЕ Роль1 = Неопределено Тогда Пользователь.Роли.Добавить(Роль1); КонецЕсли; Если НЕ Роль2 = Неопределено Тогда Пользователь.Роли.Добавить(Роль2); КонецЕсли; Если НЕ Роль3 = Неопределено Тогда Пользователь.Роли.Добавить(Роль3); КонецЕсли; Пользователь.Записать(); Это хорошо работает если пользователь один. Когда один раз прошлись по файлу и нашли то что нужно. Но когда пользователей больше чем 1. То тут проблема. | |||
| 14
    
        Cyberhawk 18.10.16✎ 15:18 | 
        "подход неверный для этой задачи?" // Использовать недоументированные возможности обработки обмена в твоем случае неверно     | |||
| 15
    
        Beduin 18.10.16✎ 15:22 | 
        (14) в смысле? в (14) пример из самой конвертации     | |||
| 16
    
        Cyberhawk 18.10.16✎ 15:27 | 
        (15) Я про "К каждому объекту выгрузки в конвертации данных я добавляю собственную информацию через узлы" из (0)     | |||
| 17
    
        Beduin 18.10.16✎ 15:31 | 
        (16) Вообще они сами это рекомендуют в событии при выгрузке. И нигде не написано, что эти доп узлы только для одного объекта.     | |||
| 18
    
        Cyberhawk 18.10.16✎ 16:17 | 
        (17) А, ясно, про что ты. Ты про "Приемник - инициализированный xml-узел объекта приемника. Может быть дополнен призвольным xml-содержимым, например используемым при загрузке. ". Но нигде не описано, как этим пользоваться при загрузке...     | |||
| 19
    
        Beduin 18.10.16✎ 17:06 | 
        (18) Угу. И у меня задача создать правила обмена, через которые можно создавать пользователей. В одной базе создаются пользователи, один и больше. И через обмены разносятся по другим базам. Я примером из конвертации и воспользовался и в момент загрузки 2 пользователей, обработчик по первому пробежался по файлу, и когда перешел на второго, то файлобмена спозиционирован уже в конце.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |