Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Ошибка преобразования данных XDTO , Ошибка при вызове метода контекста (ПрочитатьXML)          
sanytch Подменю пользователя
сообщение 18.04.19, 16:15
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток. Столкнулся с проблемой, которая пока-что за гранью моей области знаний, а именно XML.
История вкратце такова: Есть 3 информационных базы с идентичными конфигурациями (Бухгалтерия для Украины, редакция 2.0. (2.0.16.1)). на платформе 8.3.11.3034
В 2-х из них ведется учет по "Организации_1" и "Организации_2" соответственно, а в третьей по "Организации_3". В неё нужно выгружать данные из этих двух, но подменять "Организацию_1" и "Организацию_2" на "Организацию_3". Зачем - не спрашивайте, такова задумка начальства в сговоре с бухгалтерами и мне она не понятна, да и понимать не хочу.
Показалось что задача выполнима: нашел обычную внешнюю обработку обмена данными через XML и допилил её в разделе "Загрузка" проверкой получаемых данных:
    Пока Сериализатор.ВозможностьЧтенияXML(ЧтениеXML) Цикл
        
        Попытка
            
            ЗаписанноеЗначение = Сериализатор.ПрочитатьXML(ЧтениеXML);

            #Область Обработка_входящих_данных
            
            // Нашли Справочник Организации и поместим в него вместо прочитанной нашу организацию по умолчанию
            Если ТипЗнч(ЗаписанноеЗначение) = Тип("СправочникОбъект.Организации")  Тогда
                ЗаписанноеЗначение = Справочники.Организации.НайтиПоКоду("00-000001").ПолучитьОбъект();
            КонецЕсли;
            // Справочник ПодразделенияОрганизаций иерархически подчинен справочнику Организации, поэтому у него замещаем значение реквизита Владелец
            Если ТипЗнч(ЗаписанноеЗначение) = Тип("СправочникОбъект.ПодразделенияОрганизаций") Тогда
                ЗаписанноеЗначение.Владелец = Справочники.Организации.НайтиПоКоду("00-000001")
            КонецЕсли;
            // Если Объект имеет реквизит Организация то заменим этот реквизит на организацию по умолчанию    
            Если ЗаписанноеЗначение.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
                ЗаписанноеЗначение.Организация = Справочники.Организации.НайтиПоКоду("00-000001")
            КонецЕсли;
            // У справочника Сотрудники принадлежность сотрудника к организации в реквизите ГоловнаяОрганизация
            Если ЗаписанноеЗначение.Метаданные().Реквизиты.Найти("ГоловнаяОрганизация") <> Неопределено Тогда
                ЗаписанноеЗначение.ГоловнаяОрганизация = Справочники.Организации.НайтиПоКоду("00-000001")
            КонецЕсли;
            ...

Топорно, но работало...
А теперь суть проблемы: Выгрузил данные с обоих баз. Затянул. Все нормально было. Но с недавних пор возникла ошибка при выгрузке одной из баз. Одна по прежнему без проблем выгружается и загружается, а одна выгружается но при загрузке выдает ошибку. Используется как для выгрузки, так и для загрузки одна и та же обработка. Из обоих баз выгружаются один и тот же перечень документов, конфигурации повторю идентичны... А ошибка такая

По кнопке "Подробнее" вот такой текст:

Цитата
{ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXML.МодульОбъекта(212)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ЗаписанноеЗначение = Сериализатор.ПрочитатьXML(ЧтениеXML);
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}DocumentObject.ПоступлениеНаРасчетныйСчет Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}DocumentObject.ПоступлениеНаРасчетныйСчет
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: РасшифровкаПлатежа Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}DocumentTabularSectionRow.ПоступлениеНаРасчетныйСчет.РасшифровкаПлатежа


Ругается только на документ "ПоступлениеНаРасчетныйСчет" и, насколько я понимаю на его ТабЧасть "РасшифровкаПлатежа". Нашел в обоих XML-файлах эту часть и сравнил чуть ли не по-символьно - никаких различий в структуре, в данных понятно, они разные, но ругается ведь на какую то ошибку при приобразовании... Подскажите в чем может быть причина?

Сообщение отредактировал Vofka - 18.04.19, 16:23

