Саппорт ответил, что 1С не отправляет причину отмены обратно.
Пришлось изучить вопрос парсинга.
Как делал
Создал папку, кинул туда xml-файл одинэсовский, обозвал его "one.xml" и для извлечения причины изменил один блок на "Забрать", ибо не знаю как достучаться до нужного места:
В эту же папку положил php:
Причина отмены добавляется в заказ и уходит письмо юзеру со статусом и причиной.
Что не понятно
1. Не получается стучаться в директорию /upload/1c_exchange/ ($xml = simplexml_load_file("/upload/1c_exchange/one.xml")
2. Получившийся php надо запускать по крону или пихать в какое-то событие?
3. Как открывать xml, у которого меняется часть имени?
4. Можно не менять ЗначениеРеквизита на Забрать и как к нему обратиться?
Пришлось изучить вопрос парсинга.
Как делал
Создал папку, кинул туда 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. Можно не менять ЗначениеРеквизита на Забрать и как к нему обратиться?