Имя: Пароль:
1C
1С v8
Самописная синхронизация типовым способом.
0 Wefast
 
10.03.21
14:25
Есть ЗУП и БП, в обеих базах есть новый справочник, который хотелось бы синхронизировать.

1. Создал план обмена с одним названием. Указал источник.
2. В общий модуль ОбменДаннымиПереопределяемый, в процедуру  ПолучитьПланыОбмена(ПланыОбменаПодсистемы) добавил строку ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.МойПО)
3. в общие команды ЗагрузитьПравилаКонвертацииОбъектов, ЗагрузитьПравилаРегистрацииОбъектов добавил мой план обмена
4. В модуль менеджера скопировал все что было в типовом модуле плана обмена ЗУПБП
5. Загрузил правила конвертации, которые писал для использования в типовой обработки загрузки\выгрузки по правилам

Настроил обмен. Само ничего не регистрируется при настройке. Ну и ладно пока.
В ручную зарегистрировал элементы.
Провел обмен. Файлики содержат мой объект.

В ЗУП пишет, что успешно проходит и загрузку, и выгрузка. Но данных новых не появляется.
В БП загрузка не проходит. Пишет "Ошибка преобразования данных XML:"

Собственно куда дальше копать? Почти все вышеперечисленное делал по гайду с интернета. Но какого то полного прикладного примера так и нашел.
1 Wefast
 
10.03.21
14:27
Отладкой пробежал, сходу не понятно где там объекты создаются или получаются.
Может правила должны быть особенно подготовлены. ХЗ
2 asady
 
10.03.21
15:09
(0) берешь типовую обработку "УниверсальныйОбменВФорматеXML"
(только сохрани внешнюю)
и натравливаешь на файл обмена - в отладчике должно показать
если в файле обмена объект лежит - то отлаживай "загрузку" из файла
3 Wefast
 
10.03.21
16:57
(2) правила рабочие, пока я ими в ручную и гружу все. А хочу как обычную синхронизацию сделать, настроить расписание и все.

В общем в ЗУП все падает на моменте чтения xml, когда идет проверка с кодом
ВозможностьЧтенияXML(ЧтенияXML) и он возвращает ложь.

Собственно файл:

  <?xml version="1.0" encoding="UTF-8" ?>
- <v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
- <v8msg:Header>
  <v8msg:ExchangePlan>КА_ОбменБП_ЗУП</v8msg:ExchangePlan>
  <v8msg:To>ЗК</v8msg:To>
  <v8msg:From>БП</v8msg:From>
  <v8msg:MessageNo>1</v8msg:MessageNo>
  <v8msg:ReceivedNo>0</v8msg:ReceivedNo>
  </v8msg:Header>
- <v8msg:Body>
- <CatalogObject.НоменклатурныеГруппы>
  <Ref>eb90b101-81a4-11eb-bc3b-1c1b0d6332b4</Ref>
  <IsFolder>false</IsFolder>
  <DeletionMark>false</DeletionMark>
  <Parent>00000000-0000-0000-0000-000000000000</Parent>
  <Code>БП-000008</Code>
  <Description>!!!!!!!!!!!!!!</Description>
  <СпособУчетаНДС />
  <СтавкаНДС>НДС10</СтавкаНДС>
  <Статус>Действует</Статус>
  <ДатаЗакрытия>0001-01-01T00:00:00</ДатаЗакрытия>
  <Контрагент>db1bda2b-727b-11eb-a4f2-b499babb10f2</КА_Контрагент>
  <Договор>e42f3c34-727b-11eb-a4f2-b499babb10f2</КА_Договор>
  <БазоваяЕдиницаИзмерения>8d1452ce-3349-11eb-813a-0050569f62a1</БазоваяЕдиницаИзмерения>
  <ЕдиницаХраненияОстатков>00000000-0000-0000-0000-000000000000</ЕдиницаХраненияОстатков>
  <ДополнительныеРеквизиты />
  </CatalogObject.НоменклатурныеГруппы>
  </v8msg:Body>
  </v8msg:Message>

Вот <CatalogObject.НоменклатурныеГруппы> тут ошибка. Должнобыть <CatalogObject.Т_НоменклатурныеГруппы> т.к. в зуп номенклатурных групп нет.
Залез в правила выгрузки из БП в ЗУП:
  <Источник>СправочникСсылка.НоменклатурныеГруппы</Источник>
  <Приемник>СправочникСсылка.Т_НоменклатурныеГруппы</Приемник>

Исправил в ручную. Проверку проходит и сразу падает с ошибкой на строке:

Данные = ПрочитатьXML(ЧтениеXML);



В ЗУП пишет:

Значения данного типа не могут быть представлены в XML
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(8064)}:        Данные = ПрочитатьXML(ЧтениеXML);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7916)}:                ВыполнитьСтандартнуюЗагрузкуПорцииДанных(ПараметрыЗагрузки, ПродолжитьЗагрузку);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7518)}:            ВыполнитьСтандартнуюЗагрузкуИзмененийДляУзла(
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7074)}:                ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена, , ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(381)}:    ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3974)}:            ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(38)}:        ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5113)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1036)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1026)}:        ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

по причине:
Значения данного типа не могут быть представлены в XML


В БП пишет:
Ошибка преобразования данных XML: [sfile://C:/Users/komandrovsky/AppData/Local/Temp/7/Exchange82 {CBE38BD9-EE4F-41E9-A19B-6E005B01AFC2}/Message_ЗК_БП.xml][21,4]
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7908)}:        Данные = ПрочитатьXML(ЧтениеXML);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7760)}:                ВыполнитьСтандартнуюЗагрузкуПорцииДанных(ПараметрыЗагрузки, ПродолжитьЗагрузку);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7362)}:            ВыполнитьСтандартнуюЗагрузкуИзмененийДляУзла(
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6918)}:                ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена, , ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(381)}:    ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3886)}:            ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(34)}:    ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4883)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1030)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1020)}:        ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

по причине:
Ошибка преобразования данных XML: [sfile://C:/Users/komandrovsky/AppData/Local/Temp/7/Exchange82 {CBE38BD9-EE4F-41E9-A19B-6E005B01AFC2}/Message_ЗК_БП.xml][21,4]


Думаю одно и тоже это. Но что не так не ясно
4 Dmitry1c
 
10.03.21
17:18
(0) более простым путем-то не захотелось пойти?
5 asady
 
10.03.21
18:01
(3) теперь выложи сюда выгрузку из ЗУП в БП этого справочника - хотя бы одного элемента -
файл сообщения такой-же покажи
6 hhhh
 
10.03.21
18:34
(0) пройлись отладчиком, особенно это место

ОбщийМодуль.ОбщегоНазначения.Модуль(4883)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1030)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);

какой конкретно метод вызывается, там 2 обработки и они немного отличаются, и плюс третья обработка - это новый обмен через xdto.