вторник, 25 октября 2016 г.

1C и Бтирикс обменССайтом


Столкнулся с проблемой того, что заказы из 1С не выгружались в горячо любимый битрикс.
В логах последней строчкой значилось:
24.10.2016 20:38:42--Отправка запроса на получение заказов с сайта.

А сам модуль ругался следующей ошибкой: "Ошибка преобразования данных XML"

Как подсказывает справка 1С:
Ошибка возникает вследствие нарушения структуры передаваемых данных.
При чтении данных XML платформой производится автоматическое определение типа получаемых данных, кроме случаев, когда тип данных указан при вызове операции чтения. Если структура данных XML не соответствует структуре данных, определяемых типом, то будет сгенерировано данное сообщение об ошибке.
При обмене данными в рамках распределенной информационной базы используются штатные механизмы записи/чтения XML. Данная ошибка является следствием искажения сообщения обмена. Необходимо повторно получить сообщение от информационной базы - источника сообщения
И тут у меня возникла потребность посмотреть это XML который формирует Битрикс.
Сделать это можно следующим способом:

1)Сначала нужно выполнить
http://site.ru/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
Получим строку вида:
success PHPSESSID 7e04c902dae597bf3b37eb70a5b970cc sessid=9e4d5d127a28d8015610171925121398
Этот запрос посылает модуль обмена для проверки аутентификации.
От сюда возьмем sessid, он потребуется для следующих 2х запросов.

2)Запрос на проверку параметров
http://site.ru/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=9e4d5d127a28d8015610171925121398&version=2.08
Он будет полезен для диагностики некоторых проблем, например из него можно узнать максимальный размер передаваемого файла (file_limit=204800).

3)Запрос выдаст нам передаваемый сайтом XML файл содержащий заказы.
http://site.ru/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=9e4d5d127a28d8015610171925121398

Далее образец XML файла




<КоммерческаяИнформация ВерсияСхемы="2.05" ДатаФормирования="2011-05-26T15:21:14" ФорматДаты="ДФ=yyyy-MM-dd; ДЛФ=DT" ФорматВремени="ДФ=ЧЧ:мм:сс; ДЛФ=T" РазделительДатаВремя="T" ФорматСуммы="ЧЦ=18; ЧДЦ=2; ЧРД=." ФорматКоличества="ЧЦ=18; ЧДЦ=2; ЧРД=."> <Документ> <Ид>839F810C-8795-11E0-AD8D-88AB4824019B</Ид> <Номер>5</Номер> <Дата>2011-05-26</Дата> <ХозОперация>Заказ товара</ХозОперация> <Роль>Продавец</Роль> <Валюта>руб</Валюта> <Курс>1</Курс> <Сумма>22100.00</Сумма> <Контрагенты> <Контрагент> <Ид>4DE6F5F8-878C-11E0-9D3B-6EA04824019B</Ид> <Наименование>ООО "Успех"</Наименование> <ОфициальноеНаименование></ОфициальноеНаименование> <ЮридическийАдрес> <Представление></Представление> </ЮридическийАдрес> <Роль>Покупатель</Роль> </Контрагент> </Контрагенты> <Время>14:16:19</Время> <Комментарий></Комментарий> <Товары> <Товар> <Ид>55</Ид> <ИдКаталога></ИдКаталога> <Наименование>Каркас кровати</Наименование> <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт </БазоваяЕдиница> <ЦенаЗаЕдиницу>10000.00</ЦенаЗаЕдиницу> <Количество>1.00</Количество> <Сумма>10000</Сумма> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>ВидНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>ТипНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Товар> <Товар> <Ид>56</Ид> <ИдКаталога></ИдКаталога> <Наименование>Мальм 3</Наименование> <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт </БазоваяЕдиница> <Скидки> <Скидка> <Наименование>Скидка на товар</Наименование> <Сумма>900.00</Сумма> <УчтеноВСумме>true</УчтеноВСумме> </Скидка> </Скидки> <ЦенаЗаЕдиницу>5100.00</ЦенаЗаЕдиницу> <Количество>1.00</Количество> <Сумма>5100</Сумма> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>ВидНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>ТипНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Товар> <Товар> <Ид>477</Ид> <ИдКаталога></ИдКаталога> <Наименование>Стол и 4 стула</Наименование> <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт </БазоваяЕдиница> <ЦенаЗаЕдиницу>7000.00</ЦенаЗаЕдиницу> <Количество>1.00</Количество> <Сумма>7000</Сумма> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>ВидНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>ТипНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Товар> </Товары> </Документ> </КоммерческаяИнформация>


У меня была проблема в лишнем передаваемом тэге <Дата1с>2016-10-21</Дата1с>
Успеха ;)