Смена метода доставки у заказа на сайте при выгрузке из 1с, Не производится смена службы доставки при выгрузке из 1с на сайт по настроенному соответствию
Никому не интересна миграция службы доставки или это не работает или каждый уже костыль под себя сделал? Разве не заявлена двусторонняя миграция службы доставки?
Bon giorno, Aleksey! Я специально не тестировал случай "если из 1С передать в БУС службу доставки", потому что пока такие потребности у клиентов не встречались. Ради спортивного интереса я проверю. Но дело в том, что в 1С в принципе нет справочника "Службы доставки", а те поля, которые есть "Статус", "Состояние заказа" - они во первых имеют тип "перечисления", а во вторых меняются алгоритмом самой 1С, поэтому то сопоставление, которое есть в 1С смысла не имеет. В вашем случае единственный нормальный вариант - это создать справочник "Службы доставки", добавить в 1С-Заказ поле "Служба доставки", заполнить справочник "Службы доставки" элементами из Битрикс и что бы в них кода совпадали. Когда заказ приходит из Битрикса в 1С, то устанавливать это поле. Когда кто-нибудь меняет поле "Служба доставки" в 1С-заказе то в случае режима реального времени 1С делает пост-запрос к Битриксу-скрипту, который отдельный и не имеет отношения к его модулю обмена, и меняет службу доставки именно этого заказа. Этот скрипт меняет в Битрикс-заказе поле "DELIVERY_ID". Если система работает не в режиме реального времени, то в 1С-заказе можно запрограммировать механизм, который отслеживает изменение поля "Служба доставки". Потом когда запускается очередной обмен 1С-процедура собирает данные в каком заказе поменялось поле "СлужбаДоставки" и отправляет эти изменения в Битрикс-скрипт. Например, в json_формате это может выглядеть так [{"order_num":"324","delivery_id":"23"},{"order_num":"328","delivery_id":"13"}]
Вадим Нурутдинов написал: Bon giorno, Aleksey! Я специально не тестировал случай "если из 1С передать в БУС службу доставки", потому что пока такие потребности у клиентов не встречались. Ради спортивного интереса я проверю. Но дело в том, что в 1С в принципе нет справочника "Службы доставки", а те поля, которые есть "Статус", "Состояние заказа", "Способ доставки" - они во первых имеют тип "перечисления", а во вторых меняются алгоритмом самой 1С, поэтому то сопоставление, которое есть в 1С смысла не имеет. В вашем случае единственный нормальный вариант - это создать справочник "Службы доставки", добавить в 1С-Заказ поле "Служба доставки", заполнить справочник "Службы доставки" элементами из Битрикс и что бы в них кода совпадали. Когда заказ приходит из Битрикса в 1С, то устанавливать это поле. Когда кто-нибудь меняет поле "Служба доставки" в 1С-заказе то в случае режима реального времени 1С делает пост-запрос к Битриксу-скрипту, который отдельный и не имеет отношения к его модулю обмена, и меняет службу доставки именно этого заказа. Этот скрипт меняет в Битрикс-заказе поле "DELIVERY_ID". Если система работает не в режиме реального времени, то в 1С-заказе можно запрограммировать механизм, который отслеживает изменение поля "Служба доставки". Потом когда запускается очередной обмен 1С-процедура собирает данные в каком заказе поменялось поле "СлужбаДоставки" и отправляет эти изменения в Битрикс-скрипт. Например, в json_формате это может выглядеть так [{"order_num":"324","delivery_id":"23"},{"order_num":"328","delivery_id":"13"}]. Интересно, где это заявлено двух-сторонняя синхронизация службы доставки, если она в принципе не сделана, так как такого поля нет в 1С? Тут есть еще один нюанс. В своем вопросе вы упомянули "Способ доставки". Непонятно какое именно поле вы хотите переносить. В Битриксе есть "Статус доставки" и есть "Служба доставки". Если вы имели в виду "Статус доставки", то тут такие нюансы - в Битриксе - это справочник, который вы можете сами пополянять, а в 1С это перечисление, которое очень не желательно пополнять. Поэтому если речь идет о Битрикс-статусе-доставки, то тоже лучше в 1С добавить справочник и сделать аналогично службе доставке