Меню

Ошибка проверки данных xdto несоответствие фасету maxlength 1000

Я
   _Dikoy_

10.07.16 — 17:21

Конфигурация 1С:Розница 2.2.3.10. Для справочника «Номенклатура» созданы дополнительные реквизиты (тип — строка, длина — Неограниченная). При попытке выгрузить данные на сайт получаю ошибку «Несоответствие фасету maxlength=1000)» по дополнительным реквизитам, длина строки значения в которых действительно более 1000 символов.

Данные выгружать необходимо, подскажите куда копать…

   Defender aka LINN

1 — 10.07.16 — 20:09

(0) Смотреть на число «1000» и на длину доп. реквизита. Думать.

   _Dikoy_

2 — 11.07.16 — 14:35

Смотрел, думал. Вручную (без флажка «Неограниченная») установить значение длины больше 1000 не получается. Именно поэтому для доп реквизитов длину значения устанавливал «Неограниченно». В моем понимании «Неограниченная» это более чем 1000.

В чем я заблуждаюсь?

   Fragster

3 — 11.07.16 — 14:37

а в пакете XDTO установлено ограничение на 1000

   _stay true_

4 — 11.07.16 — 14:38

(2)

Можешь покопаться в конфе, найти нужное свойство в нужном пакете XDTO и исправить 1000 на 0. Вы не заблуждаетесь. Видимо, в 1С посчитали, что выгружать доп.реквизиты строкового типа с длиной строки более 1000 символов никто и никогда не будет

  

Beretta

5 — 11.07.16 — 14:51

(4) Также можешь поиметь проблемы внутри сайта, который не ожидает строки больше чем 1000 символов.

Видимо, в 1С посчитали, что выгружать доп.реквизиты строкового типа с длиной строки более 1000 символов никто и никогда не будет.

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Рекомендуемые сообщения

Chudo

    • Жалоба
    • Поделиться

При синхронизации выходит такая ошибка в 1С ==прикрепил скрин==  
В MySQL внёс изменения расширения текста ==прикрепил скрин== 

Подскажите пожалуйста, в какую сторону капать? 1С или Simpla?

И как я понял, эта ошибка возникает, так как много символов в описании товара.

post-18294-0-87279800-1475246729_thumb.png

post-18294-0-70761800-1475246972_thumb.png


Изменено 30 сентября, 2016 пользователем Chudo

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Chudo

  • Автор
    • Жалоба
    • Поделиться

При синхронизации выходит такая ошибка в 1С ==прикрепил скрин==  

В MySQL внёс изменения расширения текста ==прикрепил скрин== 

Подскажите пожалуйста, в какую сторону капать? 1С или Simpla?

И как я понял, эта ошибка возникает, так как много символов в описании товара.

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

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Kors

    • Жалоба
    • Поделиться

Параметры PHP

max_file_uploads

post_max_size

upload_max_filesize

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Chudo

  • Автор
    • Жалоба
    • Поделиться

Параметры PHP

max_file_uploads

post_max_size

upload_max_filesize

Kors, премного благодарен за ответ

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Chudo

  • Автор
    • Жалоба
    • Поделиться

Параметры PHP

max_file_uploads

post_max_size

upload_max_filesize

 Kors, подскажи пожалуйста.

     // Максимальный размер загружаемых файлов

        $max_upload = (int)(ini_get(‘upload_max_filesize’));

        $max_post = (int)(ini_get(‘post_max_size’));

        $memory_limit = (int)(ini_get(‘memory_limit’));

        $this->vars[‘max_upload_filesize’] = min($max_upload, $max_post, $memory_limit)*1024*1024;

*1024*1024; ==> это значение в Mb ?

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Kors

Chudo

  • Автор
    • Жалоба
    • Поделиться

Спасибо большое ещё раз, буду пробовать.  :)

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Chudo

  • Автор
    • Жалоба
    • Поделиться

Kors, попробовал способ, не помогло. При добавлении в .htaccess значения в info.php меняется на 32mb, по умолчанию 64mb. Но тем не менее при синхронизации опять та же ошибка. 

Ты написал, написать хостеру. Подскажи пожалуйста, что я у них должен уточнить?

Или может быть есть другие косяки?

post-18294-0-80016900-1475337980_thumb.png


Изменено 1 октября, 2016 пользователем Chudo

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Kors

    • Жалоба
    • Поделиться

…при синхронизации опять та же ошибка.

Та же — это какая?

1. На картинке 1-го поста ИЛИ

2. «…часть картинок грузятся хорошо, а с некоторыми такая беда.» ИЛИ

3. еще что другое?

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Chudo

  • Автор
    • Жалоба
    • Поделиться

Та же — это какая?

1. На картинке 1-го поста ИЛИ

2. «…часть картинок грузятся хорошо, а с некоторыми такая беда.» ИЛИ

3. еще что другое?

Ошибка такая же. Вот сейчас удалил из 1С картинку этого товара (что на первом скрине) и вылезла следующая ошибка (прикрепил скрин) У меня подозрение, что дело в картинке, потому что в конце картинки стоит «#», и если я отключаю синхронизацию с картинками, то всё синхронизируется хорошо.

2. Да, часть грузится нормально с картинками, а вот конкретные товары вызывают ошибку.

post-18294-0-05982200-1475340284_thumb.png

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Kors

Chudo

  • Автор
    • Жалоба
    • Поделиться

Ну снова будет пробовать) Спасибо тебе ещё раз)

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Chudo

  • Автор
    • Жалоба
    • Поделиться

Спасибо большое Kors, проблема была в 1С. Решили проблему копаясь в конфигах 1С.

  • Цитата

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже.

Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

 

УТ 11.1.7.54. Модуль 4.0.3.1
При запуске обмена сайтом возникает ошибка (после долгих раздумий)
———-
Ошибка проверки данных  XDTO:
Значение: ‘5484bff7-B844-4B5c-ao84-Bb51 93002801 #5484bff7-B844-4850-ao84-Bb51 93002801 #5484bff7-B844-4850-ao84-Bb51 94004780’ не соответствует простому типу: {um:1C.ru:commercemI_2}Идентификатор80
Несоответствие фасету MaxLength = ’80‘
———-
Судя по логам обмена, она возникает на этапе формирования XML торговых предложений. Т.е. товары и структура экспортируются успешно.
Возникает и при указании опции выгрузки на сайт, и при выгрузке в файлы.
Ни в файлах, ни на сайте ничего, напоминающего привиденные коды, не нашел. Точнее, первые два кода — это id имеющегося товара, а вот третий (я так понимаю, код реквизита) — найти нигде не могу. На сайте нету. В режиме редактирования кодов битрикс не находится поиском. А самое главное, ресь идет о выгрузке тех же данных, которые до этого были импортированы с сайта помощником. Т.е. по идее, если прямая операция ошибок не дала, то и обратная не должна.

 

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

у вас некорректный ид предложения. Он должен быть макс 80 символов, у вас же по каким то причинам он почти в 2 раза больше.

 

Странно. Как я уже сказал, был просто полный импорт с сайта через помощник в пустую базу.
Как мне найти это кривое предложение?

 
 

Выяснил, что у меня на сайте у ВСЕХ предложений коды длинные в виде 5484bff7-6844-465c-a084-6b5193002387#5484bff7-6844-465c-a084-6b5194003943
То есть Код_товара#Код_предложения.
А взялись они у меня на сайте из-за того, что сейчас (пока мы не используем 1С) каталог ведется в сторонней самописной базе и экспортируется из нее на сайт в формате cml (по стандартному битриксовскому протоколу). И в этом исходном cml код именно такой — составной, иначе при импорте не произойдет связки предложения с товаром.
После полного импорта этого каталога впустую 1С с помощью помощника эти коды в неизменном виде попали в 1С.
Теперь при экспорте из 1С слева к коду еще раз добавляется код товара, и получается цепочка из 3 кодов.

Выходит, на каком-то этапе что-то работает нелогично:
Либо неверно реализован протокол импорта в битрикс из cml (и Битрикс при импорте cml должен отсекать код товара и класть в предложение только код предложения)
Либо помощник импорта в 1С должен был при импорте предложения в 1С отсекать код товара
Либо при выгрузке из 1С в битрикс к коду предложения не должен дописываться код товара
Мне кажется правильным вариант номер 2.
Вот только теперь не знаю, как массово отсечь код товара в 1С в уже имеющейся базе. Руками не реально. Ждать новой версии помощника импорта, видимо, долго.
Помогите, пожалуйста.

 

Пользователь 150122

Заглянувший

Сообщений: 23
Баллов: 1
Регистрация: 12.08.2014

#6

02.09.2014 16:40:08

Цитата
Владимир Щукин пишет:
Вот только теперь не знаю, как массово отсечь код товара в 1С в уже имеющейся базе. Руками не реально. Ждать новой версии помощника импорта, видимо, долго.

Обработка которая отсекает — пишется за 5 минут на коленке.
Все идентификаторы пришедшие с сайта хранятся в поле Б_Идентификатор.

Выбираем все идентификаторы отрезаем в каждом идентификаторе текст до «#» включительно и записываем на место.

Задачка для начинающего уровня программиста 1С )))

 

Пользователь 236163

Заглянувший

Сообщений: 41
Баллов: 2
Регистрация: 27.02.2014

#7

02.09.2014 16:46:38

Цитата
Василий Мазурок пишет:
Задачка для начинающего уровня программиста 1С )

Вот и мне так кажется.
Одна проблема — я не программист 1С :)
Потому и прошу помощи.

 

Пользователь 236163

Заглянувший

Сообщений: 41
Баллов: 2
Регистрация: 27.02.2014

#8

04.09.2014 18:21:53

В мастере загрузки с сайта в функции ОбработатьЗначениеЭлемента есть такой кусок:

