Меню

Ошибка проверки данных xdto значение не соответствует значениям фасета перечисления

Добрый день! 1С:Предприятие 8.3 (8.3.18.1289) Зарплата и управление персоналом, редакция 3.1 (3.1.19.80) (http://v8.1c.ru/hrm/)
Copyright © ООО «1С-Софт», 2010 — 2020. Все права защищены
(http://www.1c.ru). Прошу помощи, при отправки реестра прямых выплат выдает ошибку:
Ошибка проверки данных XDTO:
Значение: » не соответствует простому типу: {http://pilot.fss.ru/1.7}IdType
Значение не соответствует значениям фасета перечисления
{Документ.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.МодульМенеджера(417)}: ROW.ID_TYPE = СтруктураДанных.УдостоверениеЛичностиКодМВД;
{Документ.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.МодульМенеджера(379)}: ЗаполнитьСтрокуРеестра(ROW, ВыборкаСтрок);
{Документ.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.МодульМенеджера(311)}: ТекстXML = СформироватьФайлРеестра(ВыборкаПоШапкеДокумента, ИдентификаторФСС);
{Документ.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.МодульМенеджера(327)}: ФайлРеестра = ФайлРеестра(Ссылка, Неопределено);
{ОбщийМодуль.ЗарплатаКадрыБазовый.Модуль(1221)}: ФайлДляОтправки = Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.ПолучитьФайлДляОтправки(Ссылка);

Добрый день.

Цитата (Катерина Тестова):Ошибка проверки данных XDTO:
Значение: » не соответствует простому типу

На профильном сайте отвечают так:

Цитата:Ошибка может возникать, когда у сотрудника в адресе не заполнен индекс. Проверьте реквизит «Адрес регистрации» в Заявлении на выплату пособия (Отчетность, справки – Пособия за счет ФСС).

А если Вы уже сами разобрались с проблемой и причина была в другом, можете разместить здесь ваш вариант ответа. Не исключено, что он пригодится и кому-то еще.

Заполнить и подать уведомление об исчисленных суммах налогов и взносов

Цитата (Катерина Тестова):УдостоверениеЛичностиКодМВД

Дополнительно проверьте правильность заполнения паспортных данных, в частности код подразделения МВД/ОУФМС.

Подскажите, пожалуйста, что делаю не так… При сериализации справочника возникает проблема с реквизитами, которые имеют тип перечисления и не заполнены ОбъектXDTO.Проверка выдает следующее: Структура объекта не соответствует типу: { Проверка свойства ‘СпособРасчетаЦены’:    имя: {    тип: { Отсутствует обязательное свойство Присваиваю значение свойству так:

ну, видимо потому что в схеме, данные поля обязательны для заполнения.

Если ты о свойстве «Возможно пустое». пробовал, менял — все одно и тоже. Кстати, функция возвращает такую ошибку: {}: Ошибка при вызове метода контекста (Создать): Ошибка проверки данных XDTO: Значение: » не соответствует простому типу: { Значение не соответствует значениям фасета перечисления

выгрузи пакет xdto в xsd схему и посмотри на нее глазками в разделе, где проверяются твои перечисления. Может на что тебя натолкнет. Может глукануло и просто список доступных значений полей не соответствует тому, что есть в базе.

Вот так объявляется перечисление: Вот так справочник:        …        …        … мысли уже кончились…

хм.. ну, думаю, что ты у себя проверил, что всего два значения у тебя перечисления в конфигураторе!? Кстати, в xsd твоем не сказано. что name=»СпособРасчетаЦены» необязательно для заполнения.

1) да, эта часть конфы идентична. 2) просто, поскольку это роли не сыграло, вернул взад… еще раз проверил, появилась строка : толку от нее не увидел

хм.. а я знаю.. короче, нужно посмотреть, как сериализуется пустое значение перечисления. nilable = true, говорит, что его вообще можно не заполнять, но пустое значение и отсутствие значения — это разные вещи :))) например, если сериализуется в «», то это не nilable = true, и к тому же по рестрикшенам xsd это тоже не допустимо попробуй в xsd Руками поправить или во что оно там сериализуется.

а, ну и потом xsd загрузить обратно

))) Кошмар!!! Получилось! Спасибо тебе большое! А если не ручками, а в конфигураторе, мышкой, такое получится?

не знаю :)) никогда не работал с xdto :))))

да, и хотелось бы, так сказать, мужской комплемент  🙂 зачетный вопрос, инетерсно было разобраться :)))

Похоже нет. Ничего подобного там не нашел… Ну 1С… :)) Ну такое то надо предусмотреть (при экспорте XML-схемы). Ладно, теперь буду по аналогии мучать составные типы! Спасибо!

11 Спасибо ) надеюсь, ветка кому-н. еще пригодиться

Тэги:

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

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Сергей Интяшев

Дата регистрации: 29.01.2019
Сообщений: 1

Добрый день всем. При создании электронного документа выдает такую ошибку.

1С:Предприятие 8.3 (8.3.12.1685)
Бухгалтерия предприятия, редакция 3.0 (3.0.67.43)
Режим : Серверный, PostgreSQL

Не удается создать электронный документ, выдает ошибку: «Выполнение операции: Заполнение XDTO.
Ошибка установки значения свойства «НалСт».
Подробности см. в журнале регистрации.»

Сообщения из журнала регистрации:

Выполнение операции: Заполнение XDTO.
Ошибка установки значения свойства «НалСт».
{ОбщийМодуль.ОбменСКонтрагентамиВнутренний.Модуль(10673)}: Ошибка при вызове метода контекста (Установить)
            ОбъектXDTO.Установить(ИмяСвойства, Значение);
по причине:
Несоответствие типов XDTO
по причине:
Ошибка проверки данных XDTO:
Значение: ‘20%’ не соответствует простому типу:
Значение не соответствует значениям фасета перечисления

————————————————————————————-

Выполнение операции: Формирование ЭД.
{ОбщийМодуль.ОбменСКонтрагентамиВнутренний.Модуль(8390)}: Выполнение операции: Заполнение XDTO.
Ошибка установки значения свойства «НалСт».
                  ВызватьИсключение ЭлектронноеВзаимодействиеСлужебный.СоединитьОшибки(Ошибки);

Помогите пожалуйста, может кто сталкивался с данной проблемой

Ленар Ленарович

Дата регистрации: 15.03.2019
Сообщений: 1

Нужно обновить 1С до определенного релиза. Для «Бухгалтерия предприятия», редакция 3.0 необходимо обновиться до релиза 3.0.67.67

Показывать по
10
20
40
сообщений

  1. 09.09.2020, 07:23


    #1

    Kuken вне форума


    Гость форума


    Exclamation 1c & XDTO

    День добрый форумчане.
    вот такая ошибка появилась при обмене выгрузка из УНФ (перепиленная в край) в БП по универсалу:
    Событие: Отправка.
    ПОД: Справочник_СпецификацииНоm енклатуры_Отправка.
    ПКО: Справочник_СпецификацииНоm енклатуры_Отправка.
    Объект: Справочник объект: Спецификации, Печать с логотипом Диаметр печати: 40,Оснастка: Переклейка на оснастку заказчика, (e1cib/data/Справочник.Спецификации?ref= 95cfd89d672c49b011eae6d66d90fca8).

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(835)}: Ошибка формирования объекта XDTO: Тип свойства <Таблица>. Имя свойства: <Товары>.

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(835)}: Ошибка формирования объекта XDTO: Тип свойства <ОбычноеСвойство>. Имя свойства: <ДоляСтоимости>.

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(756)}: Ошибка при вызове метода контекста (Создать)
    ЗначениеXDTO = ФабрикаXDTO.Создать(Свойство .Тип, ЗначениеСвойства);
    по причине:
    Ошибка проверки данных XDTO:
    Значение: ‘244.22’ не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}int
    Несоответствие фасету FractionDigits = ‘0’
    ВызватьИсключение ТекстОшибки;
    ВызватьИсключение ТекстОшибки;

    Я понимаю что мне ошибка говорит что ДЛИННА ДРОБНОЙ ЧАСТИ должна быть равна 0, а у мена нет.
    Я не могу понять где поправить этот FRACTIONDIGITS

    все ссылки XDTO на данную хрень выглядят так <xs:element name=»ДоляСтоимости» type=»xs:decimal»/>

    у меня в объектах XDTO нет ни одного объекта (я не нашел) который ссылаеться на http://www.w3.org/2001/XMLSchema
    может я не правильно ищу может не там.
    вот в чем проблема то.

    Последний раз редактировалось Kuken; 09.09.2020 в 07:55.


  2. 09.09.2020, 09:27


    #2

    Konor18 вне форума


    Модератор

    Аватар для Konor18


    По умолчанию Re: 1c & XDTO

    Цитата Сообщение от Kuken
    Посмотреть сообщение

    День добрый форумчане.
    вот такая ошибка появилась при обмене выгрузка из УНФ (перепиленная в край) в БП по универсалу:
    Событие: Отправка.
    ПОД: Справочник_СпецификацииНоm енклатуры_Отправка.
    ПКО: Справочник_СпецификацииНоm енклатуры_Отправка.
    Объект: Справочник объект: Спецификации, Печать с логотипом Диаметр печати: 40,Оснастка: Переклейка на оснастку заказчика, (e1cib/data/Справочник.Спецификации?ref= 95cfd89d672c49b011eae6d66d90fca8).

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(835)}: Ошибка формирования объекта XDTO: Тип свойства <Таблица>. Имя свойства: <Товары>.

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(835)}: Ошибка формирования объекта XDTO: Тип свойства <ОбычноеСвойство>. Имя свойства: <ДоляСтоимости>.

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(756)}: Ошибка при вызове метода контекста (Создать)
    ЗначениеXDTO = ФабрикаXDTO.Создать(Свойство .Тип, ЗначениеСвойства);
    по причине:
    Ошибка проверки данных XDTO:
    Значение: ‘244.22’ не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}int
    Несоответствие фасету FractionDigits = ‘0’
    ВызватьИсключение ТекстОшибки;
    ВызватьИсключение ТекстОшибки;

    Я понимаю что мне ошибка говорит что ДЛИННА ДРОБНОЙ ЧАСТИ должна быть равна 0, а у мена нет.
    Я не могу понять где поправить этот FRACTIONDIGITS

    все ссылки XDTO на данную хрень выглядят так <xs:element name=»ДоляСтоимости» type=»xs:decimal»/>

    у меня в объектах XDTO нет ни одного объекта (я не нашел) который ссылаеться на http://www.w3.org/2001/XMLSchema
    может я не правильно ищу может не там.
    вот в чем проблема то.

    Можно изменить формат универсального пакета, но проще изменить правила выгрузки, перед выгрузкой сделать преобразование (округление) у нужному типу, если это не критично для точности.


  3. 09.09.2020, 09:30


    #3

    Kuken вне форума


    Гость форума


    По умолчанию Re: 1c & XDTO

    в том то все и дело что кретично, этот параметр учитывается в ЗП людей.
    Я понимаю что можно поставить FractionDigits = ‘2’, но я не знаю где это сделать.


  4. 09.09.2020, 10:27


    #4

    Konor18 вне форума


    Модератор

    Аватар для Konor18


    По умолчанию Re: 1c & XDTO

    Цитата Сообщение от Kuken
    Посмотреть сообщение

    в том то все и дело что кретично, этот параметр учитывается в ЗП людей.
    Я понимаю что можно поставить FractionDigits = ‘2’, но я не знаю где это сделать.

    если точность критически важна — тогда меняйте в пакете — ветка общие — xdto-объекты — пакет называется EnterpriseData (используемую версию вроде можно посмотреть в настройках обмена)
    там где-то в настройках можно поменять тип и свойства объектов, где искать ваше свойство не знаю


  5. Пользователь сказал cпасибо:


  6. 09.09.2020, 10:33


    #5

    Kuken вне форума


    Гость форума


    По умолчанию Re: 1c & XDTO


  7. 09.09.2020, 11:33


    #6

    Kuken вне форума


    Гость форума


    По умолчанию Re: 1c & XDTO

    <xs:element name=»ДоляСтоимости» type=»xs:decimal»/> — тут поменял int на decimal
    <xs:any namespace=»##any» processContents=»lax» minOccurs=»0″ maxOccurs=»unbounded»/>


  8. 10.09.2020, 07:43


    #7

    Kuken вне форума


    Гость форума


    По умолчанию Re: 1c & XDTO

    эм… народ. а теперь для тупых вопрос.
    выгрузил XDTO из 1с поправил….
    а как назад загрузить???


  9. 10.09.2020, 12:40


    #8

    Konor18 вне форума


    Модератор

    Аватар для Konor18


    По умолчанию Re: 1c & XDTO

    Цитата Сообщение от Kuken
    Посмотреть сообщение

    эм… народ. а теперь для тупых вопрос.
    выгрузил XDTO из 1с поправил….
    а как назад загрузить???

    поставить курсор на корневой элемент «xdto_пакеты», нажать правую кнопку мыши и появиться пункт «импорт схемы»


  10. Пользователь сказал cпасибо:


  11. 11.09.2020, 06:51


    #9

    Kuken вне форума


    Гость форума


    По умолчанию Re: 1c & XDTO

    вообщем не помогло.
    вот полная ошибка в очередной раз.
    Событие: Отправка.
    ПОД: Справочник_СпецификацииНо� �енклатуры_Отправка.
    ПКО: Справочник_СпецификацииНо� �енклатуры_Отправка.
    Объект: Справочник объект: Спецификации, Печать простая по желанию закачика Оснастка: 4642 Р4 оснастка для печати диаметром 42мм, (e1cib/data/Справочник.Спецификации?ref= 95dfd89d672c49b011eaf36ec5fba3c3).

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(835)}: Ошибка формирования объекта XDTO: Тип свойства <Таблица>. Имя свойства: <Товары>.

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(835)}: Ошибка формирования объекта XDTO: Тип свойства <ОбычноеСвойство>. Имя свойства: <ДоляСтоимости>.

    {ОбщийМодуль.ОбменДаннымиXD TOСервер.Модуль(756)}: Ошибка при вызове метода контекста (Создать)
    ЗначениеXDTO = ФабрикаXDTO.Создать(Свойство .Тип, ЗначениеСвойства);
    по причине:
    Ошибка проверки данных XDTO:
    Значение: ‘21.77’ не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}int
    Несоответствие фасету FractionDigits = ‘0’
    ВызватьИсключение ТекстОшибки;
    ВызватьИсключение ТекстОшибки;
    это вся схема XDTO
    https://yadi.sk/d/5pip-5btETZoHw
    EnterpriseData1.3.7
    https://yadi.sk/d/rt0-q0aASDcOUA
    EnterpiseData1.6.1
    https://yadi.sk/d/24NcK—YGSgPgg

    Последний раз редактировалось Kuken; 11.09.2020 в 08:02.


