Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Конвертация данных. Позиционирование в файле

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует