Битрикс-разработчик Вероника Малышева

Обмен с 1С: статус заказа на сайте как состояние заказа в 1С

Обмен с 1С: статус заказа на сайте как состояние заказа в 1С

В модуле обмена с 1С-Битрикс с Управление торговлей 11 статус заказа  можно сопоставить с состоянием заказов.

Как определяется состояние заказа в 1С
Начиная из  редакции УТ 11.2.2  список возможных состояний заказа клиента такой:
  1. Ожидается согласование  – Если в установлена функциональная опция Согласование заказов клиента, то  каждый новый заказ  нужно соглосовать.
  2. Ожидается аванс (до обеспечения) –   В заказе установится этот  статус  после того, как мы установили у заказа клиента статус К выполнению, а для строк заказа указали действие Не обеспечивать, изменилось состояние заказа. . Товар по заказу нельзя будет отгрузить (установить действие Отгрузить для строк заказа), если не зарегистрирована оплата заказа
  3. Готов к обеспечению –   В заказе установится этот статус после того, как  Клиент заплатил аванс по заказу  платежным документом. Теперь нужно подготовить товар к отгрузке и отгрузить ему товар. Для строк заказ можно изменить колонку  Действие на последующие варианты обеспечения (К обеспечению, Резервировать и т.д.). Для того чтобы можно было отгрузить товар (оформить документ Реализация товаров и услуг), необходимо для всех товаров в табличной части документа установить действие Отгрузить и провести документ;
  4. Ожидается предоплата (до отгрузки)– В заказе установится этот статус после того, как все строки заказа обеспечены и установлен вариант оплаты  Предоплата (до отгрузки)
  5. Ожидается обеспечение;
  6. Готов к отгрузке – Предоплата получена, заказ ждет выставления действия Отгрузить/Отгрузить обособленно во всех строках;
  7. В процессе отгрузки–  Означает, что получена предоплата и во  всех  строках  установлено  действие Отгрузить или Отгрузить обособленно, но складские ордера или реализации оформлены не на весь заказанный товар
  8. Ожидается оплата (после отгрузки)-  Означает, что товары отгружены и ожидается оплата потому, что в заказе выбран вариант кредит ( после отгрузки) ;
  9. Готов к закрытию – Заказы, по которым на все позиции, указанные в заказе, оформлены документы Реализация товаров и услуг и/или Акт выполненных работ.
  10. Закрыт.
А это код, который ставит состояние заказа
 ВЫБОР
        КОГДА (НЕ ДокументЗаказКлиента.Проведен)
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
        КОГДА ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяСогласование)
        КОГДА ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)
        КОГДА ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован)
                И ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
                И ДокументЗаказКлиента.СуммаАвансаДоОбеспечения > 0
                И ДокументЗаказКлиента.СуммаДокумента - ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток, 0) < ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяАвансДоОбеспечения)
        КОГДА ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован)
                И ДокументЗаказКлиента.СуммаДокумента > 0
                И (ДокументЗаказКлиента.СуммаДокумента - ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток, 0) >= ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
                ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов))
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОбеспечению)
        КОГДА (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован)
                ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению))
                И ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
                И ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0
                И ДокументЗаказКлиента.СуммаДокумента - ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток, 0) < ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяПредоплатаДоОтгрузки)
        КОГДА (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован)
                ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению))
                И ДокументЗаказКлиента.СуммаДокумента > 0
                И ((ДокументЗаказКлиента.СуммаДокумента - ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
                ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов))
                И ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаОстаток, 0) <> 0)
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОтгрузке)
        КОГДА ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке)
                И ДокументЗаказКлиента.СуммаДокумента > 0
                И (ДокументЗаказКлиента.СуммаДокумента - ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
                ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов))
                И ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюОстаток, 0) <> 0
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяОтгрузка)
        КОГДА ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке)
                И ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
                И ДокументЗаказКлиента.СуммаДокумента - ДокументЗаказКлиента.СуммаАвансаДоОбеспечения + ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0
                И ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюОстаток, 0) = 0
                И ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток, 0) > 0
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяОплатаПослеОтгрузки)
        КОГДА ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКЗакрытию)
    КОНЕЦ КАК Состояние,