Код
     ИначеЕсли ИмяЭлемента = "ПакетПредложений.Предложения.Предложение.Ид" Тогда
      
      Поз = Найти(ЗначениеЭлемента, "#");
      
      ПраваяЧасть = Сред(ЗначениеЭлемента, Поз + 1);
      
      Если СтрДлина(ПраваяЧасть) > ДлинаИд Тогда
         
         ДобавитьОписаниеОшибки(ОписаниеОшибки, "Предложения: " + ОшибкаДлинаИд + ЗначениеЭлемента);
         Возврат;
         
      КонецЕсли;
      
      ТекСтрока = мСтруктураДанных.ТаблицаПредложений[мСтруктураДанных.ТаблицаПредложений.Количество() - 1];
      ТекСтрока[ИмяТекущегоЭлемента] = ЗначениеЭлемента;

  Что-то мне подсказывает, что в последней строке должно быть «=ПраваяЧасть;».

 

Пользователь 236163

Заглянувший

Сообщений: 41
Баллов: 2
Регистрация: 27.02.2014

#9

04.09.2014 20:46:41

Цитата
Владимир Щукин пишет:
Выяснил, что у меня на сайте у ВСЕХ предложений коды длинные в виде 5484bff7-6844-465c-a084-6b5193002387#5484bff7-6844-465c-a084-6b5194003943
То есть Код_товара#Код_предложения.

Не знаю пока, даст ли правка кода что-то, решил попробовать повторный импорт.
Запустил помощник импорта с сайта с исправлением в коде и из любопытства перехватил файлы cml, идущие от Битрикса в 1С.
Оказыватеся, уже в cml от Битрикса в ИД торговых предложений светятся 3(!) кода:
Код_товара#Код_товара#Код_предложения.
Что получится в результате, будет ясно утром. Но тут явно что-то странное происходит.
Когда я скармливаю битриксу свой cml, в котором ИД предложения в виде Код_товара#Код_предложения, он так и созраняет в инфоблок код из 2 частей.
Зато отдача того же предложения идет уже из 3 частей Код_товара#Код_товара#Код_предложения.
Получается, гипотетически, на каждом круге ид прирастает слева на еще один код товара.

Битрикс у меня обновленный, без правок ядра, лицензионный и т.п. Интересно, это у всех так же?

 

В общем за ночь измененный помощник отработал, все загрузилось. У характеристик теперь код 1С такой, как должен — содержит только код предложения.
А вот экспорт из 1С теперь не работает. Падает с ошибкой «Недостаточно памяти». Хотя выгружаю всего один маленький раздел каталога, штук 100 товаров. И выгружаю не на сайт, а в файлы.
На машине 2 Гб памяти. Процесс долгое время потребляет около 800 Мб, но за секунду до ошибки потребление резко взлетает, диспетчер задач фиксирует пик в  до 1470 Мб.
В логе обмена последняя строка
«Начало выгрузки пакета 1 каталога: Основной каталог товаров»

Что-то руки постепенно опускаются…

 

Александр Денисюк

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

#11

05.09.2014 18:18:58

Цитата
Владимир Щукин пишет:
В общем за ночь измененный помощник отработал, все загрузилось. У характеристик теперь код 1С такой, как должен — содержит только код предложения.
А вот экспорт из 1С теперь не работает. Падает с ошибкой «Недостаточно памяти». Хотя выгружаю всего один маленький раздел каталога, штук 100 товаров. И выгружаю не на сайт, а в файлы.
На машине 2 Гб памяти. Процесс долгое время потребляет около 800 Мб, но за секунду до ошибки потребление резко взлетает, диспетчер задач фиксирует пик в до 1470 Мб.
В логе обмена последняя строка
«Начало выгрузки пакета 1 каталога: Основной каталог товаров»

Что-то руки постепенно опускаются…

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

Но если это 1 пакет, от дело в свойствах.

 

Свойств 430 штук. Но они все нужные. Причем в выгружаемой группе используются не более 10 из них, и стоит галочка «выгружать только используемые». Но это сейчас, для экономии времени. А вот когда будет выгружаться весь каталог…
Я повнимательней посмотрел номенклатуру и выяснил, что вчера, когда делал новый импорт с сайта, в виде номенклатуры поствил характеристики «Общие для вида номенклатуры». Сегодня поставил, как раньше — индивидуальные для номенклатуры (не помню, как они точно называются), сейчас идет импорт, посмотрю, поможет ли.

Но вообще все как-то странно в мире 1С/Битрикс.
Моя самописная прога, которая генерит cml полного каталога из моей базы (размер конечных файлов 30Мб), потребляет не более 100 Мб памяти, и еще 190 Мб потребляет MS SQL Server, затрачивая на это 32 секунды.
Импорт этих файлов Битриксом занимает 50-70 минут, и ему с трудом хватает 512 Мб памяти (иногда падал, пока лимит не подняли).
Импорт того же каталога из битрикса в 1С занимает уже 5,5 часов, потребляет 1 гиг и иногда валится по нехватке памяти.
Экспорт 1/30 этого каталога из 1С в cml файлы требует минимум 7 минут на то, чтобы сожрать 1,5 гиг и упасть.
Нда. Что-то в консерватории неладное творится…

