Ошибка при вызове метода контекста проверить объектxdto проверить

Ошибка отправки данных при синхронизации

Я
   agidov

17.03.19 — 12:21

День добрый, при синхронизации с БП 3.0, после обновления  УТ до версии 11.4.7.114, при отправке данных появляется ошибка

«Направление: Отправка.

ПОД: Документ_ЗаказПоставщику_Отправка.

ПКО: Документ_ЗаказПоставщику_Отправка.

Объект: Документ объект: Заказ поставщику, Заказ поставщику AB0T-4842 от 15.03.2019 16:42:22 (e1cib/data/Документ.ЗаказПоставщику?ref=baaa1c1b0dee81c911e94727e1ca5a93).

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(3981)}: Ошибка при вызове метода контекста (Проверить)

        ОбъектXDTO.Проверить();

по причине:

Ошибка проверки данных XDTO:

Структура объекта ‘/Товары/Строка[1]/ДанныеНоменклатуры/Упаковка’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.6}КлючевыеСвойстваУпаковка

Проверка свойства ‘Наименование’:

    форма: Элемент

    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.6}Наименование

    тип: {http://www.w3.org/2001/XMLSchema}string

Не установлено значение одного из следующих свойств: ЕдиницаИзмерения»

До обновы все работало хорошо, не могу понять в чем проблема, я не программист, но что то поправить могу, поэтому надеюсь знающие люди подскажут!

   jsmith82

1 — 17.03.19 — 12:24

Видимо, реквизит ссылается на битую ссылку или null

Открыть объект в режиме предприятия и перевыбрать реквизит

   jsmith82

2 — 17.03.19 — 12:26

Поставь точку останова на ошибке, выцепи проблемный объект и далее (1)

   agidov

3 — 17.03.19 — 12:51

(1) Самое интересное, что упаковки я не использую в номенклатурах

   hhhh

4 — 17.03.19 — 13:18

(3) вы не поняли: Единица измерения не заполнена. Поэтому про упаковки тут неинтересно.

   Михаил Козлов

5 — 17.03.19 — 14:04

(4)+ Запросом из справочника УпаковкиЕдиницыИзмерения получите и проверьте, что все заполнено.

   agidov

6 — 17.03.19 — 16:19

(4) Единица измерения, где не заполнена?

смотрю конкретный заказ, там две позиции, в этих номенклатурах, стоит единица хранения шт, там нет единицы измерения. В номенклатуре все заполнено, в таб части в заказе, тоже стоят шт. все заполнено.

   hhhh

7 — 17.03.19 — 16:37

(6) ну, открываешь Все Функции: справочник УпаковкиЕдиницыИзмерения и начинаешь его методично просматривать, можешь десятками, можешь сотнями строчек. Находишь места, где не заполнено Наименование, методично заполняешь.

   jsmith82

8 — 17.03.19 — 16:37

смотри в отладчике при создании на сервере у формы проблемного объекта по выражению Объект.Ссылка на предмет битой ссылки или null

   ИльдарТ

9 — 17.03.19 — 19:27

Интересно то, что такая ошибка появилась не только у автора, но и у некоторых других (например, и у меня). До обновления синхронизация проходила без ошибок.

   hhhh

10 — 17.03.19 — 19:38

(9) ужесточили проверку на заполнение реквизитов, значит.

   ИльдарТ

11 — 17.03.19 — 19:41

Но как определить про какой реквизит идет речь ? ТиИ проведен, справочник «Упаковки и единицы измерения» заполнен полностью (все реквизиты).

   Garykom

12 — 17.03.19 — 19:57

Единицы проверь у всей Номенклатуры (базовая или как оно там) в Заказ поставщику AB0T-4842 от 15.03.2019 16:42:22

   jsmith82

13 — 17.03.19 — 20:02

чо, никто в отладчик ещё не залез?

   jsmith82

14 — 17.03.19 — 20:04

в 1с какую-то ошибку обмена зарегистрировали, но непонятно, этот ли случай

   ИльдарТ

15 — 17.03.19 — 20:06

(13) А куда поставить точку останова ?

   jsmith82

16 — 17.03.19 — 20:18

Открываешь конфигуратор

Откладка — подключение — автоматическое подключение — фоновые задания

Отладка — остановка по ошибке — останавливаться по ошибке

F5

Запускаешь обмен

В конфигураторе происходит остановка на ошибках. Если ошибка не та, жмёшь далее F5. В итоге попадёшь куда, надо

Там смотришь, что за объект вызывает ошибку

Может, сразу поймёшь, в чём косяк

Затем, ставишь точку останова в событии При создании на сервере у формы элемента / документа косячного объекта

Вычисляешь выражение Объект.Ссылка, раскрываешь все реквизиты (и реквизиты реквизитов, если надо) и смотришь, где косяк. В режиме предприятия не всё видно.

Не забыть потом снять флажки (фоновые задания и останавливаться по ошибке)

   ИльдарТ

17 — 17.03.19 — 22:08

(16) Хотел показать картинку, но не знаю как.

Действительно, значение Неопределено по пути: ОбъектXDTO.Товары.Строка[1].ДанныеНоменклатуры.Упаковка.ЕдиницаИзмерения

Но во всех остальных местах все заполнено.

   jsmith82

18 — 17.03.19 — 22:11

(17) ну вот вычисли эту упаковку и перевыбери там единицу измерения (ставишь курсор в поле, нажимаешь энтер — поставится пустое значение, а не неопределено)

   jsmith82

19 — 17.03.19 — 22:12

должно быть СправочникСсылка.УпаковкиЕдиницыИзмерения.ПустаяСсылка (если не заполнено)

   ИльдарТ

20 — 17.03.19 — 22:25

(19) Но если я открываю это справочник, то там все заполнено. Может быть какие-то скрытые поля ?

   jsmith82

21 — 17.03.19 — 22:52

(20) Поставь точку останова при создании на сервере формы элемента и вычисли выражение Объект.Ссылка

   ИльдарТ

22 — 17.03.19 — 23:31

(21) Я так и делаю, но проблем не вижу. Как бы мне показать что я получаю при этом ?

Здесь картинку можно вывести ?

   jsmith82

23 — 17.03.19 — 23:40

   ИльдарТ

24 — 17.03.19 — 23:50

(21) Похоже, что есть какая-то кривость в базе.

Отменил регистрацию всех объектов. Скопировал один из документов, на которых вываливалась ошибка. И запустил синхронизацию. Синхронизация прошла успешно.

Что можно сделать с базой, кроме ТиИ ?

   jsmith82

25 — 17.03.19 — 23:54

ничего

   hhhh

26 — 18.03.19 — 00:20

(24) ошибка не в документе, а в справочнке. Ты справочник ЕдиницыИзмерения зарегистрируй, вот тогда попрут ошибки.

   ИльдарТ

27 — 18.03.19 — 00:32

(26) Зарегистрировал весь справочник «Упаковки и единицы измерения» (для документов регистрацию снял). Синхронизация прошла без проблем. А синхронизация документов не проходит.

   Garykom

28 — 18.03.19 — 00:40

Номенклатура же. Или документ был неправильно в ТЧ заполнен, там есть скрытые колонки

   Garykom

29 — 18.03.19 — 00:40

Я уже столько разных прикольных глюков обнаружил при типовой синхронизации УТ11-БП3.

   ИльдарТ

30 — 18.03.19 — 19:56

(29) Оказалось, что нужно не заполнять реквизит табличной части документа «Упаковка»,

а очистить :()

            ДокументОбъект = Выборка.ПолучитьОбъект();

            Товары=ДокументОбъект.Товары;

            Для Каждого Товар Из Товары Цикл

                Товар.Упаковка=»»;

            КонецЦикла;

                ДокументОбъект.Записать();

   agidov

31 — 18.03.19 — 23:54

(30) А откуда это нужно удалить?

   es3000

32 — 27.03.19 — 11:53

Похоже мы тоже столкнулись с такой же ошибкой.

Интересно, что в одних документах — все нормально.

А в каком-то одном конкретном документе — ошибка.

   Garykom

33 — 27.03.19 — 12:07

(32) Ну так перезаполнить этот документ правильно

  

es3000

34 — 27.03.19 — 12:10

(33) Перезаполняли менеджеры, что-то не получается.

Похоже, что проблема в том, что товар поступил в килограммах, и единица измерения у него указана килограммы.

А в документе он продается в тоннах.

И вот где-то на этапе перевода килограммов в тонны не указан коэффициент.

Вхожу в справочник «Упаковки и единицы измерения» — справочник пустой!

Ни фильтров ни отборов не установлено.

В чем может быть дело?

  

И Р

20.12.18 — 18:11

После обновления БП начала твроить дичь, разбивать реализации товаров и услуг на 2 документа и т.д. решил пересоздать синхронизацию через универсальный обмен данными. В результате на данный момент УТ 11.2 при попытки синхронизироваться через файл пишет следующую ошибку:

Событие: Отправка.

ПОД: Документ_СчетФактураВыданныйАванс_Отправка.

ПКО: Документ_СчФактураВыд_Аванс.

Объект: Документ объект: Счет-фактура выданный (аванс), Счет-фактура выданный (аванс) 00ЦУ-000028 от 16.03.2018 23:59:59.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}: Ошибка при вызове метода контекста (Проверить)

            ОбъектXDTO.Проверить();

по причине:

Ошибка проверки данных XDTO:

Структура объекта ‘/Договор’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}КлючевыеСвойстваДоговор

Проверка свойства ‘РасчетыВУсловныхЕдиницах’:

    форма: Элемент

    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}РасчетыВУсловныхЕдиницах

    тип: {http://www.w3.org/2001/XMLSchema}boolean

Не установлено значение одного из следующих свойств: ВидДоговора

Честно говоря совершенно непонятно что ещё за ВидДоговора.

  

Garykom

1 — 20.12.18 — 18:12

(0) ЫЫЫЫ

Только недавно с такой фигней 8 часов провозился причем до глубокой ночи

  

Garykom

2 — 20.12.18 — 18:13

(0) Все просто и очень банально.

Для начала открываешь предприятие, находишь там документу

Счет-фактура выданный (аванс) 00ЦУ-000028 от 16.03.2018 23:59:59

Далее открываешь карточку контрагента и внимательно! изучаешь закладки Договора и Соглашения.

На предмет отличия от других контрагентов ))

  

Garykom

3 — 20.12.18 — 18:21

И да хочу огорчить, если подобных ошибок (в разных документах) будет много — их только по одной увидишь, каждый раз заново запуская обмен.

Самый облом если настроить обмен не через файлы а сразу в базу по com то оно вместо показа ошибки обычно тупо вываливается в рабочий стол.

  

MaxS

4 — 20.12.18 — 18:30

Обработка «Выгрузка загрузка EnterpriseData» есть в этой конфигурации?

Ей удобно выгружать для тестов.

И формат 1.2 как бы устарел. Скоро может появится ещё одна проблема если БП 3.0. от него откажется.

  

Garykom

5 — 20.12.18 — 18:40

(4) Через правила (в т.ч. самописные) для КД2 будут синхронизировать старую УТ11.2 с новыми БП3

  

И Р

6 — 20.12.18 — 20:05

Благо пока ещё 2 меня есть 1.3 в запасе ))

  

MaxS

7 — 20.12.18 — 20:13

(5) Через КД2 будут… до следующего обновления БП 3.0.

В КД3 доработать до формата 1.5 пмсм затрат меньше. И будет работать ещё несколько лет.

  

И Р

8 — 20.12.18 — 20:17

(2) Подскажите пожалуйста а в чём именно у вас были отличия, т.к. прямо скажем у меня куча таких ошибок почти по всем счёт-фактурам ))

  

Garykom

9 — 20.12.18 — 20:23

(6) Ошибку из (0) то нашел и исправил?

  

И Р

10 — 20.12.18 — 20:26

Нет.. никак не могу найти :-(

  

MaxS

11 — 20.12.18 — 20:27

(8) посмотрел УТ 11.3, реквизит формата ВидДоговора заполняется на основе реквизита справочника ТипДоговора — это перечисление.

  

Garykom

12 — 20.12.18 — 20:40

(10) Блин берешь этот документ, отменяешь проведение, изменяешь контрагента на совсем другого с прочими реквизитами и проводишь.

Затем пытаешься выгрузить и смотришь результат.

Если прошло то ошибка у контрагента/договора/соглашения.

  

И Р

13 — 20.12.18 — 20:41

(11) Судя по тому что я вижу  поле «Тип взаимоотношений»  в договоре вообще тип строки имеет.

https://hostingkartinok.com/show-image.php?id=807e3704fec89cd4271eb7a095fcd103

  

Garykom

14 — 20.12.18 — 20:41

(12)+ Возможно счет-фактура цепляет при выгрузке данные из документа реализации и ошибка там.

У меня в реализациях тоже были ошибки подобные.

  

Garykom

15 — 20.12.18 — 20:42

(13) Я надеюсь ты в УТ11.2 это смотришь? Соглашения не используете и покажи вкладки расчеты и учетная информация.

У меня была УТ11.4 там вкладка «Прочее» где ошибки были.

  

И Р

16 — 20.12.18 — 21:00

(14) Получается что счётфактуры с ошибками от 16-28, все от одного конрагента, притом от контрагента куча других документов счёт-фактур имеется. Искать ошибку в реализации?

  

И Р

17 — 20.12.18 — 21:39

Также выше есть ошибки

«Событие: Отправка.

ПОД: Документ_СписаниеБезналичныхДенежныхСредств.

ПКО: Документ_СБДСРасчетыСКонтрагентами_Отправка.

Объект: Документ объект: Списание безналичных денежных средств, Списание безналичных ДС 00ЦУ-000151 от 26.06.2018 0:00:00.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}: Ошибка при вызове метода контекста (Проверить)

            ОбъектXDTO.Проверить();

по причине:

Ошибка проверки данных XDTO:

Структура объекта ‘/РасшифровкаПлатежа/Строка[1]/ДанныеВзаиморасчетов/Договор’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}КлючевыеСвойстваДоговор

Проверка свойства ‘РасчетыВУсловныхЕдиницах’:

    форма: Элемент

    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}РасчетыВУсловныхЕдиницах

    тип: {http://www.w3.org/2001/XMLSchema}boolean

Не установлено значение одного из следующих свойств: ВидДоговора»

Ещё

«Событие: Отправка.

ПОД: Договоры из структуры.

ПКО: Справочник_ДоговорыКонтрагентов_ИзСтруктуры.

Объект: Структура, Структура.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}: Ошибка при вызове метода контекста (Проверить)

            ОбъектXDTO.Проверить();

по причине:

Ошибка проверки данных XDTO:

Структура объекта ‘/КлючевыеСвойства’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}КлючевыеСвойстваДоговор

Проверка свойства ‘ВалютаВзаиморасчетов’:

    форма: Элемент

    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}ВалютаВзаиморасчетов

    тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}КлючевыеСвойстваВалюта

Не установлено значение одного из следующих свойств: Контрагент»

И

»

Событие: Отправка.

ПОД: Документ_ПоступлениеТоваровУслуг.

ПКО: Документ_ПоступлениеТоваровУслуг_Отправка.

Объект: Документ объект: Поступление товаров и услуг, Поступление товаров и услуг 00ЦУ-000110 от 11.07.2018 11:27:01.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4662)}:

Событие: Отправка.

Обработчик: ПриОтправкеДанных.

Объект: Документ объект: Поступление товаров и услуг, Поступление товаров и услуг 00ЦУ-000110 от 11.07.2018 11:27:01.

Ошибка выполнения обработчика.

{ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(43894)}: Преобразование значения к типу Булево не может быть выполнено

            Если НДСПоСтавкам2и4 Тогда.

        ВызватьИсключение ТекстОшибки;

»

И наконец

»

Событие: Отправка.

ПОД: Документ_ПБДС_Отправка.

ПКО: Документ_ПБДСРасчетыСКонтрагентами_Отправка.

Объект: Документ объект: Поступление безналичных денежных средств, Поступление безналичных ДС 00ЦУ-000026 от 08.05.2018 0:00:00.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}: Ошибка при вызове метода контекста (Проверить)

            ОбъектXDTO.Проверить();

по причине:

Ошибка проверки данных XDTO:

Структура объекта ‘/РасшифровкаПлатежа/Строка[1]/ДанныеВзаиморасчетов/Договор’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}КлючевыеСвойстваДоговор

Проверка свойства ‘РасчетыВУсловныхЕдиницах’:

    форма: Элемент

    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.2}РасчетыВУсловныхЕдиницах

    тип: {http://www.w3.org/2001/XMLSchema}boolean

Не установлено значение одного из следующих свойств: ВидДоговора

«

  

Garykom

18 — 20.12.18 — 21:49

(17) У «Списание безналичных ДС» с «расшифровка платежа» проблемы были, если списком то перезаполни (перепроведи) и обрати внимание на колонки/поля (которые оно показывает если списком, можно прокрутить вправо)

Суть в том что поисправляли договоры/соглашения а документы старые не перепровели правильно.

  

Garykom

19 — 20.12.18 — 21:54

(18)+ Не списком в расшифровках я просто перевыбирал документ «объект расчетов» и проводил.

Естественно после того как исправил ошибки в лишних/кривых «соглашениях с поставщиком», там были дубли недозаполненные.

И неправильно стояло «Требуется указание договора, порядок расчетов определяется в договоре» вместо правильного «Договоры не используются, порядок расчета по накладным»

Короче суть что кривые данные и задним числом что то поисправляли.

  

hhhh

20 — 20.12.18 — 22:30

(17) открой ут 11.4 и посмотри, какие новые реквизиты появились по сравнению с ут 11.2. В справочнике Контрагенты, договоры и может еще где-то. Эти новые реквизиты аккуратно скопипасть к себе в 11.2 и групповой обработкой заполни чем нибудь по умолчанию. Например НДСПоСтавкам2и4 везде проставь Ложь.

  

И Р

21 — 20.12.18 — 23:55

Короче выяснилось, что все проблемные документы датированы плюс минус годом назад, а синхронизировать нужно за крайние 2 недели и далее, сменил дату начала выгрузки и пошло без ошибок. Но как исправлять эти ошибки понял благодаря вам, за что большое спасибо! Однако возникла другая трудность. Данные из УТ выгружаются без проблем и принимаются в бухгалтерию, однако выгрузка наоборот из бухгалтерии происходит и документ есть, но не загружается, пишет вот что:

{ОбщийМодуль.ДлительныеОперации.Модуль(376)}: Ошибка проверки данных XDTO:

Структура объекта не соответствует типу: {http://www.1c.ru/SSL/Exchange/Message}Header

        ВызватьИсключение(ТекстОшибки);

  

Garykom

22 — 21.12.18 — 00:01

(21) Не надо доки из БП3 тащить назад в УТ11, они туда криво встают и портятся.

Лучше только односторонний обмен.

  

И Р

23 — 21.12.18 — 00:14

А как же красивые всякие поступления ДС ? )

  

И Р

24 — 21.12.18 — 00:20

С другой стороны вроде бы ничего такого туда не дописывали, может попробовать обновиться до 11.4

  

Garykom

25 — 21.12.18 — 00:22

(23) Кто мешает загружать из клиент-банка в УТ11 ?

  

hhhh

26 — 21.12.18 — 01:40

(23) там столько разной ненужной хрени лезет в ут, что волосы дыбом встают. Поэтому ваши мысли про красоту — это какая-то издевка.

При входе в базу 1с вы можете увидеть “Ошибка преобразования данных XDTO:

Начало Свойства: errorProcessingSettings

Форма: Элемент

Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorProcessingSettings по причине

Чаще всего ошибка возникает при определенном типе запуска: это либо через тонкий клиент, либо через линк42, случаи бывают разные. Через браузер такие базы запускаются без ошибок.

Есть простое решение данной проблемы.

Достаточно запустить базу доступным нам способом (где нет ошибки) включить Функции тех. специалиста (Меню — Настройки — Параметры — Режим технического специалиста)

В Функциях для технического специалиста ищем Управление настройками обработки ошибок (Стандартные)

Запускаем

Готово!

Уже более 10 000 компаний работают
в облачной 1С от 42Clouds

— Консультация по 1С Бесплатно!

— Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте

— Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web

Добрый день, при настройке синхронизации через универсальный формат xml, при окончании отправки данных всё «валится» в ошибку. Информация в журнале регистрации на одном примере: Событие: Отправка.
ПОД: Документ_ЗаказКлиента_Отправка.
ПКО: Документ_ЗаказКлиента_Отправка.
Объект: Документ объект: Заказ клиента, Заказ клиента 00ИП-004235 от 12.10.2018 12:36:17.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}: Ошибка при вызове метода контекста (Проверить)
ОбъектXDTO.Проверить();

Ошибка проверки данных XDTO:
Структура объекта ‘/Контрагент’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.3}КлючевыеСвойстваКонтрагент
Проверка свойства ‘СтранаРегистрации’:
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.3}СтранаРегистрации
тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.3}КлючевыеСвойстваСтранаМира
Не установлено значение одного из следующих свойств: ЮридическоеФизическоеЛицо

Вопрос: что за страна регистрации, как исправить ошибку?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Одним из самых популярных форматов данных, используемых практически в любой компании, является XML (расширяемый язык разметки). Разработчики 1С создали специальный объект XDTO для удобства своих клиентов и простого взаимодействия с файлами XML, поэтому программисту 1С важно работать с этими объектами платформы, так как обмен данными через XML встречается постоянно.

Этот функционал создавался как удобный инструмент обмена данными между конфигурациями и другими приложениями. Также этот механизм используют для работы с web-сервисами и для обработки произвольных данных. Большое преимущество XDTO перед другими способами – в нем есть возможность обращаться к файлу XML, как к объекту 1С. То есть все реквизиты можно будет получить, описывая структуру через точку, не задумываясь о скобках, тегах и атрибутах.

Взаимодействие с файлами XML происходит по заранее установленным правилам, описанным в объекте структуры конфигурации – XDTO – пакеты в 1С 8.3. Суть этих элементов структуры в том, что они представляют собой схемы, по которым будут распознаваться данные из XML-файлов. В типовых конфигурациях уже присутствуют подобные объекты, но при работе с конкретными файлами понадобятся другие схемы.

Существует два способа добавить XDTO-пакет в конфигурацию:

  • Собственноручно создать. Этот вариант подойдет при самостоятельной работе с XML определенного формата. Зная, какие данные будут подаваться на вход для импорта с использованием XDTO, можно заранее создать в конфигурации нужный объект. Этот вариант хорош, если обмен данными налажен и никаких изменений не планируется;

    Рис.1 XDTO пакеты

    Рис.1 XDTO пакеты
  • Импорт присланной схемы. Когда нам присылают данные, их схема может оказаться какой угодно, особенно, если раньше мы не работали с источником. Сильно упростит ситуацию, если вместе с XML нам пришлют и файл формата xsd. В нем содержится выгрузка XDTO-пакета, который может разобрать конкретные XML. Нам останется лишь импортировать его.

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

Но на самом деле в последнем случае нам необязательно создавать XDTO-пакеты в конфигурации 1С 8.3. Существует возможность только использовать XSD-схему, присланную нам из отдельного файла, не внося изменения в структуру базы 1С. Для этого нужно воспользоваться кодом, объясняющим платформе 1С, какой тип объекта с какими параметрами будет загружаться.

Это происходит следующими командами:


ФайлXSD = Новый Массив();
ФайлXSD.Добавить("D:1strust.xsd");
ФабрикаXDTOИзФайла = СоздатьФабрикуXDTO(ФайлXSD);
Номенклатура = ФабрикаXDTOИзФайла.Тип("http://www.1c.ru/products", "Номенклатура");

Экспорт и импорт файла

После того как мы разобрались с принципами использования пакетов XDTO, нужно посмотреть на механику работы с файлами XML. Лучше всего это будет видно на простом примере, чтобы понять основы. Добавим новый элемент в раздел XDTO-пакетов и настроим его следующим образом:

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Рис.2 Параметры пакета

Рис.2 Параметры пакета

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

  1. Определение схемы будущей XML;
    
    ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
    

  2. Заполнение свойств номенклатуры;
    
    Номенклатура = ФабрикаXDTO.Создать(ТипФабрики);
    Номенклатура.Наименование = "Тест XML";
    Номенклатура.Артикул = "2";
    

  3. Создание нового XML файла.
    
    ИмяФайла = "D:1struct1.xml";
    МойXML = Новый ЗаписьXML;
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
    МойXML.ЗаписатьОбъявлениеXML();
    ФабрикаXDTO.ЗаписатьXML(МойXML, номенклатура);
    МойXML.Закрыть();
    

Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.


ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
 
ИмяФайла = "D:1struct1.xml";
МойXML = Новый ЧтениеXML;
МойXML.ОткрытьФайл(ИмяФайла);
номенклатура = ФабрикаXDTO.ПрочитатьXML(МойXML, ТипФабрики);
МойXML.Закрыть();

Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.

Рис.3 Экспорт XDTO-пакета

Рис.3 Экспорт XDTO-пакета

Лучше все-таки не рассчитывать на понятливость платформы 1С, а использовать точную схему XML. Многие специалисты используют сторонний софт для их создания, но для этого необходим достаточно большой опыт и уровень подготовки. Работа с пакетами XDTO требует внимания и соблюдения точного соответствия файлов заданной схеме, чтобы минимизировать возможные ошибки.

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

  • Ошибки в обновлении платформы или конфигурации;
  • Обмен между базами разных версий;
  • Недочеты в алгоритме приема данных;
  • Проблемы с временной памятью конкретного компьютера.

Чтобы исправить эту ошибку, сначала почистите кэш или удалите, а также заново добавьте информационную базу в список баз. Затем внимательно проверьте файл XML – вдруг случайно сделали ошибку в его тексте, проверьте соответствие структуры пакету XDTO. Если ошибка появилась после обновления, сделайте тестирование и исправление ИБ, сохранив перед этим резервную копию базы. Если проблема не уйдет, вернитесь на предыдущую версию и подождите, пока разработчики 1С не разберутся с этой проблемой.

Рис.4 Ошибка преобразования данных

Рис.4 Ошибка преобразования данных

Еще одна проблема, часто мучающая программистов 1С, работающих с XDTO, – ошибка проверки данных. Если при импорте вы видите подобный текст, то с высокой долей вероятности источник проблемы в несоответствии файла нужной схеме. Но проблема может быть не на вашей стороне, а в базе, из которой выгружали XML. Чтобы исправить эту оплошность, придется внимательно изучить всю последовательность действий и найти, после чего файл перестал соответствовать ожиданиям.

Рис.5 Ошибка проверки данных

Рис.5 Ошибка проверки данных

Более сложная для анализа проблема, если при обмене информацией 1С выдает ошибку о несоответствии типов XDTO. В этом случае придется проверять все данные, находить ошибки и их причины. В некоторых случаях ошибки могут быть в коде, иногда – в данных информационной базы. Чтобы это понять, необходимо иметь доступ к базам причастным к обмену и четко понимать всю суть происходящего экспорта и импорта.

Рис.6 Несоответствие типов XDTO

Рис.6 Несоответствие типов XDTO

На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.

Просмотров 12к. Опубликовано 24 октября, 2018 Обновлено 24 октября, 2018

Ошибка преобразования данных XDTO: Текст XML содержит недопустимый символ.

На самом деле ошибка преобразования XDTO является не какой-то определенной ошибкой, а является большим семейством ошибок возникающих при работе одного из базовых механизмов платформы 1С. Этот механизм обеспечивает передачу данных между различными подсистемами платформы, при этом данные из внутреннего представления одной подсистемы преобразуются в текстовый формат XML, передаются в другую подсистему, и там  опять преобразуются во внутреннее представление. Ошибка преобразования XDTO говорит, что прямом или обратном преобразовании обнаружено какое-то несоответствие, из-за которого оно не может быть выполнено.

Частные причины ошибки

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

