Добрый день! 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
сообщений
-
09.09.2020, 07:23
#1

Гость форума
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.
-
09.09.2020, 09:27
#2

Модератор
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
может я не правильно ищу может не там.
вот в чем проблема то.Можно изменить формат универсального пакета, но проще изменить правила выгрузки, перед выгрузкой сделать преобразование (округление) у нужному типу, если это не критично для точности.
-
09.09.2020, 09:30
#3

Гость форума
Re: 1c & XDTO
в том то все и дело что кретично, этот параметр учитывается в ЗП людей.
Я понимаю что можно поставить FractionDigits = ‘2’, но я не знаю где это сделать.
-
09.09.2020, 10:27
#4

Модератор
Re: 1c & XDTO
Сообщение от Kuken
в том то все и дело что кретично, этот параметр учитывается в ЗП людей.
Я понимаю что можно поставить FractionDigits = ‘2’, но я не знаю где это сделать.если точность критически важна — тогда меняйте в пакете — ветка общие — xdto-объекты — пакет называется EnterpriseData (используемую версию вроде можно посмотреть в настройках обмена)
там где-то в настройках можно поменять тип и свойства объектов, где искать ваше свойство не знаю
-
Пользователь сказал cпасибо:
-
09.09.2020, 10:33
#5

Гость форума
Re: 1c & XDTO
-
09.09.2020, 11:33
#6

Гость форума
Re: 1c & XDTO
<xs:element name=»ДоляСтоимости» type=»xs:decimal»/> — тут поменял int на decimal
<xs:any namespace=»##any» processContents=»lax» minOccurs=»0″ maxOccurs=»unbounded»/>
-
10.09.2020, 07:43
#7

Гость форума
Re: 1c & XDTO
эм… народ. а теперь для тупых вопрос.
выгрузил XDTO из 1с поправил….
а как назад загрузить???
-
10.09.2020, 12:40
#8

Модератор
Re: 1c & XDTO
Сообщение от Kuken
эм… народ. а теперь для тупых вопрос.
выгрузил XDTO из 1с поправил….
а как назад загрузить???поставить курсор на корневой элемент «xdto_пакеты», нажать правую кнопку мыши и появиться пункт «импорт схемы»
-
Пользователь сказал cпасибо:
-
11.09.2020, 06:51
#9

Гость форума
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.
Похожие темы
-
Ответов: 0
Последнее сообщение: 13.07.2018, 15:59
-
Ответов: 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-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки