Цифра ↔ 1С

cf_СоздатьДокументЗаказ

Создание или обновление заказа клиента с реализациями. Самый сложный модуль расширения. Задание: createOrder

Логика работы

  1. Поиск существующего — ищет документ ЗаказКлиента по реквизиту cf_Id. Если найден — обновляет, если нет — создаёт новый.
  2. Валидация — проверяет наличие организации-продавца, контрагента, договора. При ошибках — возвращает failed.
  3. Заполнение шапки — организация, контрагент, договор, подразделение, склад, дата, адрес доставки, менеджер и т.д.
  4. Заполнение товаров — Products (основные) и Services (услуги) из параметров.
  5. Создание реализаций — для каждого элемента Applications создаёт РеализацияТоваровУслуг.

Поиск контрагентов (3 уровня)

Для организации, контрагента и договора применяется каскадный поиск:

  1. По GUID (через ПолучитьСсылку)
  2. По ИНН (через НайтиПоРеквизиту)
  3. По наименованию (через НайтиПоНаименованию) — только для контрагентов

Поиск номенклатуры

Только по GUID. Если не найдена — используется "Доставка до клиента (рейс) абс".

Определение формы оплаты

Определение способа доставки

НДС

Налогообложение определяется динамически по учётной политике организации. Если система налогообложения = Общая, то ПродажаОблагаетсяНДС, иначе — НеОблагается.

Создание реализаций

Для каждого элемента массива Applications из параметров вызывается cf_СоздатьДокументРеализация.ПолучитьДокументРеализация. Результат — массив {Id, Guid} созданных реализаций, который возвращается в Цифру.

Запись документа

Сначала пытается записать с проведением. Если проведение не удалось — записывает без проведения (с флагом ОбменДанными.Загрузка). Все ошибки логируются в журнал регистрации.