К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Вопрос по ПлануОбмена

Гость
0 - 17.04.2012 - 08:49
День добрый. Возникла необходимость выгружать изменения нескольких объектов (Справочник + 2 РегСведений) из нескольких баз в одну общую. Базы не РИБ, но конфигурации одинаковые (Настроенная УТ 10.3). От РИБ отказались сознательно, тк посчитали в случае сбоев и восстановления бэкапов той или иной базы проблематично будет восстановить корректность данных. Для регистрации изменений хочу использовать новый ПланОбмена. В нем РИБ не ставил признак. Выбрал в составе интересующие объекты с авторегистрацией.

Далее столкнулся с некоторыми проблемами:
1) написал обработку выгрузки:
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
Узел = ПланыОбмена.TS_ОбменСЯдром8.НайтиПоКоду("000000002 ");
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(Путь+СокрЛП(Узел.НомерОтправлен ного+1)+".xml");
ЗаписьСообщения.НачатьЗапись(Запись, Узел);
Выб = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получ атель, ЗаписьСообщения.НомерСообщения);
Пока Выб.Следующий() Цикл
Объект = Выб.Получить();
ЗаписатьXML(Запись, Объект);
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Запись.Закрыть();

Она вроде формирует мне файл. А вот как мне загрузить данный файл я не соображу :( Причем я хочу удалять изменения в регистрации когда получу подтверждение, что В БазуПриемник загрузили xml с определенным номером.

Буду очень признателен если объясните. По найденным фрагментам в интернете разобраться не могу...



Гость
1 - 17.04.2012 - 09:05
http://v8.1c.ru/metod/books/book.jsp?id=288
Гость
2 - 17.04.2012 - 09:16
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения, КоличествоЭлементовВТранзакцииНаВыгрузкуДанных);
ЧтениеСообщения.ЗакончитьЧтение();
Гость
3 - 17.04.2012 - 09:16
читать так, не уверен что получится если не риб, но попробуй
Гость
4 - 17.04.2012 - 09:26
Функция ЗагрузитьФайл(ИмяФ)
ЧтениеХМЛ = Новый ЧтениеXML;
ЧтениеХМЛ.ОткрытьФайл(ИмяФ);

//позиционируемся на корневом элементе
ЧтениеХМЛ.Прочитать();

//позиционируемся на первом элементе, содержащим данные
ЧтениеХМЛ.Прочитать();
Пока ВозможностьЧтенияДанных(ЧтениеХМЛ) Цикл
Попытка
Данные = ПрочитатьДанные(ЧтениеХМЛ);
Исключение
ЗаписьЖурналаРегистрации(Пользователь,
УровеньЖурналаРегистрации.Ошибка, , ,
"Ошибка при чтении файла: "+ИмяФ);
ЗаписьЖурналаРегистрации(Пользователь,
УровеньЖурналаРегистрации.Ошибка, , ,
ОписаниеОшибки());

Возврат "Ошибка чтения";
КонецПопытки;

ЗаписьЖурналаРегистрации(Пользователь,
УровеньЖурналаРегистрации.Информация, , ,
"Запись объекта в базу");

Данные.Записать();

КонецЦикла;
ЧтениеХМЛ.Закрыть();

Возврат "";
КонецФункции

Функция ВозможностьЧтенияДанных(ЧтениеХМЛ)
ТипХМЛ = ПолучитьXMLТип(ЧтениеХМЛ);
Если ТипХМЛ=Неопределено Тогда
Возврат Ложь;
КонецЕсли;

Возврат ВозможностьЧтенияXML(ЧтениеХМЛ);
КонецФункции
Функция ПрочитатьДанные(ЧтениеХМЛ)
ТипХМЛ = ПолучитьXMLТип(ЧтениеХМЛ);
Если ТипХМЛ=Неопределено Тогда
Возврат Неопределено;
КонецЕсли;

Возврат ПрочитатьXML(ЧтениеХМЛ);
КонецФункции
Гость
5 - 17.04.2012 - 09:49
3-angro > Не заработало для Плана без РИБ :(
4-Buzz > Файл xml сообщений для Плана обмена видно имеет немного специфический формат и его прочесть не получается методом описанном тобой :( первый ВозможностьЧтенияXML(ЧтениеХМЛ) возвращает ложь и цикл не идет...
Гость
6 - 17.04.2012 - 09:53
Покажи структуру XML
Гость
7 - 17.04.2012 - 09:56
Задам еще вопросик. В УТ есть Сервис-Прочие обмены данными- Все настройки обмена данными. На закладки Все обмены создал элемент справочника "Настройки обмена данными" Но я так понимаю что без РИБ у меня выгрузка не заработает? выдает ошибку <Метод объекта не обнаружен (ВыгрузитьИзмененияДанныхДляУзла)

Техническая информация:
{ОбщийМодуль.ПроцедурыОбменаДанными(1588)**: Метод объекта не обнаружен (ВыгрузитьИзмененияДанныхДляУзла)>. Если ставлю в Плане обмена РИБ то выгружает, но в другую не загружает (я так понимаю потому что Общая база не была создана выгрузкой). Я правильно понял или где-то заблуждаюсь?
Гость
8 - 17.04.2012 - 10:01
<v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
- <v8msg:Header>
<v8msg:ExchangePlan>TS_ОбменСЯдром8</v8msg:ExchangePlan>
<v8msg:To>000000002</v8msg:To>
<v8msg:From>000000001</v8msg:From>
<v8msg:MessageNo>4</v8msg:MessageNo>
<v8msg:ReceivedNo>0</v8msg:ReceivedNo>
</v8msg:Header>
- <v8msg:Body>
- <InformationRegisterRecordSet.ЗначенияСвойствОбъек тов>
- <Filter>
<Объект xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CatalogRef.Номенклатура">c9410460-936a-11e0-8e3a-002590183788</Объект>
<Свойство>3f97ec22-e6bd-11df-8cd3-0030486601e8</Свойство>
</Filter>
- <Records>
- <Record>
<Объект xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CatalogRef.Номенклатура">c9410460-936a-11e0-8e3a-002590183788</Объект>
<Свойство>3f97ec22-e6bd-11df-8cd3-0030486601e8</Свойство>
<Значение xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CatalogRef.ЗначенияСвойствОбъектов">8ddc 5169-e72e-11df-8cd3-0030486601e8</Значение>
</Record>
</Records>
</InformationRegisterRecordSet.ЗначенияСвойствОбъект ов>
- <CatalogObject.Номенклатура>
<Ref>d3e80e06-e52a-11df-8cd3-0030486601e8</Ref>
<IsFolder>false</IsFolder>
<DeletionMark>false</DeletionMark>
<Parent>d3e80e05-e52a-11df-8cd3-0030486601e8</Parent>
<Code>Ц05647</Code>
<Description>бббб</Description>
<СтатьяЗатрат>00000000-0000-0000-0000-000000000000</СтатьяЗатрат>
<Артикул />
<БазоваяЕдиницаИзмерения>6a563aa4-e1a0-11df-b7e9-0011d851017d</БазоваяЕдиницаИзмерения>
<Весовой>false</Весовой>
<ВесовойКоэффициентВхождения>0</ВесовойКоэффициентВхождения>
<ВестиПартионныйУчетПоСериям>false</ВестиПартионныйУчетПоСериям>
<ВестиУчетПоСериям>false</ВестиУчетПоСериям>
<ВестиУчетПоХарактеристикам>false</ВестиУчетПоХарактеристикам>
<ЕдиницаДляОтчетов>d3e80e07-e52a-11df-8cd3-0030486601e8</ЕдиницаДляОтчетов>
<ЕдиницаХраненияОстатков>d3e80e07-e52a-11df-8cd3-0030486601e8</ЕдиницаХраненияОстатков>
<Комментарий>киноколлекция</Комментарий>
<Набор>false</Набор>
<НаименованиеПолное>бббб</НаименованиеПолное>
<НоменклатурнаяГруппа>3feb3183-c001-4562-9aa2-fae4165dd905</НоменклатурнаяГруппа>
<НомерГТД>00000000-0000-0000-0000-000000000000</НомерГТД>
<ОсновноеИзображение>00000000-0000-0000-0000-000000000000</ОсновноеИзображение>
<ОсновнойПоставщик>00000000-0000-0000-0000-000000000000</ОсновнойПоставщик>
<ОтветственныйМенеджерЗаПокупки>00000000-0000-0000-0000-000000000000</ОтветственныйМенеджерЗаПокупки>
<СтавкаНДС>НДС18</СтавкаНДС>
<СтранаПроисхождения>00000000-0000-0000-0000-000000000000</СтранаПроисхождения>
<Услуга>false</Услуга>
<НоменклатурнаяГруппаЗатрат>00000000-0000-0000-0000-000000000000</НоменклатурнаяГруппаЗатрат>
<ВидНоменклатуры>bf61f151-e1b7-11df-b7e9-0011d851017d</ВидНоменклатуры>
<ВестиСерийныеНомера>false</ВестиСерийныеНомера>
<Комплект>false</Комплект>
<ЦеноваяГруппа>00000000-0000-0000-0000-000000000000</ЦеноваяГруппа>
<ЕдиницаИзмеренияМест>00000000-0000-0000-0000-000000000000</ЕдиницаИзмеренияМест>
<ДополнительноеОписаниеНоменклатуры />
<TS_Фасовка>2</TS_Фасовка>
<TS_ДатаВыхода>2012-04-01T00:00:00</TS_ДатаВыхода>
<TS_ВидУпаковки>853ed4ab-ed4a-46ef-8706-5cdca6026e39</TS_ВидУпаковки>
<TS_ВалютаХраненияСЦО>00000000-0000-0000-0000-000000000000</TS_ВалютаХраненияСЦО>
<ДополнительноеОписаниеНоменклатурыВФорматеHTML>fa lse</ДополнительноеОписаниеНоменклатурыВФорматеHTML>
</CatalogObject.Номенклатура>
- <CatalogObject.Номенклатура>
<Ref>c9410460-936a-11e0-8e3a-002590183788</Ref>
<IsFolder>false</IsFolder>
<DeletionMark>false</DeletionMark>
<Parent>d3e80e05-e52a-11df-8cd3-0030486601e8</Parent>
<Code>Ч16899</Code>
<Description>аааа</Description>
<СтатьяЗатрат>00000000-0000-0000-0000-000000000000</СтатьяЗатрат>
<Артикул />
<БазоваяЕдиницаИзмерения>6a563aa4-e1a0-11df-b7e9-0011d851017d</БазоваяЕдиницаИзмерения>
<Весовой>false</Весовой>
<ВесовойКоэффициентВхождения>0</ВесовойКоэффициентВхождения>
<ВестиПартионныйУчетПоСериям>false</ВестиПартионныйУчетПоСериям>
<ВестиУчетПоСериям>false</ВестиУчетПоСериям>
<ВестиУчетПоХарактеристикам>false</ВестиУчетПоХарактеристикам>
<ЕдиницаДляОтчетов>c9410461-936a-11e0-8e3a-002590183788</ЕдиницаДляОтчетов>
<ЕдиницаХраненияОстатков>c9410461-936a-11e0-8e3a-002590183788</ЕдиницаХраненияОстатков>
<Комментарий>музыка DVD</Комментарий>
<Набор>false</Набор>
<НаименованиеПолное>ааааа</НаименованиеПолное>
<НоменклатурнаяГруппа>3feb3183-c001-4562-9aa2-fae4165dd905</НоменклатурнаяГруппа>
<НомерГТД>00000000-0000-0000-0000-000000000000</НомерГТД>
<ОсновноеИзображение>00000000-0000-0000-0000-000000000000</ОсновноеИзображение>
<ОсновнойПоставщик>00000000-0000-0000-0000-000000000000</ОсновнойПоставщик>
<ОтветственныйМенеджерЗаПокупки>00000000-0000-0000-0000-000000000000</ОтветственныйМенеджерЗаПокупки>
<СтавкаНДС>НДС18</СтавкаНДС>
<СтранаПроисхождения>00000000-0000-0000-0000-000000000000</СтранаПроисхождения>
<Услуга>false</Услуга>
<НоменклатурнаяГруппаЗатрат>00000000-0000-0000-0000-000000000000</НоменклатурнаяГруппаЗатрат>
<ВидНоменклатуры>bf61f151-e1b7-11df-b7e9-0011d851017d</ВидНоменклатуры>
<ВестиСерийныеНомера>false</ВестиСерийныеНомера>
<Комплект>false</Комплект>
<ЦеноваяГруппа>00000000-0000-0000-0000-000000000000</ЦеноваяГруппа>
<ЕдиницаИзмеренияМест>00000000-0000-0000-0000-000000000000</ЕдиницаИзмеренияМест>
<ДополнительноеОписаниеНоменклатуры />
<TS_Фасовка>0</TS_Фасовка>
<TS_ДатаВыхода>0001-01-01T00:00:00</TS_ДатаВыхода>
<TS_ВидУпаковки>853ed4ab-ed4a-46ef-8706-5cdca6026e39</TS_ВидУпаковки>
<TS_ВалютаХраненияСЦО>00000000-0000-0000-0000-000000000000</TS_ВалютаХраненияСЦО>
<ДополнительноеОписаниеНоменклатурыВФорматеHTML>fa lse</ДополнительноеОписаниеНоменклатурыВФорматеHTML>
</CatalogObject.Номенклатура>
</v8msg:Body>
</v8msg:Message>
Гость
9 - 17.04.2012 - 10:31
Попробуй выгружать отдельными файлами. Потом загрузи.
Должно работать.

Функция ВыгрузитьДанныеВФайл(Данные,Счетчик)

ИмяФ = "Какое-то имя файла "+Счетчик;

ЗаписьХМЛ = Новый ЗаписьXML();
ЗаписьХМЛ.ОткрытьФайл(ИмяФ);
ЗаписьХМЛ.ЗаписатьНачалоЭлемента("Корневой");
ЗаписьХМЛ.ЗаписатьСоответствиеПространстваИмен("xs d", "http://www.w3.org/2001/XMLSchema");
ЗаписьХМЛ.ЗаписатьСоответствиеПространстваИмен("xs i", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьХМЛ.ЗаписатьСоответствиеПространстваИмен("v8 ", "http://v8.1c.ru/data");

ЗаписатьXML(ЗаписьХМЛ, Данные);

ЗаписьХМЛ.ЗаписатьКонецЭлемента();
ЗаписьХМЛ.Закрыть();

Возврат ИмяФ;
КонецФункции

............
Выб = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получ атель, ЗаписьСообщения.НомерСообщения);
Счетчик = 0;
Пока Выб.Следующий() Цикл
Счетчик = Счетчик + 1;
Объект = Выб.Получить();
ИмяФайла = ВыгрузитьДанныеВФайл(Объект,Счетчик);
//Что-нибудь делаем с файлом. Перемещаем куда надо и т.д.
КонецЦикла;
Гость
10 - 20.04.2012 - 09:17
9-Buzz > Никак пока не протестирую вами предложенный вариант, но мне кажется что это не совсем то что мне надо... Хотя конечно попробую.

Может я в принципе не теми механизмами думаю пользоваться? Опишу кратко задачу. Есть 3 базы, мне необходимо соединить в новой базе Справочник + 3 рег.Сведений. Первоначальное заполнение у меня получилось (через xml по правилам слил). Теперь задача обновлять информацию в общей базе(данные изменяются в 3 базах- эти изменения надо перенести в общую). выгружать каждый раз полную выгрузку не вариант- очень большой обмен. Из общей базы обратно мне ничего выгружать не надо. Изменений объектов там не будет. Разве что необходимо фиксировать что Выгруженный файл загрузился в общую базу (чтобы урезать изменения). Подскажите может чем пользовались бы вы?
Гость
11 - 20.04.2012 - 15:31
Вроде добился того что нужно. Всем откликнувшимся спс за помощь. Сделал все ПланомОбмена без РИБ. Через механизм УТ Сервис-Прочие обмены данными- Все настройки обмена данными. Раньше не получалось, тк не указывал Правила Обмена. После указания пришлось разместить пустую процедуру в МодулеОбъекта Плана Обмена Процедура ОпределитьТипОтправкиДанных(ЭлементДанных, ОтправкаЭлемента) Экспорт
КонецПроцедуры. После этого все начало норм обмениваться. Немного подкручу правила и в путь...
Гость
12 - 20.04.2012 - 22:28
попробую предположить, что это работает только потому что идентичные базы, если бдет УТ - БП или УПП-БП или еще чего нибудь то проблем возникнет гораздо больше?


К списку вопросов






Copyright ©, Все права защищены