Похожие темы

  1. Ответов: 0

    Последнее сообщение: 13.07.2018, 15:59

  2. Ответов: 1

    Последнее сообщение: 28.03.2018, 17:23

Социальные закладки

Социальные закладки


Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
  • BB коды Вкл.
  • Смайлы Вкл.
  • [IMG] код Вкл.
  • [VIDEO] код Вкл.
  • HTML код Выкл.

Правила форума

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

XDTO (XML Data Transfer Objects) это механизм позволяющий создавать модель данных и переводить ее в формат XML. Простыми словами, вы можете сделать модель документа поступления товаров и услуг через XDTO и выгрузить любой документ в XML файл, не работая с файлом напрямую.

Этот механизм применяется при обмене файлами XML и при работе с типами в веб-сервисах.
Давайте попробуем разобраться с XDTO. У нас уже есть конфигурация с веб-сервисом и веб операцией Plus2(). Пусть теперь эта операция будет возвращать сообщения о ошибках. Например, если входящий параметр функции меньше нуля, мы будем выдавать ошибку «Error», в остальных случаях будем выдавать «ОК». То есть теперь функция Plus2 будет возвращать структуру:

1. Результат — число — результат выполнения сложения. 0 если есть ошибка;
2. Ошибка — строка — «Ok» или «Передано отрицательное значение».

Для создания такой структуры мы будем использовать тип ОбъектXDTO, так как он может описать сложную структуру с несколькими реквизитами различных типов. Помимо ОбъектXDTO существует тип ЗначениеXDTO, но данный тип не позволяет описывать сложные структуры, потому использовать мы его не можем.

Для этого нам надо:

1. Создать модель XDTO для нашей структуры;
2. В модуле веб-сервиса создать ОбъектXDTO для для того что бы возвратить как результат функции.

Приступим. Откроем базу в режиме конфигурирования. Найдем в дереве метаданных XDTO и создадим новый пакет XDTO.

Откроется окно свойств, назовем этот пакет «ТипыВебСервиса». В свойство «URI пространства имен» укажем «http://codenotes-1c.blogspot.com». Как я уже писал в статье «1С:Предприятие 8. Веб-сервисы. Реализация веб-сервиса» нет особого значения что вы укажете в этом поле и даже не особо важно (для 1С) что эта строка будет ссылкой URI.

После этого пакет можно открыть, щелкнув в дереве метаданных по пакету «ТипыВебСервиса» и в новом окне добавим «Тип объекта».

Дадим ему имя «РезультатОперации», остальные свойства можно не менять.

У объекта создадим свойство. Для этого нажмем на него правой кнопкой и выберем «Добавить — Свойство».

И в окне свойств заполним его свойства. Укажем имя «Результат» и тип int из пространства имен http://www.w3.org/2001/XMLSchema как показано на рисунке.

