Саппорт ответил, что 1С не отправляет причину отмены обратно.
Пришлось изучить вопрос парсинга.
Как делалСоздал папку, кинул туда xml-файл одинэсовский, обозвал его "one.xml" и для извлечения причины изменил один блок на "Забрать", ибо не знаю как достучаться до нужного места:
Код |
---|
?<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация xmlns="urn:1C.ru:commerceml_2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ВерсияСхемы="2.08" ДатаФормирования="2018-09-14T10:52:31">
<Документ>
<Ид>20038</Ид>
<НомерВерсии>AAAAAAWUUUc=</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Номер>Q-20033</Номер>
<Номер1С>ХРCB-ХР0512</Номер1С>
<Дата>2018-09-19</Дата>
<Дата1С>2018-09-19</Дата1С>
<Время>11:26:31</Время>
<ХозОперация>Заказ товара</ХозОперация>
<Контрагенты>
<Контрагент>
<Ид>4307#почта@bk.ru#Барышев Артём </Ид>
<НомерВерсии>AAAAAAWUUUM=</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Наименование>Артём</Наименование>
<ПолноеНаименование>Артём</ПолноеНаименование>
<Роль>Покупатель</Роль>
<ИНН/>
<КПП/>
<КодПоОКПО/>
</Контрагент>
</Контрагенты>
<Валюта>руб</Валюта>
<Курс>1.0000</Курс>
<Сумма>0</Сумма>
<Роль>Продавец</Роль>
<Комментарий>[Номер документа на сайте: Q-20033] </Комментарий>
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Наименование>Проведен</Наименование>
<Значение>true</Значение>
</ЗначениеРеквизита>
<Забрать>
<ПричинаОтмены>Причина Отмены</ПричинаОтмены>
<Информация>Обычная причина</Информация>
</Забрать>
<ЗначениеРеквизита>
<Наименование>Статуса заказа ИД</Наименование>
<Значение>no</Значение>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
</Документ>
<Документ>
<Ид>20039</Ид>
<НомерВерсии>AAAAAAWUUUc=</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Номер>Q-20033</Номер>
<Номер1С>ХРCB-ХР0512</Номер1С>
<Дата>2018-09-19</Дата>
<Дата1С>2018-09-19</Дата1С>
<Время>11:26:31</Время>
<ХозОперация>Заказ товара</ХозОперация>
<Контрагенты>
<Контрагент>
<Ид>4307#почта@bk.ru#Барышев Артём </Ид>
<НомерВерсии>AAAAAAWUUUM=</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Наименование>Артём</Наименование>
<ПолноеНаименование>Артём</ПолноеНаименование>
<Роль>Покупатель</Роль>
<ИНН/>
<КПП/>
<КодПоОКПО/>
</Контрагент>
</Контрагенты>
<Валюта>руб</Валюта>
<Курс>1.0000</Курс>
<Сумма>0</Сумма>
<Роль>Продавец</Роль>
<Комментарий>[Номер документа на сайте: Q-20033] </Комментарий>
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Наименование>Проведен</Наименование>
<Значение>true</Значение>
</ЗначениеРеквизита>
<Забрать>
<ПричинаОтмены>Причина Отмены</ПричинаОтмены>
<Информация>Какая разница?</Информация>
</Забрать>
<ЗначениеРеквизита>
<Наименование>Статуса заказа ИД</Наименование>
<Значение>no</Значение>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
</Документ>
</КоммерческаяИнформация> |
В эту же папку положил php:
Код |
---|
$xml = simplexml_load_file("one.xml");
foreach($xml->Документ as $item){
$or_id = $item->Ид;
$or_reason = $item->ЗначенияРеквизитов->Забрать->Информация;
CSaleOrder::CancelOrder($or_id, "Y", $or_reason);
} |
Причина отмены добавляется в заказ и уходит письмо юзеру со статусом и причиной.
Что не понятно1. Не получается стучаться в директорию /upload/1c_exchange/ ($xml = simplexml_load_file("/upload/1c_exchange/one.xml")
2. Получившийся php надо запускать по крону или пихать в какое-то событие?
3. Как открывать xml, у которого меняется часть имени?
4. Можно не менять
ЗначениеРеквизита на
Забрать и как к нему обратиться?