Интересно, если поставить 64-битную платформу, 1С будет использовать всю доступную память, по-прежнему только 1,5 гига?

 

1С тут не причем ))) думается мне — все дело в не оптимальных алгоритмах и чрезмерно использовании таблиц размещенных в памяти.

Причиной тому разработка обмена и тестирование на очень маленьких базах данных — где все эти подводные камни просто не всплывают!

 

Александр Денисюк

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

#14

08.09.2014 11:29:57

Цитата
Владимир Щукин пишет:
Я повнимательней посмотрел номенклатуру и выяснил, что вчера, когда делал новый импорт с сайта, в виде номенклатуры поствил характеристики «Общие для вида номенклатуры». Сегодня поставил, как раньше — индивидуальные для номенклатуры (не помню, как они точно называются), сейчас идет импорт, посмотрю, поможет ли.

Да, из за этого и проблема.

Цитата
Владимир Щукин пишет:
Но вообще все как-то странно в мире 1С/Битрикс.
Моя самописная прога, которая генерит cml полного каталога из моей базы (размер конечных файлов 30Мб), потребляет не более 100 Мб памяти, и еще 190 Мб потребляет MS SQL Server, затрачивая на это 32 секунды.
Импорт этих файлов Битриксом занимает 50-70 минут, и ему с трудом хватает 512 Мб памяти (иногда падал, пока лимит не подняли).
Импорт того же каталога из битрикса в 1С занимает уже 5,5 часов, потребляет 1 гиг и иногда валится по нехватке памяти.

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

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

Цитата
Василий Мазурок пишет:
думается мне — все дело в не оптимальных алгоритмах и чрезмерно использовании таблиц размещенных в памяти.

Ну предложите что нить пооптимальнее. Я посмотрю, может и заоптимизирую.

Цитата
Василий Мазурок пишет:
Причиной тому разработка обмена и тестирование на очень маленьких базах данных — где все эти подводные камни просто не всплывают!

Тестируется на разных базах. В том числе и на больших.

 

Пользователь 236163

Заглянувший

Сообщений: 41
Баллов: 2
Регистрация: 27.02.2014

#15

08.09.2014 12:42:57

Цитата
Александр Денисюк пишет:
Сказки.

Вы напрасно так резко.
Я никого не обвиняю ни в чем, но, столкнувшись с этим совсем недавно, действительно порой впадаю в ступор от «эффективности» использования ресурсов.

А цифры все реальные на 100%. Вы думаете, зачем я то одну опцию включаю, то другую? Просто надеюсь нащупать вариант, который будет быстрее. Неужели Вам меня не жалко — какие-то 3500 товаров импортируются полдня? Представляете, сколько дней такии темпами понадобится, чтобы все отладить? А сколько (десятков) раз процесс выпадал посередине то с ошибкой, то молча? Это какие нервы иметь надо! А Вы говорите «сказки»…

Цитата
Александр Денисюк пишет:

Цитата
Владимир Щукин пишет:
Я повнимательней посмотрел номенклатуру и выяснил, что вчера, когда делал новый импорт с сайта, в виде номенклатуры поствил характеристики «Общие для вида номенклатуры». Сегодня поставил, как раньше — индивидуальные для номенклатуры (не помню, как они точно называются), сейчас идет импорт, посмотрю, поможет ли.

Да, из за этого и проблема.

А почему из-за этого проблема? Зачем тогда вообще эта опция? Там даже указано «рекомендуется» выбирать общие характеристики. Тогда надо в инструкции к модулю крупно написать «Перед импортом каталога с сайта удостоверьтесь, что включена опция индивидуальных характеристик» или что-то такое.

Цитата
Александр Денисюк пишет:
Модуль обмена битрикс не виноват, что вы не оптимально храните данные.

А как их оптимально хранить? Я бы с удовольствием, но как? В битриксе у товаров есть свойства. Там и храню. Товаров 30 видов, у всех разные свойства, всего 430 штук свойств. Как их по-другому хранить, чтобы обмен быстрее шел? Какие еще варианты? Я искренне прошу рекомендаций, но пока не вижу.
А насчет «виноват-не виноват» — еще раз, чтобы не было конфликта — я не гворю, что виноват модуль, я высказывался об 1С и Битриксе вообще. Понятное дело, гибкость архитектуры и все такое. Но не такой же ценой… Везде в описании Битрикса красной линией идет «родная» интеграция с 1С. Я, честно, очень сильно на это расчитывал, когда выбирал движок магазина. А сейчас выходит, что две недели бьюсь, я только обмен товарами наладить не получается (это я еще зазаказы не брался). И это на моих мизерных 3500 товарах. Что же делать тем, у кого 10000?