И создадим второе свойство «Ошибка» как на картинке ниже.

На этом завершено создание пакета XDTO. Теперь можно приступить к написанию кода обработки ошибки и возврата результата веб-операции.

У нашего веб-сервиса WebService в свойство «Пакет XDTO» укажем только что созданный пакет. Иначе не сможем указать у веб-операции Plus2 тип «РезультатОперации».

Откроем свойства веб-операции Plus2 в поле «Тип возвращаемого значения» выберем тип «РезультатОперации» из пакета с пространства имен «http://codenotes-1c.blogspot.com» как на рисунке.

Теперь функция Plus2 будет возвращать не число, а структуру с двумя полями «Результат» и «Ошибка». Давайте откроем модуль веб-сервиса. Так как созданная нами структура не является стандартным типом то необходимо создать переменную типа «РезультатОперации», конечно на самом деле это будет ОбъектXDTO.

ТипXDTOРезультатОперации = ФабрикаXDTO.Тип(«http://codenotes-1c.blogspot.com», «РезультатОперации»);

Этой строкой мы с помощью Фабрики XDTO в конфигурации создали ТипОбъектаXDTO, указав пространство имен пакета и имя типа.

РезультатОперации = ФабрикаXDTO.Создать(ТипXDTOРезультатОперации);

Эта строка создает уже сам ОбъектXDTO, с которым можно уже будет работать привычным способом (обращение к реквизитам через точку). Далее мы перепишем код, добавив проверку на отрицательные значения, и код веб-операции будет выглядеть так:

Функция Plus2(Параметр)
  ТипXDTOРезультатОперации = ФабрикаXDTO.Тип(«http://codenotes-1c.blogspot.com»,    «РезультатОперации»);
  РезультатОперации = ФабрикаXDTO.Создать(ТипXDTOРезультатОперации);
  Если Параметр < 0 Тогда
    РезультатОперации.Результат = 0;
    РезультатОперации.Ошибка = «Передано отрицательное значение»;
  Иначе
    РезультатОперации.Результат = Параметр+2;
    РезультатОперации.Ошибка = «Ok»;
  КонецЕсли;
Возврат РезультатОперации;
КонецФункции

Если вызвать эту операцию с отрицательным значением то получим следующий результат:

<soap:header/>

<soap:body>

<m:plus2response xmlns:m=»www.URI.com»>

   </m:return>

</m:plus2response>

</soap:body>

</soap:envelope>

О том как вызвать операцию веб-сервиса и просмотреть результат вы можете прочитать в статье «1С:Предприятие 8. Веб-сервисы. Публикация и тестирование».

Вы видите что в результате сообщение веб-операции содержит два поля — Результат и Ошибка.
В данном примере описана работа с ОбъектомXDTO. Как я уже говорил, его отличие от ЗначениеXDTO в том, что ЗначениеXDTO не может описывать структурированные типы, вы не сможете, используя ЗначениеXDTO создать тип передающий какой либо документ или справочник. Но! ЗначениеXDTO имеет большие возможности по описанию ограничений примитивных типов и нашу задачу с проверкой на отрицательное значение параметра можно было решить более изящно. Если создать в пакете XDTO ТипЗначения «ПоложительноеЧисло» и указать его минимум,

то этот тип можно использовать как тип входного параметра:

Теперь при вызове веб-операции с отрицательным значением в ответ мы получим сообщение об ошибке:

 <soap:Header/>

 <soap:Body>

    <soap:Fault>

       <soap:Code>

          <soap:Value>soap:Sender</soap:Value>

       </soap:Code>

       <soap:Reason>

          <soap:Text xml:lang=»ru_RU»>Неизвестная ошибка. Ошибка проверки данных XDTO:

Несоответствие фасету MinInclusive = ‘0’

по причине:

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

Несоответствие фасету MinInclusive = ‘0’</soap:Text>

       </soap:Reason>

    </soap:Fault>

 </soap:Body>

</soap:Envelope>

Таким образом используя описание ЗначенияXDTO мы можем указать ограничения к типам и не задумываться о программной обработке значений. Вы можете использовать ЗначениеXDTO в полях ОбъектаXDTO, тем самым можете создавать очень сложные структуры типов данных.

Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Игра «Кто хочет стать миллионером?» с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, ни­дер­ландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С
Программирование в 1С 8.3 с нуля — краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка проверки возможности перевода
  • Ошибка проверки версии спро1 удаленный сервер возвратил ошибку 407