Столкнулся с каскадной ошибкой не позволяющей пользователю магазина самостоятельно отменить заказ через личный кабинет и создающая неправильные данные о заказе в магазине и в 1С. Опишу эту багу:
1. Пользователь отменил заказ на сайте, нажав на ссылку "Отменить" в управление своими заказами. Во время обмена заказами, эта информация ушла в 1С. в 1С установился флаг "Отменено" в дополнительных сведениях в "true", позиции отметились отменнеными (стали "серыми" ). Пока все ок.
2. Происходит еще один обмен заказами (полный). Так как в этом заказе есть отмененные позиции 1С их не передает. Магазин принимает измененный состав товаров этого заказа. И в этом заказе на стороне Битрикса пропадают все позиции.
Далее в компоненте sale.export.1c есть поверка на наличие реквизита "ПометкаУдаления", если он есть, то ставим флаг Отменено в правду, если нет - то в ложь. Так как заказ в 1С не был помечен к удалению, Битрикс восстанавливает этот заказ в действующие, т.е. отменяет отмену.
3. Происходит еще один обмен заказами. В 1С идет информация о заказе, который не отменен (флаг Отменен = false) и с пустым списком товаров (там может появится одна позиция - доставка).
В итоге, через два автоматизированных обмена мы имеем и на стороне магазина, и на стороне 1С, пустые заказы. И оба не являются отмененными и имеют какой-то активный статус. Обмен заказами может происходит довольно часто, по расписанию. У меня это происходит раз в 15 минут. Таким образом через 30 минут, в автоматическом режиме, после отмены пользователем заказа, пропадает всякая информация о составе товара и о самом факте отмены...
Скажите кто-нибудь сталкивался с этой проблемой? Какие были решения? Понимаю, что нужно лезть в события в CSaleOrder: CancelOrder().
UPD: на стротоне 1С - 1С.УТ 11.1.1.13 (с патчем). версия модуля sale 12.5.2
1. Пользователь отменил заказ на сайте, нажав на ссылку "Отменить" в управление своими заказами. Во время обмена заказами, эта информация ушла в 1С. в 1С установился флаг "Отменено" в дополнительных сведениях в "true", позиции отметились отменнеными (стали "серыми" ). Пока все ок.
2. Происходит еще один обмен заказами (полный). Так как в этом заказе есть отмененные позиции 1С их не передает. Магазин принимает измененный состав товаров этого заказа. И в этом заказе на стороне Битрикса пропадают все позиции.
Далее в компоненте sale.export.1c есть поверка на наличие реквизита "ПометкаУдаления", если он есть, то ставим флаг Отменено в правду, если нет - то в ложь. Так как заказ в 1С не был помечен к удалению, Битрикс восстанавливает этот заказ в действующие, т.е. отменяет отмену.
3. Происходит еще один обмен заказами. В 1С идет информация о заказе, который не отменен (флаг Отменен = false) и с пустым списком товаров (там может появится одна позиция - доставка).
В итоге, через два автоматизированных обмена мы имеем и на стороне магазина, и на стороне 1С, пустые заказы. И оба не являются отмененными и имеют какой-то активный статус. Обмен заказами может происходит довольно часто, по расписанию. У меня это происходит раз в 15 минут. Таким образом через 30 минут, в автоматическом режиме, после отмены пользователем заказа, пропадает всякая информация о составе товара и о самом факте отмены...
Скажите кто-нибудь сталкивался с этой проблемой? Какие были решения? Понимаю, что нужно лезть в события в CSaleOrder: CancelOrder().
UPD: на стротоне 1С - 1С.УТ 11.1.1.13 (с патчем). версия модуля sale 12.5.2