Как можно ограничить доступ к изменению составов и сумм заказов, разрешая только изменение статусов?

Как настроить синхронизацию между 1С и Битрикс таким образом, чтобы при изменениях в заказе из 1С сохранялись только статусы, без изменения остальных данных? Предполагается, что необходимо изменить логику события OnSaleOrderBeforeSaved. Есть предположение о том, что нужно проводить проверку при условии $_REQUEST['type']=='sale' && $_REQUEST['mode']=='file', и затем сохранять только изменения статусов заказа, предотвращая изменения остальных данных. Реализация, представленная в коде, не дает ожидаемого результата. Какие могут быть пути решения данной проблемы?
  • 10 июля 2024 г. 14:02
Ответы на вопрос 1
Одним из способов ограничить доступ к изменению составов и сумм заказов, разрешая только изменение статусов, можно использовать разделение прав доступа на уровне пользователей в системе. Например, можно создать две группы пользователей - одной будет разрешено изменять только статусы заказов, а другой будет иметь доступ ко всем данным заказа. Затем можно настроить соответствующие права доступа для каждой группы.

Что касается синхронизации между 1С и Битрикс, для сохранения только изменений статусов заказа можно использовать следующий подход:

1. При изменении заказа из 1С, проводить проверку в событии OnSaleOrderBeforeSaved, используя условие $_SERVER['HTTP_X_REQUESTED_WITH'] == '1c_exchange' для идентификации запросов из 1С.

2. При выполнении условия, сохранять только изменения статусов заказа, игнорируя остальные данные. Для этого можно использовать методы обновления статуса заказа в Битрикс, например, методы SetStatus и Update.

3. При необходимости, можно также добавить дополнительную логику для сохранения других данных заказа при определенных условиях.

При правильной реализации подобного подхода, можно достичь нужного результата и предотвратить изменения в данных заказа, кроме изменений статусов.
Похожие вопросы