Прежде чем приступить к диагностике причины ошибки XDTO, следует выполнить стандартные профилактические операции над ИБ: очистить кэш, проверить состояния файла, выполнить тестирование ИБ.

Взаимодействие Клиента и Сервера

При запуске 1С в режиме Тонкий клиент взаимодействие клиента с ИБ происходит с использование преобразования XDTO, и если оно приводит к ошибке, то в тех случаях, когда это возможно, следует воспользоваться режим Толстый клиент.

Сырые и Неоригинальные решения

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

В этом случае необходимо отказаться от использования неоригинального или сырого решения и вернуться к предыдущему состоянию кода из архива.

Создаю обмен типовыми средствами в УТ 11.3.3.145. Обмен в одну сторону с БП 3.0 через универсальный формат. При первоначальной выгрузке данныш Ошибка: Синхронизация не выполнена. Смотрите журнал регистрации. В журнале регистрации видим ошибку: ПОД: Документ_ПоступлениеТоваровУслуг. ПКО: Документ_ПоступлениеТоваровУслуг_Отправка. Объект: Документ объект: Поступление товаров и услуг, Поступление товаров и услуг 0000-000024 от 21.02.2016 12:00:01. {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль}: Ошибка при вызове метода контекста (Проверить)             ОбъектXDTO.Проверить; по причине: Ошибка проверки данных XDTO: Структура объекта ‘/ДанныеВзаиморасчетов/Договор’ не соответствует типу: {}КлючевыеСвойстваДоговор Проверка свойства ‘ВалютаВзаиморасчетов’:     форма: Элемент     имя: {}ВалютаВзаиморасчетов     тип: {}КлючевыеСвойстваВалюта Не установлено значение одного из следующих свойств: Контрагент Как ее поправить — может кто подскажет?

надо просто читать, что пишут. А пишут, что ВалютаВзаиморасчетов пустая

Сталкиваюсь с такой же ошибкой, только другого вида: ПОД: Справочник_БанковскиеСчета_Отправка. ПКО: Справочник_БанковскиеСчета_Отправка. Объект: Справочник объект: Банковские счета, <>. {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль}: Ошибка при вызове метода контекста (Проверить)             ОбъектXDTO.Проверить; по причине: Ошибка проверки данных XDTO: Структура объекта ‘/КлючевыеСвойства’ не соответствует типу: {}КлючевыеСвойстваБанковскийСчет Проверка свойства ‘Владелец’:     форма: Элемент     имя: {}Владелец     тип: Не установлено значение одного из следующих свойств: НомерСчета В моем случае я так понял что у какого то контрагента не указан номер счета. В Вашем случае в документе не установлен «Контрагент». Возможно я и ошибаюсь. Тестирование и исправление базы в моем случае никак не заполнило номера счетов (что логично), помогла пометка на удаление данных контрагентов, НО смысл их помечать как удаленные если они используются. Что делать в таком случае?

Так я это тоже прочитал. Вопрос как (где) ее заполнить. Открыл договор — в нем нету такого поля ((

может у вас валютный учет выключен. Смотрите в настройках.

Как найти документы в которых используется «ошибочный контрагент»? ошибок только 2-позиции, а контрагентов с пустыми номерами счетов много.

Ну в настройках-Предприятие Действительно мультивалютный учет был отключен. Но была Валюта по умолчанию RUB. По логике она и должна подставляться во все Договора в свойство Валюта взаиморасчетов. Включил ведение учета в разных валютах. Во всех договорах проставился RUB. Пробую снова выгрузить.

Не помогло. Такая же фигня Событие: Отправка. ПОД: Документ_ПоступлениеТоваровУслуг. ПКО: Документ_ПоступлениеТоваровУслуг_Отправка. Объект: Документ объект: Поступление товаров и услуг, Поступление товаров и услуг 0000-000024 от 21.02.2016 12:00:01. {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль}: Ошибка при вызове метода контекста (Проверить)             ОбъектXDTO.Проверить; по причине: Ошибка проверки данных XDTO: Структура объекта ‘/ДанныеВзаиморасчетов/Договор’ не соответствует типу: {}КлючевыеСвойстваДоговор Проверка свойства ‘ВалютаВзаиморасчетов’:     форма: Элемент     имя: {}ВалютаВзаиморасчетов     тип: {}КлючевыеСвойстваВалюта Не установлено значение одного из следующих свойств: Контрагент

Групповым изменениям реквизитов установил ВалютуВзаиморасчетов RUR в документах и справочниках: Поступление Товаров и услуг ДоговорыКонтрагентов СоглашенияКонтрагентов И все равно ошибка осталась. Ну что, никто не поможет?

Стоит проверить все ли элементы справочников действительно выгрузились в БП. В новом обмене помеченный на удаление элемент не участвует в обмене и это может вызвать похожие проблемы. Например, если сделать отгрузку по новому договору помеченному на удаление, то в базе получателя можно получить отгрузку с «Объект не найден» в качестве договора. У такого договора реквизит ВалютаВзаиморасчетов тоже не будет заполнен. И как бы его в базе УТ не перезаполняли после этого, он всё равно не будет выгружаться в БП из-за пометки удаления.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Студворк — интернет-сервис помощи студентам

Добрый день, при настройке синхронизации через универсальный формат xml, при окончании отправки данных всё «валится» в ошибку. Информация в журнале регистрации на одном примере: Событие: Отправка.
ПОД: Документ_ЗаказКлиента_Отправка.
ПКО: Документ_ЗаказКлиента_Отправка.
Объект: Документ объект: Заказ клиента, Заказ клиента 00ИП-004235 от 12.10.2018 12:36:17.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}: Ошибка при вызове метода контекста (Проверить)
ОбъектXDTO.Проверить();

Ошибка проверки данных XDTO:
Структура объекта ‘/Контрагент’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.3}КлючевыеСвойстваКонтрагент
Проверка свойства ‘СтранаРегистрации’:
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.3}СтранаРегистрации
тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.3}КлючевыеСвойстваСтранаМира
Не установлено значение одного из следующих свойств: ЮридическоеФизическоеЛицо