Буду на днях пытаться на xeone и ssd пробовать, глядишь, может шустрее ворочаться будет.

По исправлению в коде, описанному выше,  очень хотел Ваше мнение узнать.

 

Александр Денисюк

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

#16

08.09.2014 15:00:14

Цитата
Владимир Щукин пишет:
Вы напрасно так резко.
Я никого не обвиняю ни в чем, но, столкнувшись с этим совсем недавно, действительно порой впадаю в ступор от «эффективности» использования ресурсов.

А цифры все реальные на 100%. Вы думаете, зачем я то одну опцию включаю, то другую? Просто надеюсь нащупать вариант, который будет быстрее. Неужели Вам меня не жалко — какие-то 3500 товаров импортируются полдня? Представляете, сколько дней такии темпами понадобится, чтобы все отладить? А сколько (десятков) раз процесс выпадал посередине то с ошибкой, то молча? Это какие нервы иметь надо! А Вы говорите «сказки»…

Цитата
Владимир Щукин пишет:
А почему из-за этого проблема? Зачем тогда вообще эта опция? Там даже указано «рекомендуется» выбирать общие характеристики. Тогда надо в инструкции к модулю крупно написать «Перед импортом каталога с сайта удостоверьтесь, что включена опция индивидуальных характеристик» или что-то такое.

Опишу поподробнее, почему возникает ошибка нехватка памяти из за неправильного хранения свойств:
В УТ 11 свойства могут задаваться как индивидуально для товара, так и для вида номенклатуры:
Условия: свойств 450, 1000 товаров, в каждом товаре в среднем по 10 свойств.
1) Индивидуальные свойства:
Каждый товар будет хранить по 10 свойств. Из 1С для каждого товара будет выгружаться 10 свойств(выгружать только заполненные свойства нельзя. т.к. пропадут данные о свойствах товара, да и не понятно, нужно ли свойство очищать). Значения свойств будут искаться по 10 свойствам.
2) Общий для вида номенклатуры:
Я предполагаю, что все 450 свойства хранятся в одном виде номенклатуры(т.к. скорее всего использовали обработку экспорта из сайта). В этом случае для каждого товара будут выгружаться 450 свойств. Значения свойств будут искаться по 450 свойствам.

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

Где будет работать шустрее — я думаю понятно.

 

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

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

 

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

 

Александр Денисюк

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

#19

08.09.2014 17:07:43

Цитата
Владимир Щукин пишет:
Спасибо за ответы, теперь понятно.
Я в будущем (когда с простыми вещами более-менее разберусь) планирую все товары раскидать по видам номенклатуры (аналогично категориям в битриксе) и в каждом виде номенклатуры оставить только тот набор свойств, которые касаются этого вида. Это, к сожалению, вручную делать придется, т.к. помощник импорта весь сайт валит в один вид номенклатуры, и в него же все свойства.

Пока да, в новой версии экспорта это будет поправлено. Когда он будет — пока сказать не могу.

 

прочитал ветку и не понял что-где править нужно?
Сделал «Экспорт с БУСа» средствами модуля в 1с.УНФ, после пытаюсь сделать обмен товарами и вылетает ошибка топикстартера…превышен MaxLength…

До экспорта на чистый БУС выгружались товары с 1с без проблем этим же модулем, все работало. Но требуется периодически загружать новую номенклатуру с БУСа, так как контент-менеджер удаленно наполняет сайт контентом, добавляет товары с картинками…с БУСа в 1с экспорт прошел без проблем, а после экспорта выгрузка товаров на сайт падает на этапе «Выгрузка предложений в ХМЛ»…настройки обмена выгрузки товаров не менялись…

Что делать? Знаний по обмену ХМЛ файлами нет, где правятся загрузки-выгрузки тоже не знаю(

З.Ы.: При попытке выгрузки первое падение идет на предложениях — отключил выгрузку предложений, упал обмен на ценах — отключил цены, упал на обмене остатков- отключил остатки, далее все прошло успешно…собственно после экспорта теперь обмен работает без предложений, остатков и цен….как все вернуть обратно?! =(

 

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

Проверьте коды битрикс у загруженных предложений. Скорее всего он у вас хранит в себе связку ид товара# ид предложения.А должен хранить только ид предложения.

 

Пользователь 216358

Заглянувший

Сообщений: 14
Регистрация: 14.09.2013

#22

19.01.2015 15:51:01

Цитата
Александр Денисюк написал:
Проверьте коды битрикс у загруженных предложений. Скорее всего он у вас хранит в себе связку ид товара# ид предложения.А должен хранить только ид предложения.

Да, так и есть. Только вот последующие эксперименты привели в полному замусориванию базы в 1с. Дело в том, что изначально на пустой БУС выгружались товары с 1с. Далее добавили товар в БУСе, и сделали Экспорт в 1С. После экспорта появились двойные внешние коды (плюс какие-то пустые характеристики и реквизиты в свойствах) и теперь, даже удалив их через «Редактирование кодов битрикса» при обмене двойные коды остаются. Причем при экспорте по насоздавались характеристики товара в 1с, даже у тех товаров, у которых не включена галочка «использовать характеристики». Так что туда-сюда (экспорт-импорт) обмен совсем не дружит друг с другом. Попытавшись почистить все лишнее (созданное при  экспорте) ручками столкнулся с проблемой, что некоторые данные привязаны только к обмену и как это вычистить не понятно, даже удалив обмен (через который происходила выгрузка) остались лишние хвосты непонятных свойств и характеристик…что теперь делать даже не знаю…База, с которой работала выгрузка испорчена по сути(

Обнаруженные нюансы:
1. Экспорт не понимает разные номенклатурные группы и то, что свойства у каждой группы могут быть свои, а не только общие — как итог — при экспорте все свойства сваливаются в одну кучу в Основную номенклатурную группу (для товаров как-то в разброс заменяется номенклатурная группа на Основную, хотя была выставлена другая, не понял почему). Причем, изначально при экспорте были выгружены такие поля как Реквизиты, Характеристика, Базовая единица, Штрихкод, Артикул и т.п. а в обратную сторону при экспорте это все залилось как Общие Свойства Основной номенклатурной группы.
2. При выборке выгружаемых свойств и указании их не выгружать — все равно выгружаются все свойства. Тестировал на читом БУСе. Вываливаются все равно все свойства в каталог и в предложения, хотя в выборке было указано «не  выгружать в товары» «не выгружать в предложения»
3. Двойной код появляется как раз у товаров, которые в 1С были с характеристиками. То есть, если товар был без характеристик, то ему создалась характеристика вида «Товар(Характеристика)» при экспорте и задвоился внешний код при последующем импорте. Причем, если повторить процедуру Экспорт-Импорт, то характеристики опять создаются вида «Товар(Характеристика(Характиристика))» и т.д.

 

Вообще вот не понятен механизм даже выгрузки.

У меня в 1С есть товар: «Смартфон Huawei»
В характеристиках у него есть цвет: «Серебристый»

При выгрузке на сайт получается:
создается товар в инфоблоке «Каталог»: «Смартфон Huawei»
создается предложение в инфоблоке торговых предложений: «Смартфон Huawei» и «Смартфон Huawei (серебристый)»

и вот, кстати, у второго предложения создается как раз двойной внешний код КодТовара#КодХарактеристики

Почему так? Что за предложение «Смартфон Huawei» без цвета, почему оно создается, если нет такой харатеристики у товара? Объясните, пожалуйста, механизм создания товара и предложений

 

Александр Денисюк

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

#24

19.01.2015 18:35:40

Цитата
и вот, кстати, у второго предложения создается как раз двойной внешний код КодТовара#КодХарактеристики

Потому что с сайта приходит КодТовара#КодТовара#КодХарактеристики. Видел такую багу. Должны поправить.

Цитата
mi2mi написал:
Почему так? Что за предложение «Смартфон Huawei» без цвета, почему оно создается, если нет такой харатеристики у товара?

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

Цитата
mi2mi написал:
2. При выборке выгружаемых свойств и указании их не выгружать — все равно выгружаются все свойства. Тестировал на читом БУСе. Вываливаются все равно все свойства в каталог и в предложения, хотя в выборке было указано «не  выгружать в товары» «не выгружать в предложения»

В XML как? Тоже все выгружаются?

 

Александр Денисюк

Администратор

Сообщений: 4915
Баллов: 827
Регистрация: 16.10.2013

#25

19.01.2015 18:47:14

Цитата
Александр Денисюк написал:
mi2mi написал:
2. При выборке выгружаемых свойств и указании их не выгружать — все равно выгружаются все свойства. Тестировал на читом БУСе. Вываливаются все равно все свойства в каталог и в предложения, хотя в выборке было указано «не  выгружать в товары» «не выгружать в предложения»
В XML как? Тоже все выгружаются?

Проверил на модуле 4.0.5.2(для УТ 11.1.9) — в XML все правильно выгружается

Программист 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-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

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

Преимущества механизма XDTO

Этот функционал создавался как удобный инструмент обмена данными между конфигурациями и другими приложениями. Также этот механизм используют для работы с 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С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.

  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 код Выкл.

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

Автор Сообщение

[Post New]26/10/2017 11:02:02

    

Тема: Re:Интеграция с 1С

[Up]

mevgenym

Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312

Оффлайн


VoditelKobyly wrote:Это «Меркурий»!

В нем возможно всё! В том числе и то, что одно и то же предприятие принадлежит разным Хоз.Субъектам.

про связь ХС-предприятия — многие ко многим уже писали

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 26/10/2017 11:02:25

https://github.com/mevgenym/1c_vetis.api_v1.1

https://github.com/mevgenym/1c_vetis.api


[Post New]26/10/2017 13:12:55

    

Тема: Интеграция с 1С

[Up]

Kirillov_A

Зарегистрирован: 26/10/2017 12:44:04
Сообщений: 4

Оффлайн



Здравствуйте коллеги, вызываю метод GetProductItemList(ListOptions,SubProduct_guid,ХС_guid)

Параметры SubProduct и ХС_guid заполнены по схеме «http://api.vetrf.ru/schema/cdm/base», «UUID», значения – соответствующие guid.

Метод выдает ошибку — Ошибка вызова операции сервиса: {http://api.vetrf.ru/schema/cdm/registry/service}roductServiceBindingQSService:GetProductItemList()

по причине:

Ошибка SOAP сервера: Request rejected

С чем может быть связана данная проблема?

XC_guid пробовал и гуиды предприятий и гуиды ХС, тоже самое

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 26/10/2017 13:15:33


[Post New]26/10/2017 15:05:23

    

Тема: Интеграция с 1С

[Up]

mevgenym

Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312

Оффлайн



а так не пробовали?


https://github.com/mevgenym/1c_vetis.api_v1.1

https://github.com/mevgenym/1c_vetis.api


[Post New]26/10/2017 15:17:57

    

Тема: Интеграция с 1С

[Up]

Kirillov_A

Зарегистрирован: 26/10/2017 12:44:04
Сообщений: 4

Оффлайн


mevgenym wrote:а так не пробовали?

Та же ошибка — Ошибка вызова операции сервиса: {http://api.vetrf.ru/schema/cdm/registry/service}roductServiceBindingQSService:GetProductItemList()

по причине:

Ошибка SOAP сервера: Request rejected

У вас этот метод выполняется приведенным кодом? Я уже полез смотреть 2.0 API, там конечно этот метод гораздо лучше реализован… можно получать сразу все наименования по предприятию или ХС, а не как в 1.4 — вид продукции обязательный параметр


[Post New]26/10/2017 15:32:19

    

Тема: Интеграция с 1С

[Up]

mevgenym

Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312

Оффлайн


Kirillov_A wrote:У вас этот метод выполняется приведенным кодом? Я уже полез смотреть 2.0 API, там конечно этот метод гораздо лучше реализован… можно получать сразу все наименования по предприятию или ХС, а не как в 1.4 — вид продукции обязательный параметр

Да. А по 2.0 такой ответ:

При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка проверки данных XDTO:

Значение: » не соответствует простому типу: {http://api.vetrf.ru/schema/cdm/dictionary/v2}GTINType

Несоответствие фасету MinLength = ‘8’

возможно это от справочника зависит, во всяком случае то что возвращает сервер не соответствует их же xsd

https://github.com/mevgenym/1c_vetis.api_v1.1

https://github.com/mevgenym/1c_vetis.api


[Post New]26/10/2017 15:40:55

    

Тема: Re:Интеграция с 1С

[Up]

my.vetrf-forum

Зарегистрирован: 06/09/2017 17:07:57
Сообщений: 297

Оффлайн



Как при создании processIncomingConsignmentRequest заполнять deliveryFacts ?

вот такой список полей приведен:

https://yadi.sk/i/AxzoHRTH3P7nCE

Тип там написан ну а в описании типа совсем другие поля.

или я что-то не понял?


[Post New]27/10/2017 11:54:54

    

Тема: Re:Интеграция с 1С

[Up]

mevgenym

Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312

Оффлайн



Подскажите кто делал BEActivityLocationsModificationOperation v2.0

Непонятно как заполнять activityLocation. Должно быть что то вроде activityLocation.Добавить(<некий объект> ). В <некий объект> должно быть enterprise

Из примера: http://help.vetrf.ru/wiki/ModifyActivityLocationsOperation_v2.0

<vd:activityLocation>

<vd:globalID>7574894948562</vd:globalID>

<vd:globalID>5412345123453</vd:globalID>

<vd:enterprise>

<bs:guid>351d096d-0c5d-46a8-b5b1-67c3e26bff78</bs:guid>

</vd:enterprise>

</vd:activityLocation>

возможно это http://help.vetrf.ru/wiki/ActivityLocation_v2.0

но в xsd его нет

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

Ошибка при вызове метода контекста (Добавить)

пОбъект[пИмяСвойства].Добавить(_Значение);

по причине:

Несоответствие типов XDTO:

Тип ‘{http://api.vetrf.ru/schema/cdm/dictionary/v2}BusinessMember’ не соответствует типу »

Тип свойства не соответствует типу значения

Это сообщение было редактировано 5 раз. Последнее обновление произошло в 27/10/2017 12:02:43

https://github.com/mevgenym/1c_vetis.api_v1.1

https://github.com/mevgenym/1c_vetis.api


[Post New]27/10/2017 12:32:20

    

Тема: Re:Интеграция с 1С

[Up]

mevgenym

Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312

Оффлайн



разобрался, это «Неименованные типы» в xdto

https://github.com/mevgenym/1c_vetis.api_v1.1

https://github.com/mevgenym/1c_vetis.api


[Post New]27/10/2017 19:19:29

    

Тема: Re:Интеграция с 1С

[Up]

Евгений_СК

Зарегистрирован: 06/10/2017 21:49:42
Сообщений: 5

Оффлайн



Добрый день.

Вопрос по ProductItem. В ВЕТИС есть три обязательных уровня продукции — тип продукции, продукция и вид продукции, также производитель (по желанию) может сформировать четвертый уровень — ProductItem, т.е. он может быть, а может и не быть. Но в описании процедуры инвентаризации указано, что в объекте, описывающем партию продукции, ProductItem обязателен: http://help.vetrf.ru/wiki/ResolveDiscrepancyOperation#.D0.9E.D0.B1.D1.8A.D0.B5.D0.BA.D1.82_..Request.2FstockDiscrepancy.2FresultingList.2FstockEntry.2Fbatch.2FproductItem

Представим ситуацию: есть торговое предприятие. На предприятие поступает товар (операция IncomingOperation), в операции поступления для каждой позиции товара есть только три уровня. Затем на предприятии решили сделать инвентаризацию — где брать четвертый уровень, обязательный для этой операции?


[Post New]27/10/2017 19:29:52

    

Тема: Re:Интеграция с 1С

[Up]

Евгений_СК

Зарегистрирован: 06/10/2017 21:49:42
Сообщений: 5

Оффлайн



И вдогонку еще один вопрос: правильно ли я понимаю, что для предприятия, торгующего продукцией, актуальны три операции ВЕТИС:

1. Оформление входящей партии (IncomingOperation): http://help.vetrf.ru/wiki/IncomingOperation — это когда товар от поставщика приходит на склад торгового предприятия;

2. Инвентаризация (ResolveDiscrepancyOperation): http://help.vetrf.ru/wiki/ResolveDiscrepancyOperation

3. оформление транспортной партии (TransportOperation): http://help.vetrf.ru/wiki/TransportOperation — когда торговое предприятие продает товар.



[Post New]30/10/2017 12:23:13

    

Тема: Re:Интеграция с 1С

[Up]

serg882

Зарегистрирован: 26/10/2017 11:52:09
Сообщений: 166

Оффлайн



Кто-нибудь делал запросы на API 2.0 по продукции поставщика GetProductItemList v2.0 (по суб продуктам GetSubProductByGuid нормально отрабатывает на сервисе ProductService)?

Запрос на platform/services/ProductService:

выдает ошибку: Error parsing XML: {err}FORG0005: expected exactly one item, got 0 items.

На странице вики есть пример запроса по суб продукту (http://help.vetrf.ru/wiki/GetProductItemList_v2.0).

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 30/10/2017 12:25:57


[Post New]30/10/2017 14:06:54

    

Тема: Re:Интеграция с 1С

[Up]

mevgenym

Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312

Оффлайн



у меня на GetProductItemList в 2.0 по прежнему ошибка:

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

Значение: » не соответствует простому типу: {http://api.vetrf.ru/schema/cdm/dictionary/v2}GTINType

Несоответствие фасету MinLength = ‘8’

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

https://github.com/mevgenym/1c_vetis.api_v1.1

https://github.com/mevgenym/1c_vetis.api


[Post New]30/10/2017 14:30:39

    

Тема: Re:Интеграция с 1С

[Up]

Sergey-Chelny

[Avatar]

Зарегистрирован: 07/09/2017 17:33:44
Сообщений: 101

Оффлайн



Использую ВетИС 1.4 .

Под учетной записью ХС смог отправить «свинья живок (0106)- 7 голов другому ХС без подтверждения (без отметок ГВЭ). Это нормально ? На бланке указано что выдал ВСД сам ХС.

Разве может один ХС самостоятельно передавать другому ХС живых животных без ГВЭ ?

Как через АПИ передаёте между ХС живых животных ?

Кто хочет, тот ищет возможности, кто не хочет — ищет причины.


[Post New]30/10/2017 15:05:42

    

Тема: Re:Интеграция с 1С

[Up]

Корнетт

[Avatar]

Зарегистрирован: 19/09/2017 17:57:20
Сообщений: 383

Оффлайн



По моему это полный косяк чей-то. Конечно живых нельзя без ГВЭ. Через АПИ модуль на живых только в разработке у программистов, пока только продукция.


[Post New]30/10/2017 15:06:53

    

Тема: Re:Интеграция с 1С

[Up]

Stepa86

Зарегистрирован: 03/11/2016 09:22:58
Сообщений: 12

Оффлайн


mevgenym wrote:у меня на GetProductItemList в 2.0 по прежнему ошибка:

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

Значение: » не соответствует простому типу: {http://api.vetrf.ru/schema/cdm/dictionary/v2}GTINType

Несоответствие фасету MinLength = ‘8’

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

Поле GTIN или не заполняй или там должна быть строка от 8 до 14 символов. На пустую строку вот так ругается.


 

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

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

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

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