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
| попробую предположить, что это работает только потому что идентичные базы, если бдет УТ - БП или УПП-БП или еще чего нибудь то проблем возникнет гораздо больше? | |
| Интернет-форум Краснодарского края и Краснодара |