Вопрос: что за страна регистрации, как исправить ошибку?

  1. 18.11.2022, 15:50


    #1

    Serjos вне форума


    Гость форума


    По умолчанию Помогите разобраться с ошибкой при переходе с 2.3 на 3.0 Розница

    вот текст ошибки:

    Код:

    Направление: Отправка.
    ПОД: Документ_ОстаткиРасчетыСПокупателямиАвансы.
    ПКО: Документ_ОстаткиРасчетыСПокупателямиАвансы.
    Объект: Структура, от 18.11.2022 0:00:00 ().
    
    Ошибка при вызове метода контекста (Проверить)
    {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4697)}:ОбъектXDTO.Проверить();
    {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(758)}:ПроверитьОбъектXDTOПоСхеме(ОбъектXDTO, ПравилоКонвертации.ТипXDTO, Контекст, ОшибкаПроверкиПоСхеме, ОписаниеОшибкиПроверкиПоСхеме);
    {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}:ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ОбъектВыборки, ПравилоОбработки);
    {Обработка.ПомощникПереходаВУНФ.МодульМенеджера(169)}:ОбменДаннымиXDTOСервер.ПроизвестиВыгрузкуДанных(КомпонентыОбмена);
    {(1)}:Обработки.ПомощникПереходаВУНФ.ВыгрузитьДанные(Параметры[0],Параметры[1],Параметры[2],Параметры[3])
    {ОбщийМодуль.ОбщегоНазначения.Модуль(9084)}:Возврат Вычислить(ИмяМетода + "(" + ПараметрыСтрока + ")"); // АПК:488 Исполняемый код безопасен.
    {ОбщийМодуль.ДлительныеОперации.Модуль(1457)}:Результат = ОбщегоНазначения.ВызватьФункциюКонфигурации(ИмяФункции, ПараметрыПроцедуры);
    {ОбщийМодуль.ДлительныеОперации.Модуль(1399)}:ВызватьФункцию(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ВсеПараметры.ПараметрыВыполнения.АдресРезультата);
    
    по причине:
    Ошибка проверки данных XDTO:
    Структура объекта '/Расчеты/Строка[1]' не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.14}РасшифровкаОстатковРасчетовСКонтрагентами.Строка
    Проверка свойства 'Сумма':
    	форма: Элемент
    	имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.14}Сумма
    	тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.14}ТипСумма
    Не установлено значение одного из следующих свойств: Контрагент

    Заранее спасибо!


  2. 18.11.2022, 16:25


    #2

    По умолчанию Re: Помогите разобраться с ошибкой при переходе с 2.3 на 3.0 Розница

    Ничего не написали: Платформа, релизы, серверные/файловые?


  3. 18.11.2022, 18:51


    #3

    Serjos вне форума


    Гость форума


    По умолчанию Re: Помогите разобраться с ошибкой при переходе с 2.3 на 3.0 Розница

    c:
    1С:Предприятие 8.3 (8.3.22.1704)
    Розница, редакция 2.3 (2.3.13.30)

    на:
    1С:Предприятие 8.3 (8.3.22.1704)
    Розница, редакция 3.0 (3.0.1.265)
    1C и база стоят на одном компьютере

    Последний раз редактировалось Serjos; 18.11.2022 в 19:03.


Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста проверить заполнение
  • Ошибка при вызове метода контекста скопировать неверное имя колонки
  • Ошибка при вызове метода контекста присоединить
  • Ошибка при вызове метода контекста скомпоноватьрезультат
  • Ошибка при вызове метода контекста принадлежитэлементу элемент не выбран