Batchir Подменю пользователя
сообщение 19.04.19, 7:56
Сообщение #2

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Для начала нужно понять что происходило с базами до начала возникновения проблемы.
Может было аварийное завершение сервера с рабочей базой, обновление релизов, обновление платформы и прочее.
1. Если было что, то попробуйте сначала почистить кеш.
Довольно часто кеш решает проблемы типа "Ничего не делалось с базами, но по какой-то причине одна стала работать не так".

2. Выполнить на копии "тестирование и исправление" у проблемной базы. Может там что поломалось.

3. Возможно ошибка таки в структуре данных (отсутствуют какие-то реквизиты или поля разных типов), база приемник получает нечто что не может преобразовать для корректной загрузки.
Вы утверждаете что базы идентичны. Я лично работаю по принципу "все врут". Пока сам не удостоверюсь в этом - считать что это именно так не буду.
Поэтому если 100% уверены в идентичности баз, то хорошо. Если Вы просто так думаете, потому что Вам кто-то сказал, то проверьте эту идентичность ещё раз.

4. Ну и отладчик никто не отменял. Встаньте на ошибке и посмотрите на чем валится.

Сообщение отредактировал Batchir - 19.04.19, 8:04

Vladal Подменю пользователя
сообщение 19.04.19, 8:11
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Подумал, что надо менять организации штатными средствами с помощью регистра соответствий объектов обмена.

Petre Подменю пользователя
сообщение 19.04.19, 8:13
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Batchir @ Today, 7:56 * ,
5. Обновить платформу.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: bandrah,

sanytch Подменю пользователя
сообщение 19.04.19, 12:06
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Batchir @ Сегодня, 8:56 * ,
Спасибо за советы. Попробую все.
С базами действительно были изменения, а именно:
1. Все 3 обновились с 2.0.15.1. на 2.0.16.1
2. У одной базы-источника в документе ПоступлениеТоваровУслуг (он участвует в обмене) добавлен реквизит, остальные (база-источник и база-приёмник) на поддержке.

upd: Кэш вычистил (использовал никогда не подводившую утилитку 1Tools._v1.0.4.41) - не помогло, снятую с поддержки базу поставил на поддержку (т.е теперю все 3 конфы АБСОЛЮТНО ИДЕНТИЧНЫ, даже сравнил .cf-ку приёмника с обеими источниками), выгрузил заново и снова та же ситуёвина, только теперь ругается на ТабЧасть Товары документа РеализацияТоваровУслуг

Отладчик сыпется на последней строке этого кода:
Пока Сериализатор.ВозможностьЧтенияXML(ЧтениеXML) Цикл
        
        Попытка
            
            ЗаписанноеЗначение = Сериализатор.ПрочитатьXML(ЧтениеXML);

за шаг до ошибки ЧтениеXML.Имя = "DocumentObject.РеализацияТоваровУслуг" а ЗаписанноеЗначение = РегистрНакопленияНаборЗаписей.ПриобретенияНалоговыйУчет. Попытка исключения не вызывает и цикл проходит полностью (там стоит счетчик Загружено - он увеличивается на 1, т.е. полагаю что объект считается загруженым) и снова выходит к Пока...
Далее проходит Пока и в Попытке присвоить новое ЗаписанноеЗначение уже значение меняется на ЧтениеXML = "Товары" и я сразу попадаю в Исключение ну и далее ошибка...
Сравнил ЧтениеXML на обоих шагах:


и


Не могу понять как так получается, а главное почему.

Vladal @ Сегодня, 9:11 * ,
Спасибо за ответ. Имеете в виду регистр сведений "Соответствие объектов информационных баз"? Пытался в нем ковыряться, но пришел к выводу что сначала нужно включить и настроить синхронизацию данных, а это также не изученная мною область. Если у Вас есть познания, поделитесь мыслями как решить мою задачу этим путем, возможно он проще придуманого мною и правильнее. Спасибо.

Petre @ Сегодня, 9:13 * ,
Спасибо за ответ. Тоже об этом подумывал, но пока не обновлял, ибо текущая платформа стабильно работает уже давно и трогать не хочу, да и факт что одна организация загружается без проблем а вторая нет вряд ли может зависеть от платформы, хотя если ничего не поможет то попробую и этот вариант.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 12:05
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!