Для обучения системных аналитиков

Техническое задание для разработчика

Пример технического задание на интеграцию

Получение списка покупателей из 1С в CRM

Краткое описание интеграции

Сделать Api, которое будет принимать данные из 1С, для формирования в CRM реестра списков.

Схематичное представление полученных данных

Верхнеуровневое описание обработки заказа клиента

1. Проверяется, существует ли заказ клиента в системе CRM; если заказ найден, обработка продолжается с шага 2, если нет — создается новый заказ клиента и обработка также переходит к шагу 2. Внутри заказа клиента обрабатывается каждая позиция с результатом «Проведен» (результат передается из связанного документа отгрузки):

2.1. Выполняется поиск записи списка в реестре списков, связанной с номенклатурной группой текущей позиции и с текущим клиентом.

  • Если активная запись (со статусом «В работе» или «Риск») не найдена, создается новая запись списка (так как выявлен новый список), при этом датой открытия устанавливается дата отгрузки.
  • Если найдена только неактивная запись (со статусом «Утеряна»), создается новая запись списка с типом «Восстановленный», в противном случае — с типом «Новый», и новая запись списка связывается с текущим заказом клиента.

2.2. Выполняется поиск связанного заказа поставщика по номеру в CRM:

  • Если заказ поставщика найден, он связывается со списком.
  • Если заказ поставщика не найден, создается новый заказ поставщика и он связывается со списком.

2.3. Выполняется проверка наличия записи позиции в реестре позиций по комбинации: заказ клиента, заказ поставщика, список, код номенклатуры.

  • Если запись найдена, в ней увеличиваются количество и суммы, добавлением значений из обрабатываемой позиции.
  • Если запись не найдена, создается новая позиция в CRM и она связывается со списком, заказом клиента и заказом поставщика.

3. Внутри заказа клиента обрабатывается каждая позиция с результатом «Возвращен» (результат получен из связанного документа реализации/возврата):

3.1. Выполняется поиск позиции в CRM по текущему заказу клиента и полю «Номенклатура».

  • Если значение в поле «Количество» найденной позиции равно количеству в текущей позиции выборки, позиция в CRM удаляются.
  • Если значение в поле «Количество» найденной позиции больше количества в текущей позиции выборки, значение поля «Количество» в позиции CRM уменьшается до соответствующего значения.

4. После обработки всех позиций заказа клиента:

  • Во всех списках, по которым были изменения, пересчитываются показатели оборота за 1 год и обновляется дата.

Деактивируются заказы поставщика, по которым все связанные позиции были удалены.

Авторизация

Адрес Api запроса:
[Адрес сайта]/0/rest/subscribe
Метод запроса:  POST
Формат запроса: application/json
Заголовок:
BPMCSRF = [значение полученное при отправке запроса авторизации]
Входные параметры:

Пример запроса

{
   "dataBlock":{
      "clientOrders":[
         {
            "recordUid":"11111111-1111-4111-8111-111111111111",
            "orderLabel":"Пример 20.02.25 1",
            "orderCurrency":"RUR",
            "dealRefKey":"22222222-2222-4222-8222-222222222222",
            "sourceLink":"https://example.com/order?id=123",
            "partyInfo":{
               "partyUid":"33333333-3333-4333-8333-333333333333",
               "partyCrmKey":"44444444-4444-4444-8444-444444444444",
               "partyName":"Компания-А",
               "taxId":"0000000000",
               "taxBranch":"000000000"
            },
            "responsibleUser":"DOMAIN\\user123",
            "orderTotalAmount":34000.29,
            "orderVatAmount":33090.30,
            "orderPaidAmount":21900.30,
            "orderPaymentState":"Оплачен",
            "orderPaymentPercent":34.29,
            "orderCreatedAt":"2025-01-11T09:15:46.02325Z",
            "orderLines":[
               {
                  "lineTitle":"Security suite",
                  "lineState":"made",
                  "lineCategory":"software",
                  "lineArticle":"VirtualOffice-23-mail-1user-1y",
                  "lineCode":"ITEM-001",
                  "lineMargin":2001.29,
                  "lineTurnover":34000.30,
                  "lineQuantity":4,
                  "groupUid":"55555555-5555-4555-8555-555555555555",
                  "groupName":"Security product",
                  "groupCode":"GR-001",
                  "rootGroupName":"Security",
                  "rootGroupCode":"ROOT-001",
                  "supplierOrder":{
                     "supplierOrderUid":"66666666-6666-4666-8666-666666666666",
                     "supplierOrderNumber":"SO-0001",
                     "supplierOrderDate":"2025-01-13T09:15:46.02325Z"
                  },
                  "shipmentInfo":{
                     "shipmentNumber":"SH-0001",
                     "shipmentDate":"2025-01-14T09:15:46.02325Z"
                  }
               }
            ]
         }
      ]
   }
}
Код ответа:  200 ОК, 201 Created
Код ответа:  400 Bad Request
Код ответа:  404 User not found
Код ответа: 500 Internal Server Error
Код ответа: 504 - Gateway Timeout
Код ответа: 200 ОК

Маппинг

Логирование

Made on
Tilda