|
|||
| _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) |
||
|
Beretta 5 — 11.07.16 — 14:51 |
(4) Также можешь поиметь проблемы внутри сайта, который не ожидает строки больше чем 1000 символов. Видимо, в 1С посчитали, что выгружать доп.реквизиты строкового типа с длиной строки более 1000 символов никто и никогда не будет. |
![]() |
|
TurboConf — расширение возможностей Конфигуратора 1С |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекомендуемые сообщения
-
- Жалоба
- Поделиться
При синхронизации выходит такая ошибка в 1С ==прикрепил скрин==
В MySQL внёс изменения расширения текста ==прикрепил скрин==
Подскажите пожалуйста, в какую сторону капать? 1С или Simpla?
И как я понял, эта ошибка возникает, так как много символов в описании товара.
![]()
![]()
Изменено 30 сентября, 2016 пользователем Chudo
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
- Автор
-
- Жалоба
- Поделиться
При синхронизации выходит такая ошибка в 1С ==прикрепил скрин==
В MySQL внёс изменения расширения текста ==прикрепил скрин==
Подскажите пожалуйста, в какую сторону капать? 1С или Simpla?
И как я понял, эта ошибка возникает, так как много символов в описании товара.
Сейчас выяснил, что проблема не в количестве символов, а в размере картинки. Подскажите пожалуйста, как изменить значение максимально загружаемого изображения. Так как часть картинок грузятся хорошо, а с некоторыми такая беда.
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
![]()
-
- Жалоба
- Поделиться
Параметры PHP
max_file_uploads
post_max_size
upload_max_filesize
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
- Автор
-
- Жалоба
- Поделиться
Параметры PHP
max_file_uploads
post_max_size
upload_max_filesize
Kors, премного благодарен за ответ
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
- Автор
-
- Жалоба
- Поделиться
Параметры 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, попробовал способ, не помогло. При добавлении в .htaccess значения в info.php меняется на 32mb, по умолчанию 64mb. Но тем не менее при синхронизации опять та же ошибка.
Ты написал, написать хостеру. Подскажи пожалуйста, что я у них должен уточнить?
Или может быть есть другие косяки?
![]()
Изменено 1 октября, 2016 пользователем Chudo
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
![]()
-
- Жалоба
- Поделиться
…при синхронизации опять та же ошибка.
Та же — это какая?
1. На картинке 1-го поста ИЛИ
2. «…часть картинок грузятся хорошо, а с некоторыми такая беда.» ИЛИ
3. еще что другое?
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
- Автор
-
- Жалоба
- Поделиться
Та же — это какая?
1. На картинке 1-го поста ИЛИ
2. «…часть картинок грузятся хорошо, а с некоторыми такая беда.» ИЛИ
3. еще что другое?
Ошибка такая же. Вот сейчас удалил из 1С картинку этого товара (что на первом скрине) и вылезла следующая ошибка (прикрепил скрин) У меня подозрение, что дело в картинке, потому что в конце картинки стоит «#», и если я отключаю синхронизацию с картинками, то всё синхронизируется хорошо.
2. Да, часть грузится нормально с картинками, а вот конкретные товары вызывают ошибку.
![]()
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
![]()
- Автор
-
- Жалоба
- Поделиться
Ну снова будет пробовать) Спасибо тебе ещё раз)
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
- Автор
-
- Жалоба
- Поделиться
Спасибо большое Kors, проблема была в 1С. Решили проблему копаясь в конфигах 1С.
- Цитата
Ссылка на сообщение
Поделиться на другие сайты
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже.
Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
|
УТ 11.1.7.54. Модуль 4.0.3.1 |
|
|
Администратор Сообщений: 4915 |
у вас некорректный ид предложения. Он должен быть макс 80 символов, у вас же по каким то причинам он почти в 2 раза больше. |
|
Странно. Как я уже сказал, был просто полный импорт с сайта через помощник в пустую базу. |
|
|
Выяснил, что у меня на сайте у ВСЕХ предложений коды длинные в виде 5484bff7-6844-465c-a084-6b5193002387#5484bff7-6844-465c-a084-6b5194003943 Выходит, на каком-то этапе что-то работает нелогично: |
|
|
Пользователь 150122 Заглянувший Сообщений: 23 |
#6 02.09.2014 16:40:08
Обработка которая отсекает — пишется за 5 минут на коленке. Выбираем все идентификаторы отрезаем в каждом идентификаторе текст до «#» включительно и записываем на место. Задачка для начинающего уровня программиста 1С ))) |
||
|
Пользователь 236163 Заглянувший Сообщений: 41 |
#7 02.09.2014 16:46:38
Вот и мне так кажется. |
||
|
Пользователь 236163 Заглянувший Сообщений: 41 |
#8 04.09.2014 18:21:53 В мастере загрузки с сайта в функции ОбработатьЗначениеЭлемента есть такой кусок:
Что-то мне подсказывает, что в последней строке должно быть «=ПраваяЧасть;». |
||
|
Пользователь 236163 Заглянувший Сообщений: 41 |
#9 04.09.2014 20:46:41
Не знаю пока, даст ли правка кода что-то, решил попробовать повторный импорт. Битрикс у меня обновленный, без правок ядра, лицензионный и т.п. Интересно, это у всех так же? |
||
|
В общем за ночь измененный помощник отработал, все загрузилось. У характеристик теперь код 1С такой, как должен — содержит только код предложения. Что-то руки постепенно опускаются… |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#11 05.09.2014 18:18:58
Возможно у вас куча ненужных свойств выгружается. Можете их ограничить через отбор. Или куча предложений, их тоже можно ограничить. Но если это 1 пакет, от дело в свойствах. |
||
|
Свойств 430 штук. Но они все нужные. Причем в выгружаемой группе используются не более 10 из них, и стоит галочка «выгружать только используемые». Но это сейчас, для экономии времени. А вот когда будет выгружаться весь каталог… Но вообще все как-то странно в мире 1С/Битрикс. Интересно, если поставить 64-битную платформу, 1С будет использовать всю доступную память, по-прежнему только 1,5 гига? |
|
|
1С тут не причем ))) думается мне — все дело в не оптимальных алгоритмах и чрезмерно использовании таблиц размещенных в памяти. Причиной тому разработка обмена и тестирование на очень маленьких базах данных — где все эти подводные камни просто не всплывают! |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#14 08.09.2014 11:29:57
Да, из за этого и проблема.
Сказки. Ну или другая база, с другими данными базы 1С. как например выше: свойства вида номенклатуры и индивидуальные свойства.. И да, самописная прога всегда(если написана не коряво) будет работать быстрее типового решения, т.к. там много что не учитывается.
Ну предложите что нить пооптимальнее. Я посмотрю, может и заоптимизирую.
Тестируется на разных базах. В том числе и на больших. |
||||||||
|
Пользователь 236163 Заглянувший Сообщений: 41 |
#15 08.09.2014 12:42:57
Вы напрасно так резко. А цифры все реальные на 100%. Вы думаете, зачем я то одну опцию включаю, то другую? Просто надеюсь нащупать вариант, который будет быстрее. Неужели Вам меня не жалко — какие-то 3500 товаров импортируются полдня? Представляете, сколько дней такии темпами понадобится, чтобы все отладить? А сколько (десятков) раз процесс выпадал посередине то с ошибкой, то молча? Это какие нервы иметь надо! А Вы говорите «сказки»…
А почему из-за этого проблема? Зачем тогда вообще эта опция? Там даже указано «рекомендуется» выбирать общие характеристики. Тогда надо в инструкции к модулю крупно написать «Перед импортом каталога с сайта удостоверьтесь, что включена опция индивидуальных характеристик» или что-то такое.
А как их оптимально хранить? Я бы с удовольствием, но как? В битриксе у товаров есть свойства. Там и храню. Товаров 30 видов, у всех разные свойства, всего 430 штук свойств. Как их по-другому хранить, чтобы обмен быстрее шел? Какие еще варианты? Я искренне прошу рекомендаций, но пока не вижу. Буду на днях пытаться на xeone и ssd пробовать, глядишь, может шустрее ворочаться будет. По исправлению в коде, описанному выше, очень хотел Ваше мнение узнать. |
||||||||
|
Александр Денисюк
Администратор Сообщений: 4915 |
#16 08.09.2014 15:00:14
Опишу поподробнее, почему возникает ошибка нехватка памяти из за неправильного хранения свойств: В самом же начале вываливается ошибка из за того, что собирается массив значений всех выгружаемых свойств всех выгружаемых товаров для служебной обработки данных. Где будет работать шустрее — я думаю понятно. |
||||
|
Администратор Сообщений: 4915 |
И вообще, со свойствами большой затык. Я не могу их выгружатьпопакетно. Всегда все свойства выгружаются в первом пакете(товары выгружаются начиная с второго пакета). И если свойств очень много, то и будут возникать проблемы с памятью. |
|
Спасибо за ответы, теперь понятно. |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#19 08.09.2014 17:07:43
Пока да, в новой версии экспорта это будет поправлено. Когда он будет — пока сказать не могу. |
||
|
прочитал ветку и не понял что-где править нужно? До экспорта на чистый БУС выгружались товары с 1с без проблем этим же модулем, все работало. Но требуется периодически загружать новую номенклатуру с БУСа, так как контент-менеджер удаленно наполняет сайт контентом, добавляет товары с картинками…с БУСа в 1с экспорт прошел без проблем, а после экспорта выгрузка товаров на сайт падает на этапе «Выгрузка предложений в ХМЛ»…настройки обмена выгрузки товаров не менялись… Что делать? Знаний по обмену ХМЛ файлами нет, где правятся загрузки-выгрузки тоже не знаю( З.Ы.: При попытке выгрузки первое падение идет на предложениях — отключил выгрузку предложений, упал обмен на ценах — отключил цены, упал на обмене остатков- отключил остатки, далее все прошло успешно…собственно после экспорта теперь обмен работает без предложений, остатков и цен….как все вернуть обратно?! =( |
|
|
Администратор Сообщений: 4915 |
Проверьте коды битрикс у загруженных предложений. Скорее всего он у вас хранит в себе связку ид товара# ид предложения.А должен хранить только ид предложения. |
|
Пользователь 216358 Заглянувший Сообщений: 14 |
#22 19.01.2015 15:51:01
Да, так и есть. Только вот последующие эксперименты привели в полному замусориванию базы в 1с. Дело в том, что изначально на пустой БУС выгружались товары с 1с. Далее добавили товар в БУСе, и сделали Экспорт в 1С. После экспорта появились двойные внешние коды (плюс какие-то пустые характеристики и реквизиты в свойствах) и теперь, даже удалив их через «Редактирование кодов битрикса» при обмене двойные коды остаются. Причем при экспорте по насоздавались характеристики товара в 1с, даже у тех товаров, у которых не включена галочка «использовать характеристики». Так что туда-сюда (экспорт-импорт) обмен совсем не дружит друг с другом. Попытавшись почистить все лишнее (созданное при экспорте) ручками столкнулся с проблемой, что некоторые данные привязаны только к обмену и как это вычистить не понятно, даже удалив обмен (через который происходила выгрузка) остались лишние хвосты непонятных свойств и характеристик…что теперь делать даже не знаю…База, с которой работала выгрузка испорчена по сути( Обнаруженные нюансы: |
||
|
Вообще вот не понятен механизм даже выгрузки. У меня в 1С есть товар: «Смартфон Huawei» При выгрузке на сайт получается: и вот, кстати, у второго предложения создается как раз двойной внешний код КодТовара#КодХарактеристики Почему так? Что за предложение «Смартфон Huawei» без цвета, почему оно создается, если нет такой харатеристики у товара? Объясните, пожалуйста, механизм создания товара и предложений |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#24 19.01.2015 18:35:40
Потому что с сайта приходит КодТовара#КодТовара#КодХарактеристики. Видел такую багу. Должны поправить.
Потому что с сайта оно выгружается как предложение.
В XML как? Тоже все выгружаются? |
||||||
|
Александр Денисюк
Администратор Сообщений: 4915 |
#25 19.01.2015 18:47:14
Проверил на модуле 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 пакеты - Импорт присланной схемы. Когда нам присылают данные, их схема может оказаться какой угодно, особенно, если раньше мы не работали с источником. Сильно упростит ситуацию, если вместе с 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-пакетов и настроим его следующим образом:
- Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
- Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:
- Определение схемы будущей XML;
ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура"); - Заполнение свойств номенклатуры;
Номенклатура = ФабрикаXDTO.Создать(ТипФабрики); Номенклатура.Наименование = "Тест XML"; Номенклатура.Артикул = "2"; - Создание нового 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С самостоятельно может распознать все свойства.

Лучше все-таки не рассчитывать на понятливость платформы 1С, а использовать точную схему XML. Многие специалисты используют сторонний софт для их создания, но для этого необходим достаточно большой опыт и уровень подготовки. Работа с пакетами XDTO требует внимания и соблюдения точного соответствия файлов заданной схеме, чтобы минимизировать возможные ошибки.
Исправление ошибок
Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.
Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:
- Ошибки в обновлении платформы или конфигурации;
- Обмен между базами разных версий;
- Недочеты в алгоритме приема данных;
- Проблемы с временной памятью конкретного компьютера.
Чтобы исправить эту ошибку, сначала почистите кэш или удалите, а также заново добавьте информационную базу в список баз. Затем внимательно проверьте файл XML – вдруг случайно сделали ошибку в его тексте, проверьте соответствие структуры пакету XDTO. Если ошибка появилась после обновления, сделайте тестирование и исправление ИБ, сохранив перед этим резервную копию базы. Если проблема не уйдет, вернитесь на предыдущую версию и подождите, пока разработчики 1С не разберутся с этой проблемой.

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

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

На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.
-
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 код Выкл.
Правила форума
| Автор | Сообщение |
|---|---|
|
Тема: Re:Интеграция с 1С
|
|
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн
|
про связь ХС-предприятия — многие ко многим уже писали Это сообщение было редактировано 1 раз. Последнее обновление произошло в 26/10/2017 11:02:25 |
| https://github.com/mevgenym/1c_vetis.api_v1.1 https://github.com/mevgenym/1c_vetis.api |
|
|
|
|
|
Тема: Интеграция с 1С
|
|
|
Kirillov_A
Зарегистрирован: 26/10/2017 12:44:04 Оффлайн
|
Здравствуйте коллеги, вызываю метод GetProductItemList(ListOptions,SubProduct_guid,ХС_guid)
Параметры SubProduct и ХС_guid заполнены по схеме «http://api.vetrf.ru/schema/cdm/base», «UUID», значения – соответствующие guid. С чем может быть связана данная проблема? XC_guid пробовал и гуиды предприятий и гуиды ХС, тоже самое Это сообщение было редактировано 1 раз. Последнее обновление произошло в 26/10/2017 13:15:33 |
|
|
|
|
Тема: Интеграция с 1С
|
|
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн
|
а так не пробовали? |
| https://github.com/mevgenym/1c_vetis.api_v1.1 https://github.com/mevgenym/1c_vetis.api |
|
|
|
|
|
Тема: Интеграция с 1С
|
|
|
Kirillov_A
Зарегистрирован: 26/10/2017 12:44:04 Оффлайн
|
Та же ошибка — Ошибка вызова операции сервиса: {http://api.vetrf.ru/schema/cdm/registry/service} У вас этот метод выполняется приведенным кодом? Я уже полез смотреть 2.0 API, там конечно этот метод гораздо лучше реализован… можно получать сразу все наименования по предприятию или ХС, а не как в 1.4 — вид продукции обязательный параметр |
|
|
|
|
Тема: Интеграция с 1С
|
|
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн
|
Да. А по 2.0 такой ответ:
возможно это от справочника зависит, во всяком случае то что возвращает сервер не соответствует их же xsd |
| https://github.com/mevgenym/1c_vetis.api_v1.1 https://github.com/mevgenym/1c_vetis.api |
|
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
my.vetrf-forum
Зарегистрирован: 06/09/2017 17:07:57 Оффлайн
|
Как при создании processIncomingConsignmentRequest заполнять deliveryFacts ?
вот такой список полей приведен: или я что-то не понял? |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн
|
Подскажите кто делал BEActivityLocationsModificationOperation v2.0 Непонятно как заполнять activityLocation. Должно быть что то вроде activityLocation.Добавить(<некий объект> ). В <некий объект> должно быть enterprise Из примера: http://help.vetrf.ru/wiki/ModifyActivityLocationsOperation_v2.0
возможно это http://help.vetrf.ru/wiki/ActivityLocation_v2.0 ошибка при добавлении всегда одна
Это сообщение было редактировано 5 раз. Последнее обновление произошло в 27/10/2017 12:02:43 |
| https://github.com/mevgenym/1c_vetis.api_v1.1 https://github.com/mevgenym/1c_vetis.api |
|
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн
|
разобрался, это «Неименованные типы» в xdto |
| https://github.com/mevgenym/1c_vetis.api_v1.1 https://github.com/mevgenym/1c_vetis.api |
|
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
Евгений_СК
Зарегистрирован: 06/10/2017 21:49:42 Оффлайн
|
Добрый день. Вопрос по 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), в операции поступления для каждой позиции товара есть только три уровня. Затем на предприятии решили сделать инвентаризацию — где брать четвертый уровень, обязательный для этой операции? |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
Евгений_СК
Зарегистрирован: 06/10/2017 21:49:42 Оффлайн
|
И вдогонку еще один вопрос: правильно ли я понимаю, что для предприятия, торгующего продукцией, актуальны три операции ВЕТИС: 1. Оформление входящей партии (IncomingOperation): http://help.vetrf.ru/wiki/IncomingOperation — это когда товар от поставщика приходит на склад торгового предприятия; 2. Инвентаризация (ResolveDiscrepancyOperation): http://help.vetrf.ru/wiki/ResolveDiscrepancyOperation 3. оформление транспортной партии (TransportOperation): http://help.vetrf.ru/wiki/TransportOperation — когда торговое предприятие продает товар. |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
serg882
Зарегистрирован: 26/10/2017 11:52:09 Оффлайн
|
Кто-нибудь делал запросы на 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 |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн
|
у меня на GetProductItemList в 2.0 по прежнему ошибка:
справку кстати обновили сегодня |
| https://github.com/mevgenym/1c_vetis.api_v1.1 https://github.com/mevgenym/1c_vetis.api |
|
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
Sergey-Chelny
Зарегистрирован: 07/09/2017 17:33:44 Оффлайн
|
Использую ВетИС 1.4 . Под учетной записью ХС смог отправить «свинья живок (0106)- 7 голов другому ХС без подтверждения (без отметок ГВЭ). Это нормально ? На бланке указано что выдал ВСД сам ХС. Разве может один ХС самостоятельно передавать другому ХС живых животных без ГВЭ ? Как через АПИ передаёте между ХС живых животных ? |
| Кто хочет, тот ищет возможности, кто не хочет — ищет причины. | |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
Корнетт
Зарегистрирован: 19/09/2017 17:57:20 Оффлайн
|
По моему это полный косяк чей-то. Конечно живых нельзя без ГВЭ. Через АПИ модуль на живых только в разработке у программистов, пока только продукция. |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
Stepa86
Зарегистрирован: 03/11/2016 09:22:58 Оффлайн
|
Поле GTIN или не заполняй или там должна быть строка от 8 до 14 символов. На пустую строку вот так ругается. |
|
|
|
|
|


roductServiceBindingQSService:GetProductItemList()