30.09.15 — 09:40
Вопрос: Почему не принимает данные, сформированные в настройке обмена (но при этом принимает если данные сформировать обработкой обмена)?
Создал правила выгрузки одного элементарного справочника из УТ 10.3.16.1 (обычное приложение, платформа 8.2.19.102) в Самописную (управляемое приложение, платформа 8.3.6.2152)
Настроил в УТ узлы и планы обмена, сделал настройку обмена данными и выгрузил. В файл данных вошло два элемента справочника.
Привожу содержание «ошибочного» XML:
<?xml version=»1.0″ encoding=»UTF-8″?>
<ФайлОбмена ВерсияФормата=»2.0″ ДатаВыгрузки=»2015-09-30T09:03:50″ ИмяКонфигурацииИсточника=»УправлениеТорговлей» ИмяКонфигурацииПриемника=»Конфигурация» ИдПравилКонвертации=»fc7e8361-6fbe-42bb-90d4-6ee69b6c1794″ Комментарий=»»>
<ПравилаОбмена>
<ВерсияФормата>2.01</ВерсияФормата>
<Ид>fc7e8361-6fbe-42bb-90d4-6ee69b6c1794</Ид>
<Наименование>СервисДляCRM —> CRM</Наименование>
<ДатаВремяСоздания>2015-09-28T12:18:38</ДатаВремяСоздания>
<Источник>УправлениеТорговлей</Источник>
<Приемник>Конфигурация</Приемник>
<Параметры/>
<Обработки/>
<ПравилаКонвертацииОбъектов>
<Правило>
<Код>Направления</Код>
<Источник>СправочникСсылка.Айсберг_Направления</Источник>
<Приемник>СправочникСсылка.Направления</Приемник>
</Правило>
</ПравилаКонвертацииОбъектов>
<ПравилаОчисткиДанных/>
<Алгоритмы/>
<Запросы/>
</ПравилаОбмена>
<ИнформацияОТипахДанных>
<ТипДанных Имя=»СправочникСсылка.Направления»>
<Код>Строка</Код>
<ПометкаУдаления>Булево</ПометкаУдаления>
<Наименование>Строка</Наименование>
<Родитель>СправочникСсылка.Направления</Родитель>
<ЭтоГруппа>Булево</ЭтоГруппа>
</ТипДанных>
</ИнформацияОТипахДанных>
<ДанныеПоОбмену ПланОбмена=»МоскваCRM» Кому=»CRM» ОтКого=»Москва» НомерИсходящегоСообщения=»5″ НомерВходящегоСообщения=»0″/>
<ДанныеПоФоновомуОбмену ПланОбмена=»» Кому=»0″ ОтКого=»0″ ДобавлениеОбъектовИзФоновогоОбмена=»0″ КоличествоОбъектовДляФоновогоОбмена=»500″ ПереданоОбъектовФоновогоОбмена=»0″/>
<Объект Нпп=»1″ Тип=»СправочникСсылка.Направления» ИмяПравила=»Направления»><Ссылка Нпп=»1″>
<Свойство Имя=»{КлючПоискаВИБИсточнике}»>
<Значение>{«#»,0bd0deec-1479-4cdf-ae4b-f10e71f3205a,111:9ed000248cc4a20411e26f88824de171}</Значение>
</Свойство>
<Свойство Имя=»{ИмяТипаВИБИсточнике}»>
<Значение>СправочникСсылка.Айсберг_Направления</Значение>
</Свойство>
<Свойство Имя=»{ИмяТипаВИБПриемнике}»>
<Значение>СправочникСсылка.Направления</Значение>
</Свойство>
<Свойство Имя=»Код»>
<Значение>000000013</Значение>
</Свойство>
</Ссылка>
<Свойство Имя=»Наименование»>
<Значение>СВЧ</Значение>
</Свойство>
<Свойство Имя=»ПометкаУдаления»>
<Значение>false</Значение>
</Свойство>
<Свойство Имя=»Родитель»/>
<Свойство Имя=»ЭтоГруппа»>
<Значение>false</Значение>
</Свойство>
</Объект>
<Объект Нпп=»2″ Тип=»СправочникСсылка.Направления» ИмяПравила=»Направления»><Ссылка Нпп=»2″>
<Свойство Имя=»{КлючПоискаВИБИсточнике}»>
<Значение>{«#»,0bd0deec-1479-4cdf-ae4b-f10e71f3205a,111:9ed000248cc4a20411e26f88824de173}</Значение>
</Свойство>
<Свойство Имя=»{ИмяТипаВИБИсточнике}»>
<Значение>СправочникСсылка.Айсберг_Направления</Значение>
</Свойство>
<Свойство Имя=»{ИмяТипаВИБПриемнике}»>
<Значение>СправочникСсылка.Направления</Значение>
</Свойство>
<Свойство Имя=»Код»>
<Значение>000000014</Значение>
</Свойство>
</Ссылка>
<Свойство Имя=»Наименование»>
<Значение>СМ</Значение>
</Свойство>
<Свойство Имя=»ПометкаУдаления»>
<Значение>false</Значение>
</Свойство>
<Свойство Имя=»Родитель»/>
<Свойство Имя=»ЭтоГруппа»>
<Значение>false</Значение>
</Свойство>
</Объект>
</ФайлОбмена>
Для загрузки использую обработку из поставки КД 2.1.8.2: V8Exchan83.epf в режиме работы На сервере.
Получаю ошибки:
Ошибка формата файла обмена
ИмяУзла = ДанныеПоОбмену
…
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5256)}: Ошибка при вызове метода контекста (Выполнить): {(1, 68)}: Синтаксическая ошибка «=»
ВЫБРАТЬ Ссылка ИЗ Справочник.Направления ГДЕ {ИмяТипаВИБИсточнике} <<?>>= &{ИмяТипаВИБИсточнике} И Код = &Код И {ИмяТипаВИБПриемнике} = &{ИмяТипаВИБПриемнике} И {КлючПоискаВИБИсточнике} = &{КлючПоискаВИБИсточнике}
…
Загружено объектов: 0
(см. фото) https://yadi.sk/i/LwzcPBr-jQxMw
НО! это при выгрузке из УТ через настройку обмена. Ошибка исчезает если выгружать данные обработкой из поставки КД: V8Exchan82.epf (82 не смотря на то что платформа 83, т.к. в режиме Обычного приложения).
Привожу содержание «правильного» XML:
<?xml version=»1.0″ encoding=»UTF-8″?>
<ФайлОбмена ВерсияФормата=»2.0″ ДатаВыгрузки=»2015-09-30T09:26:42″ НачалоПериодаВыгрузки=»0001-01-01T00:00:00″ ОкончаниеПериодаВыгрузки=»0001-01-01T00:00:00″ ИмяКонфигурацииИсточника=»УправлениеТорговлей» ИмяКонфигурацииПриемника=»Конфигурация» ИдПравилКонвертации=»fc7e8361-6fbe-42bb-90d4-6ee69b6c1794″ Комментарий=»»>
<ПравилаОбмена>
<ВерсияФормата>2.01</ВерсияФормата>
<Ид>fc7e8361-6fbe-42bb-90d4-6ee69b6c1794</Ид>
<Наименование>СервисДляCRM —> CRM</Наименование>
<ДатаВремяСоздания>2015-09-28T12:18:38</ДатаВремяСоздания>
<Источник>УправлениеТорговлей</Источник>
<Приемник>Конфигурация</Приемник>
<Параметры/>
<Обработки/>
<ПравилаКонвертацииОбъектов>
<Правило>
<Код>Направления</Код>
<Источник>СправочникСсылка.Айсберг_Направления</Источник>
<Приемник>СправочникСсылка.Направления</Приемник>
</Правило>
</ПравилаКонвертацииОбъектов>
<ПравилаОчисткиДанных/>
<Алгоритмы/>
<Запросы/>
</ПравилаОбмена>
<Объект Нпп=»1″ Тип=»СправочникСсылка.Направления» ИмяПравила=»Направления»><Ссылка Нпп=»1″>
<Свойство Имя=»Код» Тип=»Строка»>
<Значение>000000013</Значение>
</Свойство>
</Ссылка>
<Свойство Имя=»Наименование» Тип=»Строка»>
<Значение>СВЧ</Значение>
</Свойство>
<Свойство Имя=»ПометкаУдаления» Тип=»Булево»>
<Значение>false</Значение>
</Свойство><Свойство Имя=»Родитель» Тип=»СправочникСсылка.Направления»>
<Пусто/>
</Свойство>
<Свойство Имя=»ЭтоГруппа» Тип=»Булево»>
<Значение>false</Значение>
</Свойство>
</Объект>
<Объект Нпп=»2″ Тип=»СправочникСсылка.Направления» ИмяПравила=»Направления»><Ссылка Нпп=»2″>
<Свойство Имя=»Код» Тип=»Строка»>
<Значение>000000014</Значение>
</Свойство>
</Ссылка>
<Свойство Имя=»Наименование» Тип=»Строка»>
<Значение>СМ</Значение>
</Свойство>
<Свойство Имя=»ПометкаУдаления» Тип=»Булево»>
<Значение>false</Значение>
</Свойство><Свойство Имя=»Родитель» Тип=»СправочникСсылка.Направления»>
<Пусто/>
</Свойство>
<Свойство Имя=»ЭтоГруппа» Тип=»Булево»>
<Значение>false</Значение>
</Свойство>
</Объект>
</ФайлОбмена>
И еще в Управляемом приложении не позволяет сформировать модуль отладки загрузки. При нажатии на любую из указанных кнопок ничего не происходит (см. фото) https://yadi.sk/i/pk8RMDXxjQyCm
7 — 30.09.15 — 11:41
Правила от КД 2.1.8.2
Удалось избавиться от главной ошибки
«Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5255)}: Ошибка при вызове метода контекста (Выполнить): {(1, 68)}: Синтаксическая ошибка «=»
ВЫБРАТЬ Ссылка ИЗ Справочник.Направления ГДЕ {ИмяТипаВИБИсточнике} <<?>>= &{ИмяТипаВИБИсточнике} И Код = &Код И {ИмяТипаВИБПриемнике} = &{ИмяТипаВИБПриемнике} И {КлючПоискаВИБИсточнике} = &{КлючПоискаВИБИсточнике}»
Таким образом вставил кусок из обработки из УТ. Поместил в обработку Приемника (коммент //Юрасов):
Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта.НайтиЭлементЗапросом(…)
…
// не по всем параметрам можно искать
Если ИмяПараметра = «{УникальныйИдентификатор}»
ИЛИ ИмяПараметра = «{ИмяПредопределенногоЭлемента}»
//Юрасов++
ИЛИ ИмяПараметра = «{КлючПоискаВИБИсточнике}»
ИЛИ ИмяПараметра = «{КлючПоискаВИБПриемнике}»
ИЛИ ИмяПараметра = «{ИмяТипаВИБИсточнике}»
ИЛИ ИмяПараметра = «{ИмяТипаВИБПриемнике}» Тогда
//Юрасов—
Продолжить;
КонецЕсли;
Теперь загружает данные, хоть и остались ошибки:
Ошибка формата файла обмена
ИмяУзла = ДанныеПоОбмену
…
Ошибка формата файла обмена
ИмяУзла = ДанныеПоФоновомуОбмену
8 — 30.09.15 — 13:09
Эти две ошибки тоже убрал. Пришлось перенести еще один кусок в приемник:
Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта.ПроизвестиЧтениеДанных(…)
…
ИначеЕсли (ИмяУзла = «ФайлОбмена») И (ФайлОбмена.ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
//Юрасов++
ИначеЕсли ИмяУзла = «ДанныеПоОбмену» Тогда
// обработка удаления объекта из информационной базы
ИмяПланаОбмена = одАтрибут(ФайлОбмена, одТипСтрока, «ПланОбмена»);
КодКому = одАтрибут(ФайлОбмена, одТипСтрока, «Кому»);
КодОтКого = одАтрибут(ФайлОбмена, одТипСтрока, «ОтКого»);
УзелОбменаЗагрузкаДанных = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду(КодОтКого);
Если Не ЗначениеЗаполнено(УзелОбменаЗагрузкаДанных) Тогда
ВызватьИсключение «Не найден узел обмена для загрузки данных. План обмена: » + ИмяПланаОбмена + «, Код: » + КодОтКого;
КонецЕсли;
мНомерВходящегоСообщения = одАтрибут(ФайлОбмена, одТипЧисло, «НомерИсходящегоСообщения»);
НомерПринятогоСообщения = одАтрибут(ФайлОбмена, одТипЧисло, «НомерВходящегоСообщения»);
Если УзелОбменаЗагрузкаДанных.НомерПринятого >= мНомерВходящегоСообщения Тогда
ВызватьИсключение «Номер сообщения меньше либо равен ранее принятому»;
КонецЕсли;
//Юрасов++
//ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбменаЗагрузкаДанных, НомерПринятогоСообщения);
//мЗапросНаличияСтрокВРегистреСоответствия.УстановитьПараметр(«Узел», УзелОбменаЗагрузкаДанных);
//мЗапросНаличияПустыхДляИсточникаВРегистреСоответствия.УстановитьПараметр(«Узел», УзелОбменаЗагрузкаДанных);
//Юрасов—
Попытка
мПрефиксДокументовПриЗагрузке = СокрЛП(УзелОбменаЗагрузкаДанных.ПрефиксДляЗагружаемыхДокументов);
мДлинаПрефиксаДокументовПриЗагрузке = СтрДлина(мПрефиксДокументовПриЗагрузке);
Исключение
мПрефиксДокументовПриЗагрузке = «»;
мДлинаПрефиксаДокументовПриЗагрузке = 0;
КонецПопытки;
Попытка
мДатаДокументовДляУстановкиПрефикса = УзелОбменаЗагрузкаДанных.ДатаНачалаВыгрузкиДокументов;
Исключение
мДатаДокументовДляУстановкиПрефикса = Неопределено;
КонецПопытки;
Попытка
мИспользоватьИнформациюОМестеСозданияОбъектовПриЗагрузке = УзелОбменаЗагрузкаДанных.ИспользоватьИнформациюОМестеСозданияОбъектовПриВыгрузкеИЗагрузкеДанных;
Исключение
мИспользоватьИнформациюОМестеСозданияОбъектовПриЗагрузке = Неопределено;
КонецПопытки;
одПропустить(ФайлОбмена, «ДанныеПоОбмену»);
ИначеЕсли ИмяУзла = «ДанныеПоФоновомуОбмену» Тогда
// обработка удаления объекта из информационной базы
ИмяПланаОбмена = одАтрибут(ФайлОбмена, одТипСтрока, «ПланОбмена»);
КодКому = одАтрибут(ФайлОбмена, одТипСтрока, «Кому»);
КодОтКого = одАтрибут(ФайлОбмена, одТипСтрока, «ОтКого»);
Если Не ПустаяСтрока(ИмяПланаОбмена) Тогда
Попытка
УзелОбменаЗагрузкаФоновыхДанных = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду(КодОтКого);
Исключение
УзелОбменаЗагрузкаФоновыхДанных = Неопределено;
КонецПопытки;
Иначе
УзелОбменаЗагрузкаФоновыхДанных = Неопределено;
КонецЕсли;
ДобавлениеОбъектовИзФоновогоОбменаЗагрузка = одАтрибут(ФайлОбмена, одТипЧисло, «ДобавлениеОбъектовИзФоновогоОбмена»);
КоличествоОбъектовДляФоновогоОбменаЗагрузка = одАтрибут(ФайлОбмена, одТипЧисло, «КоличествоОбъектовДляФоновогоОбмена»);
ПолученоОбъектовФоновогоОбмена = одАтрибут(ФайлОбмена, одТипЧисло, «ПереданоОбъектовФоновогоОбмена»);
одПропустить(ФайлОбмена, «ДанныеПоФоновомуОбмену»);
// Если Не ПустаяСтрока(Конвертация.ПослеПолученияИнформацииОбУзлахОбмена) Тогда
//
// Попытка
//
// Если ФлагРежимОтладкиОбработчиков Тогда
//
// Выполнить(ПолучитьСтрокуВызоваОбработчика(Конвертация, «ПослеПолученияИнформацииОбУзлахОбмена»));
//
// Иначе
//
// Выполнить(Конвертация.ПослеПолученияИнформацииОбУзлахОбмена);
//
// КонецЕсли;
//
// Исключение
// СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(176, ОписаниеОшибки(), «ПослеПолученияИнформацииОбУзлахОбмена (конвертация)»);
//
// Если Не ФлагРежимОтладки Тогда
// ВызватьИсключение СтрокаСообщенияОбОшибке;
// КонецЕсли;
//
// //Возврат Ложь;
// Возврат;
// КонецПопытки;
//
// КонецЕсли;
//Юрасов—
Иначе
СтруктураЗаписи = Новый Структура(«ИмяУзла», ИмяУзла);
ЗаписатьВПротоколВыполнения(9, СтруктураЗаписи);
КонецЕсли;
Обратился клиент с просьбой оказать помощь в 1С. Проблема: перестал работать обмен ут10.2 — бп 3.0. Ошибка указана выше. Обмен не работает, данные накапливаются, надо что-то делать.
Посмотрел конфигурацию БП3.0, действительно в ней нет данных «Перечисление.СтатусОплатыСчетаПокупателю.НеОплачен».
Т.е. главная задача убрать из правил это предопределенное свойство.
С корректировкой правил обмена дел особо не имел. Поэтому потратил некоторое время на выгрузку правил из БП3.0.
Обработка из конвертации данных «Выгрузка правил синхронизации.epf» в этой конфигурации не работает.
Как я и думал «добрые» разработчики 1с спрятали выгрузку правил обмена в файл вот тут:
В итоге сохранил их в файл zip.
В zip архиве у нас 3 файла
Причем при попытке загрузить их обратно в конфигурацию через кнопку «Загрузить правила» получил тут же ошибку «Неправильно указаны реквизиты шапки объекта «Валюты». Реквизит «ПараметрыПрописиНаРусском» не существует.«
Придется еще и эту ошибку исправлять. С конвертацией данных я еще довольно поверхностно знаком, но причину этой ошибки узнал. В конфигурации БП нет такого реквизита. Видимо эти правила были загружены когда этот реквизит еще был, а потом при обновлении конфигурации его разработчики убрали.
Решил редактировать файлы блокнотом.
Итак исправляем ошибку «Неправильно указаны реквизиты шапки объекта «Валюты». Реквизит «ПараметрыПрописиНаРусском» не существует.«
Открываем блокнотом файл ExchangeRules.xml и ищем «ПараметрыПрописиНаРусском».
Видим, что правило очень хочет чтобы приемником тоже был «ПараметрыПрописиНаРусском», которого у нас нет. Поэтому этот фрагмент мы удаляем.
Пакуем наши 3 файла в zip и пытаемся загрузить — все грузится без ошибок.
При загрузке правил еще возникала ошибка «Конфликт блокировок при выполнении транзакции«.
Решил так. Выгнал всех, запустил конфигуратор. Из конфигуратора 1с-предприятие и сразу грузить правила. Ошибка не появлялась.
Теперь исправим ошибку «Предопределенное значение «Перечисление.СтатусОплатыСчетаПокупателю.НеОплачен» не найдено«.
В конвертации данных нашел что вот в этом месте возникает ошибка
Но править решил через любимый блокнот.
Вот это место, я его просто закомментировал.
Вначале пытался просто сделать Перечисление.СтатусОплатыСчета, но БП начало при обмене падать с ошибкой что нет метода установитьСтатусДокумента.
Сохранил изменения, загрузил эти 3 файла в архив zip
и загрузил в БП
После этого обмен заработал без ошибок.
Исправленные правила также необходимо загрузить в УТ10.3
p.s. Понял, что необходимо срочно начать изучение КД.
bless18 |
|
||
---|---|---|---|
Добрый день! В 1С КД редакции 2.1 (2.1.5.1) создала правила конвертации между двумя идентичным БП редакция 2.0 (2.0.38.6). При загрузке обработкой КД V8Exchan82.epf выдается сообщение: «Ошибка формата файла обмена» |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
(0) bless18, ошибка где-то в правилах, надо снять новые снимки метаданных и загрузить их в КД, далее посмотреть правила и попробовать выгрузку |
Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку |
Вопрос: Почему не принимает данные, сформированные в настройке обмена (но при этом принимает если данные сформировать обработкой обмена)? Создал правила выгрузки одного элементарного справочника из УТ 10.3.16.1 (обычное приложение, платформа 8.2.19.102) в Самописную (управляемое приложение, платформа 8.3.6.2152) Настроил в УТ узлы и планы обмена, сделал настройку обмена данными и выгрузил. В файл данных вошло два элемента справочника. </ФайлОбмена> Для загрузки использую обработку из поставки КД 2.1.8.2: V8Exchan83.epf в режиме работы На сервере. Получаю ошибки: Ошибка формата файла обмена ИмяУзла = ДанныеПоОбмену … Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5256)}: Ошибка при вызове метода контекста (Выполнить): {(1, 68)}: Синтаксическая ошибка «=» ВЫБРАТЬ Ссылка ИЗ Справочник.Направления ГДЕ {ИмяТипаВИБИсточнике} <<?>>= &{ИмяТипаВИБИсточнике} И Код = &Код И {ИмяТипаВИБПриемнике} = &{ИмяТипаВИБПриемнике} И {КлючПоискаВИБИсточнике} = &{КлючПоискаВИБИсточнике} … Загружено объектов: 0 (см. фото) НО! это при выгрузке из УТ через настройку обмена. Ошибка исчезает если выгружать данные обработкой из поставки КД: V8Exchan82.epf (82 не смотря на то что платформа 83, т.к. в режиме Обычного приложения). Привожу содержание «правильного» XML: И еще в Управляемом приложении не позволяет сформировать модуль отладки загрузки. При нажатии на любую из указанных кнопок ничего не происходит (см. фото)
Удалил секции: <ИнформацияОТипахДанных> <ДанныеПоОбмену.. <ДанныеПоФоновомуОбмену.. Теперь пишет: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5255)}: Ошибка при вызове метода контекста (Выполнить): {(1, 68)}: Синтаксическая ошибка «=» ВЫБРАТЬ Ссылка ИЗ Справочник.Направления ГДЕ {ИмяТипаВИБИсточнике} <<?>>= &{ИмяТипаВИБИсточнике} И Код = &Код И {ИмяТипаВИБПриемнике} = &{ИмяТипаВИБПриемнике} И {КлючПоискаВИБИсточнике} = &{КлючПоискаВИБИсточнике}
выгрузку и загрузку желательно надо проводить обработками одной версии. Или лезть в отладчик.
Боюсь что затянуть из последней УТ свежую версию Настройки обмена, будет непросто, т.к. этот механизм там не сконцентрирован в одном месте а «размазан» по всей конфигурации (
Так. А вот еще принципиальное отличние:
В этой записи нет никакой ошибки.
Правила от КД 2.1.8.2 Удалось избавиться от главной ошибки «Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5255)}: Ошибка при вызове метода контекста (Выполнить): {(1, 68)}: Синтаксическая ошибка «=» ВЫБРАТЬ Ссылка ИЗ Справочник.Направления ГДЕ {ИмяТипаВИБИсточнике} <<?>>= &{ИмяТипаВИБИсточнике} И Код = &Код И {ИмяТипаВИБПриемнике} = &{ИмяТипаВИБПриемнике} И {КлючПоискаВИБИсточнике} = &{КлючПоискаВИБИсточнике}» Таким образом вставил кусок из обработки из УТ. Поместил в обработку Приемника (коммент //Юрасов): Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта.НайтиЭлементЗапросом(…) … Теперь загружает данные, хоть и остались ошибки: Ошибка формата файла обмена ИмяУзла = ДанныеПоОбмену … Ошибка формата файла обмена ИмяУзла = ДанныеПоФоновомуОбмену
Эти две ошибки тоже убрал. Пришлось перенести еще один кусок в приемник: Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта.ПроизвестиЧтениеДанных(…) … ВызватьИсключение «Не найден узел обмена для загрузки данных. План обмена: » + ИмяПланаОбмена + «, Код: » + КодОтКого; ВызватьИсключение «Номер сообщения меньше либо равен ранее принятому»;
В итоге решение примерно такое. захожу отладчиком при загрудке и смотрю на что ругается. вижу что в коде нет варианта для обработки такого поля или параметра. Иду в конфигурацию откуда выгружал, смотрю как этот код работает там. вижу такую же функцию но с дополнительным кодом. вижу что этого то кода и нехватает что бы обработать данный параметр. копировать/встаить. проверка синтаксиса. ругается. смотрю если что то для меня не важное убираю. если важное разбираюсь почему ругается и что еще нужно копипастнуть. проверяю правила. и так вылизываю пока не пропадут все ошибки при загрузке
у тебя просто древние релизы конфигураций, в них встроенная обработка универсального обмена старой версии.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
При переносе данных с одной конфигурации в другую или загрузки каких-либо бухгалтерских данных в 1С пользователь может столкнуться с сообщением «Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДанными XML}». Обычно после данного сообщения об ошибке следует какое-либо уточнение, конкретизирующее тип ошибки, например «Тип не определен (ПланСчетовСсылка.Налоговый)». Появление данной ошибки обычно сигнализирует о несовпадении типов объектов в двух конфигурациях 1С (базовой и конечной), требуя корректировки правил обмена. Ниже разберём суть возникшей дисфункции и способы её решения.
Содержание
- Суть и причины дисфункции
- Измените правила обмена
- Изучите текст сообщения об ошибке
- Перенесите остатки на текущий месяц
- Обратитесь в техническую поддержку
- Обратитесь к платным специалистам
- Заключение
Суть и причины дисфункции
Рассматриваемая проблема имеет массовый характер, и встречается у множества пользователей. Обычно её появление вызвано:
- Разницей конфигураций и версий 1С, из-за чего переменные в обеих конфигурациях отличаются (по типам объектов, реквизитам и др.). Например, вместо «УдалитьСтавкаНДС» в новой конфигурации стоит «СтавкаНДС», вместо «УчётнаяПолитикаОрганизаций» необходима «УчетнаяПолитика» и другое. В некоторых случаях запрашиваемый новой конфигурацией реквизит может и вовсе отсутствовать как таковой;
- Имеющейся ошибкой в правилах конвертации (обмена);
- Некорректным переносом остатков (имеется попытка переноса остатков не на текущий месяц);
- Некорректно работает программный помощник выгрузки (например, ПомощникВыгрузки_V8);
- Некорректно установленным обновлением 1С.
Давайте разберёмся, как исправить ошибку при загрузке данных: {Обработка.УниверсальныйОбмен ДаннымиXML} на вашем ПК.
Это полезно знать: как исправить неверный формат хранилища данных в 1С.
Измените правила обмена
Для квалифицированных специалистов первым (и наиболее очевидным) решением является изменение правил обмена по возникшей проблеме. Правила изменяются путём работы с форматом обмена данными xml, в котором изменяются те или иные параметры согласно конкретике возникшей проблемы. После корректировки правил обмена перенос данных из одной конфигурации в другую осуществляется без каких-либо проблем.
Также можно поискать правила обмена именно для вашей конфигурации на специализированных форумах 1С.
Изучите текст сообщения об ошибке
Обычно текст возникшей ошибки кроме процитированного нами шаблона содержит конкретику ошибки, например «Поле объекта не обнаружено (СтавкаНДС)». Таким образом, можно понять, что в новой конфигурации отсутствует реквизит «СтавкаНДС». Если вы не можете самостоятельно изменить настройки правил обмена, то в таком (и подобных ему) случаях необходимо открыть ваш конфигуратор, в справочниках отыскать справочник «Номенклатура», скопировать там реквизит «УдалитьСтавкаНДС», и назвать новый реквизит «СтавкаНДС».
Перенесите остатки на текущий месяц
Рассматриваемая дисфункция часто появляется при переносе остатков не на текущий месяц. Соответственно, для избежания ошибки при загрузке данных XML, необходимо переносить остатки на текущий месяц, и никак иначе.
Обратитесь в техническую поддержку
Поскольку появление ошибки при загрузке данных XML вызвано разницей в базовой и конечной конфигурации, то наиболее простым способом исправить ошибку {Обработка.УниверсальныйОбменДаннымиXML} является обращение в службу технической поддержки https://1c.ru/rus/support/support.htm. Если вы имеете дело с лицензионной версией продукта, тогда вам помогут. Вполне вероятно, что вам предоставят специализированные правила переноса (файлы с расширением .epf и .xml) для решения возникшей дисфункции.
Обратитесь к платным специалистам
Решение ошибки может состоять в обращении к специалистам по 1С, которые за определённую плату решат возникшую у вас проблему. Таких специалистов можно найти на различных форумах 1С, списаться с ними лично, и решить возникший вопрос.
Читайте также: «Обнаружено нарушение целостности системы» в 1C — как решить.
Заключение
В нашем материале мы разобрали, почему возникает ошибка при загрузке данных {Обработка.УниверсальныйОбменДаннымиXML} и как можно её исправить. Обычно появление проблемы вызвано ошибкой в правилах конфигурации и несоответствием реквизитов, из-за чего перенос данных не может быть осуществлён корректно. Решение проблемы состоит в изменении правил переноса и созданием конгруэнтных реквизитов, после чего рассматриваемая ошибка обычно исчезает.
Опубликовано 28 марта 2019 Обновлено 05 октября 2020
Посмотрел код.
В коде проверяется чтобы в zip-архиве был либо один либо два файла.
Это странно, ведь раньше в zip-файле всегда было три файла:
-правила обмена
-правила обмена корреспондента
-правила регистрации
Там такой код:
Если ЭтоПравилаКонвертации Тогда
СписокРаспакованныхФайлов.Количество() = 2 Тогда
Если СписокРаспакованныхФайлов[0].Имя = «ExchangeRules.xml»
И СписокРаспакованныхФайлов[1].Имя =»CorrespondentExchangeRules.xml» Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[0].ПолноеИмя);
ДвоичныеДанныеКорреспондента = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[1].ПолноеИмя);
ИначеЕсли СписокРаспакованныхФайлов[1].Имя = «ExchangeRules.xml»
И СписокРаспакованныхФайлов[0].Имя =»CorrespondentExchangeRules.xml» Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[1].ПолноеИмя);
ДвоичныеДанныеКорреспондента = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[0].ПолноеИмя);
Иначе
НСтрока = НСтр(«ru = ‘Имена файлов в архиве не соответствуют ожидаемым. Ожидаются файлы:
|ExchangeRules.xml — правила конвертации для текущей программы;
|CorrespondentExchangeRules.xml — правила конвертации для программы-корреспондента.’»);
ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
КонецЕсли;
// Старый формат
ИначеЕсли СписокРаспакованныхФайлов.Количество() = 1 Тогда
НСтрока = НСтр(«ru = ‘В архиве найден один файл правил конвертации. Ожидаемое количество файлов в архиве — два. Ожидаются файлы:
|ExchangeRules.xml — правила конвертации для текущей программы;
|CorrespondentExchangeRules.xml — правила конвертации для программы-корреспондента.’»);
ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
// В архиве оказалось несколько файлов, хотя должен быть один — отказываемся от загрузки.
ИначеЕсли СписокРаспакованныхФайлов.Количество() > 1 Тогда
НСтрока = НСтр(«ru = ‘При распаковке архива найдено несколько файлов. Должен быть только один файл с правилами.’»);
ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
КонецЕсли;
Иначе
// Закладываем полученный файл правил обратно в двоичные данные.
Если СписокРаспакованныхФайлов.Количество() = 1 Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[0].ПолноеИмя);
// В архиве оказалось несколько файлов, хотя должен быть один — отказываемся от загрузки.
ИначеЕсли СписокРаспакованныхФайлов.Количество() > 1 Тогда
НСтрока = НСтр(«ru = ‘При распаковке архива найдено несколько файлов. Должен быть только один файл с правилами.’»);
ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
КонецЕсли;
КонецЕсли;
В этой статье речь пойдет о настройках универсального
формата обмена и ошибках, которые возникают на начальном этапе настройки (этап
№1). В конвертации данных 3.0 есть инструкция по настройке правил конвертации
на примере. Однако не все пункты понятны и не везде дано подробное описание.
Плюс ко всему в стандартных обработках и в самой программе возникают ошибки, о
которых я и хочу рассказать в этой статье, а также предлагаю скачать
доработанные мной обработки и расширение, чтобы без ошибок и потери
драгоценного времени можно было настроить правила.
Обратимся к исходному примеру, который представлен в
конвертации данных в начале работы.
С первым шагом (шаг 1) – все понятно. Нужно для каждой
конфигурации, между которыми планируем настраивать обмен, выгрузить структуры
информационных баз. С помощью обработки MD83Exp.epf,
входящей в комплект поставки. На этом этапе останавливаться не будем, так как
он подробно описан в программе. Однако в стандартной обработке MD83Exp.epf скрыты
настройки обработки, в связи с этим не выгружаются регистры сведений. Я
исправила этот момент, и Вы можете приобрести исправленную обработку. Ссылки в конце страницы.
Следующим действием (шаг 2) предлагается сделать экспорт
xml-схемы формата обмена, из любой базы. В этом примере, который
рассматривается в конфигурации Конвертация данных xml-схемы одинаковые у обеих баз, так
что достаточно сделать экспорт из любой базы. Но в примере не говорится, что
если все-таки конфигурации разнятся, то нужно выбрать похожие XDTO-пакеты в базах и экспортировать их. Версия определяется по цифрам, указанным у XDTO-пакета.
Например: EnterpriseData_1_3_20 — версия формата 1.3.
Обратите внимание, что версию формата обмена нужно выбирать
наиболее оптимальную. Например: в одной конфигурации версия формата последняя
1.6, а в другой конфигурации – 1.5. Следовательно, оптимальный формат будет
1.5.
Сам экспорт xml-схемы формата обмена в программе описан. На
картинке ниже я показываю, как это можно сделать.
Далее в примере предлагается сделать загрузки в конвертацию
данных (шаг 3 и шаг 4).
Сначала загружаем структуру информационных баз (по очереди)
раздел «Конфигурации» — «Загрузка
структуры конфигурации» флаг «В новую версию конфигурации».
Затем нужно загрузить
xml-схему формата обмена. Формат
данных – «Загрузка структуры формата», выбираем ранее выгруженные файлы
с расширением «xsd». Выбираем
только один файл. Раньше делали Множественный выбор с ExchangeMessage, но это было в старых версиях
конфигурации. После загрузки обязательно проверьте структуру формата в разделе Формат
данных – Дерево объектов формата – далее выбрать версию формата. Если структура
заполнена – там есть документы, справочники, то все в порядке, можно продолжать
настройки, иначе выгрузите новую версию и повторите всю процедуру сначала.
Далее в примере
(этап 2) предлагается создание конвертации с нуля, однако если у баз уже есть
типовые правила обмена, которые достаточно доработать, то можно загрузить эти
правила в конфигурацию и работать с ними.
Прежде чем выгружать правила конвертации нужно открыть общий
модуль МенеджерОбменаЧерезУниверсальныйФормат.
Если это Бухгалтерия Предприятия 3.0, то открываем МенеджерОбменаЧерезУниверсальныйФормат13. В открытом модуле
переходим в меню Файл – Сохранить
копию – сохраняем файл с любым именем (например — Модуль).
Затем приступаем к
выгрузке типовых правил из конфигураций. Для выгрузки есть стандартная
обработка, которая называется Выгрузка
правил синхронизации.epf, однако при
работе с ней возникает ошибка и правила не выгрузить, также не работает в
последних версиях Бухгалтерии Предприятия. Для таких случаев я исправила эту
обработку. Вы можете приобрести исправленную обработку. Ссылки в конце страницы.
С помощью обработки
выгружаем правила, где каждую версию формата помещаем в новый каталог. Выгрузку
нужно проделать из обеих конфигураций.
Далее нужно
загрузить все версии правил для обеих конфигураций, между которыми настраиваем
обмен в Конвертацию данных.
Сначала создаем
новую конвертацию, Конвертации – Создать. Заполняем поля новой конвертации. Выбираем конфигурацию. Наименование
конвертации можно указать свое, реквизит Имя менять нельзя. Сохраняем
изменения.
Переходим в раздел
Конвертация – Загрузка правил синхронизации из файлов, далее заполняем поля. Место
загрузки нужно указать «В существующую конвертацию» и указать какую именно.
Файл с модулем обмена – нужно указать тот файл, копию которого сохраняли (в
этом примере он называется Модуль). Далее по очереди загружаем каждую
выгруженную версию правил, не закрывая настройки, просто выбираете новый
каталог обмена.
Сложностей в загрузке нет никаких. Все интуитивно понятно,
только в момент загрузки тоже возникает ошибка «Поле объекта не
обнаружено». Здесь тоже придется
либо вносить исправления в конфигурацию Конвертация данных, либо можно
воспользоваться уже моим готовым решением. Я сделала расширение для Конвертации
данных 3.0, подключив которое Вы решаете эту проблему. Приобрести расширение и две исправленные обработки, о которых я рассказывала вначале статьи, вы можете приобрести по ссылке ниже.
При загрузке
появится сообщение «Обработчики предназначены для другой конвертации…
Продолжить загрузку?» Нажимаем «Да».
После загрузки правил
можно приступать к их редактированию.
Процесс доработки и
выгрузки исправленных правил я в этой статье описывать не буду, так как моя
задача в этой статье предложить решения по исправлению ошибок на первом этапе
настроек. Но если кому-то нужна такая информация, Вы хотите более подробное
описание действий, наглядную инструкцию – пишите мне, я сделаю обучающее видео
на эту тему.
Находятся критики, которые заявляют, что можно самостоятельно исправить код, если специалист работает с конвертацией. Я не спорю – может. Я же выкладываю обработки для тех, кому жалко времени копаться в коде и переписывать, или человек еще только начинает разбираться в этой теме, а тут еще возникает куча проблем со стандартными обработками. Тем более что цена ниже стоимости проезда на транспорте в крупных городах.
На этой странице были выложены все доработанные отчеты и расширение бесплатно, однако я обнаружила, что скачиваний было очень много, и распространились продажи моих переделанный обработок. В связи с этим, я тоже сделала исправленные обработки платными, но все-таки цену оставила низкую, которую не жалко потратить, но и мне будет какая-то отдача для развития сайта.
Доработки проводились на конвертации данных 3.0(3.0.5.3)
Обработки предоставляются пакетом. То есть сразу две исправленные обработки и расширение, так как для работы нужны все перечисленные исправления. Стоимость пакета составляет 350 руб.
Оформить покупку
***
Обратите внимание! Обработки в архивах. Если у Вас проблема с архивом и появляется ошибка «файл поврежден» — обновите архиватор. Можете архиватор скачать по ссылке (в папке 4 файла — 2 файла с установкой плюс ключи).
Без паники. Если не получается обновить архиватор, напишите мне с почтового ящика, который указали при покупке или позвоните, как у меня будет доступ к компьютеру, я сразу же вышлю Вам файлы все, которые находятся в архиве. Не беспокойтесь.
***
Доброго дня, коллеги!
Наши слушатели часто сталкиваются с разного рода ошибками при настройке обмена между современными типовыми конфигурациями с помощью “1С:Конвертации данных 3.0” и технологии обмена через универсальный формат. Большинство ошибок связано с тем, что разработчики 1С активно меняют методы общих модулей БСП и способы их вызова, а решение КД 3.0 остается без изменений и новых поставок не выходит. В случае необходимости на помощь всегда приходит тренер!
Вопрос
При выполнении домашнего задания наткнулся на особенности в конфигурации УТ 11.4.10.57. Обработка выгрузки правил синхронизации из типового решения не работает по дефолту, приходится ее немного править. К примеру, теперь в модуле менеджера плана обмена через универсальный формат нет функции ПолучитьВерсииФорматаОбмена.
Такая ситуация сейчас и в других версиях типовых решений? Конфигурации меняют, а в КД 3.0 уже ничего не дорабатывают под эти изменения?
Ответ
Есть в КД 3.0 ошибка, которая создает проблему на последних версиях типовых решений. Для КД 3.0.5.1 (и не только для этого релиза) нужно выполнить следующее:
- В форме обработки ВыгрузкаПравилСинхронизации заменить код процедуры ПриСозданииНаСервере() на следующий:
ВерсииФормата = Новый Соответствие; ОбменДаннымиПереопределяемый.ПриПолученииДоступныхВерсийФормата(ВерсииФормата); Для Каждого ПланОбмена Из ОбменДаннымиПовтИсп.ПланыОбменаБСП() Цикл Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(ПланОбмена) Тогда ВерсииФорматаПланаОбмена = Новый Соответствие; ВерсияБСП243 = ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СтандартныеПодсистемыСервер.ВерсияБиблиотеки(), “2.4.3.1”) >= 0; МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль(“ОбменДаннымиСервер”); Если ВерсияБСП243 Тогда ВерсииФорматаПланаОбмена = МодульОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ПланОбмена, “ВерсииФорматаОбмена”); Иначе ПланыОбмена[ПланОбмена].ПолучитьВерсииФорматаОбмена(ВерсииФорматаПланаОбмена); КонецЕсли; Для Каждого ВерсияПланаОбмена Из ВерсииФорматаПланаОбмена Цикл МодульМенеджера = ВерсииФормата.Получить(ВерсияПланаОбмена.Ключ); Если МодульМенеджера = Неопределено Или МодульМенеджера <> ВерсияПланаОбмена.Значение Тогда ВерсииФормата.Вставить(ВерсияПланаОбмена.Ключ, ВерсияПланаОбмена.Значение); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Для Каждого ВерсияФормата ИЗ ВерсииФормата Цикл Элементы.НомерВерсииФормата.СписокВыбора.Добавить(ВерсияФормата.Ключ); КонецЦикла; АдресХранилищаВерсииФормата = ПоместитьВоВременноеХранилище(ВерсииФормата, УникальныйИдентификатор);
- В форме обработки “ЗагрузкаПравилСинхронизацииИзФайлов” в процедуре ЗагрузкаПКО() заменить строку
ТекПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов[СтруктураАтрибутов.ВариантИдентификации];
на строку
ТекПКО.ВариантИдентификации = ?(СтруктураАтрибутов.ВариантИдентификации = “”, Перечисления.ВариантыИдентификацииОбъектов.ПустаяСсылка(), Перечисления.ВариантыИдентификацииОбъектов[СтруктураАтрибутов.ВариантИдентификации]);
- Кроме того при использовании конвертации может возникнуть ошибка из-за синхронного вызова вопроса “Обработчики предназначены для другой конвертации: Продолжить загрузку?” – для целей курса достаточно закомментировать несколько строк в процедуре ПроверитьКонвертациюПриЗагрузкеАлгоритмов(…) общего модуля КонвертацияДанныхXDTOКлиент внутри условия “Если ИмяКонвертации <> НаименованиеКонвертации Тогда ….. КонецЕсли;”, оставив не закомментированной только строку Возврат Ложь;
Комментарий слушателя
Все получилось, совет помог, спасибо! Единственное, в конвертации 3.0.5.3 процедура теперь называется ЗагрузитьПКО(), а не ЗагрузкаПКО().