mybpm!
Скачать в формате: PDF pdf DOCX word

Пример 3: Поиск клиентов по фамилию или имени и по дате рождения

Правильный Запрос (Request):

{
  "boCode": "CLIENT",
  "headCodes": [
    "SURNAME",
    "NAME",
    "BIRTH_DATE"
  ],
  "orderingFieldCode": "NAME",
  "orderState": "ASC",
  "paging": {
    "offset": 0,
    "limit": 10
  },
  "state": "ALL",
  "brackets": [
    {
      "id": "DTb445uz",                   // Это бракет для группировки и задачи приоритета выполнения
      "parentId": null,
      "parentTreeIds": [],
      "connectionType": "AND",            // Соединенеи с следующим бракетом в текущем списке
      "brackets": [
        {
          "id": "DTb445uu",
          "parentId": "DTb445uz",         // Указываем id родителя
          "parentTreeIds": ["DTb445uz"],  // Указываем id родителей (Только один пока что)
          "connectionType": "OR",         // Соединенеи с следующим бракетом в текущем списке
          "brackets": [],
          "dynamicFilters": [
            {
              "id": "nl4Fcy3Z",
              "fieldId": "xQK11@uul08penSM",
              "type": "INPUT_TEXT",
              "value": "Сидоров"
            }
          ]
        },
        {
          "id": "DTb445uu", 
          "parentId": "DTb445uz",         // Указываем id родителя
          "parentTreeIds": ["DTb445uz"],  // Указываем id родителей (Только один пока что)
          "connectionType": "AND",
          "brackets": [],
          "dynamicFilters": [
            {
              "id": "nl4Fcy3Z",
              "fieldId": "oDZwyNuzRXrACu7w",
              "type": "INPUT_TEXT",
              "value": "Андрей"
            }
          ]
        }
      ]
    },
    {
      "id": "DTb445uo",                   // Бракет с фильтром для Даты Рождения
      "parentId": null,
      "parentTreeIds": [],
      "connectionType": "AND",
      "brackets": [],
      "dynamicFilters": [
        {
          "id": "nl4Fcy3Z",
          "fieldId": "KpGLlc1U3yzNDLFu",  // Вставляем id поля Дата рождения
          "type": "DATE",                 // Тип поля "Дата"
          "dateFrom": "1973-09-20T00:00:00.000Z", // Дата с 
          "dateTo": "2000-12-13T00:00:00.000Z"    // Дата по
        }
      ]
    }
  ]
}

Неправильный Запрос (Request):

{
  "boCode": "CLIENT",
  "headCodes": [
    "SURNAME",
    "NAME",
    "BIRTH_DATE"
  ],
  "paging": {
    "offset": 0,
    "limit": 10
  },
  "state": "ALL",
  "brackets": [
    {
      "id": "DTb445uu",
      "parentId": null,
      "parentTreeIds": [],
      "connectionType": "OR",
      "brackets": [],
      "dynamicFilters": [
        {
          "id": "nl4Fcy3Z",
          "fieldId": "xQK11@uul08penSM",
          "type": "INPUT_TEXT",
          "value": "Сидоров"
        }
      ]
    },
    {
      "id": "DTb445uu",
      "parentId": null,
      "parentTreeIds": [],
      "connectionType": "AND",
      "brackets": [],
      "dynamicFilters": [
        {
          "id": "nl4Fcy3Z",
          "fieldId": "oDZwyNuzRXrACu7w",
          "type": "INPUT_TEXT",
          "value": "Андрей"
        }
      ]
    },
    {
      "id": "DTb445uo",                   // Бракет с фильтром для Даты Рождения
      "parentId": null,
      "parentTreeIds": [],
      "connectionType": "AND",
      "brackets": [],
      "dynamicFilters": [
        {
          "id": "nl4Fcy3Z",
          "fieldId": "KpGLlc1U3yzNDLFu",  // Вставляем id поля Дата рождения
          "type": "DATE",                 // Тип поля "Дата"
          "dateFrom": "1973-09-20T00:00:00.000Z", // Дата с 
          "dateTo": "2000-12-13T00:00:00.000Z"    // Дата по
        }
      ]
    }
  ]
}

В чём разница?

Ответ: Из-за того что мы не сгруппировали и не дали порядок выполнения, неправильный запрос фильтрует данные следующим образом:

Правильное поведение:

Взгляните на разницу логики запросов с математической точки зрения:

Предусловие:

Создание БО Клиент и полей Фамилия и Имя описано в предусловии запроса примера #1

  1. Добавим новое поле "Дата рождения", и изменим его код поля на "BIRTH_DATE"

  2. Добавим новых клиентов и назначим всем дату рождения

  3. Для написание бракета нам нужно получить id и type поля "Дата рождения": id = KpGLlc1U3yzNDLFu, type = DATE

Правильный Ответ (Response):

Клиентов у которых либо имя Андрей, либо фамилия Сидоров - 5, соответственно добавив фильтр на дату рождения их должно стать 4, потому что Андрей Сидоров не входит, так как он 1901 года:

{
    "boCode": "CLIENT",
    "businessObjectId": "7x9hWxwZ@xa2D3gB",
    "heads": [
        {
            "fieldId": "xQK11@uul08penSM",
            "name": "Фамилия",
            "code": "SURNAME"
        },
        {
            "fieldId": "oDZwyNuzRXrACu7w",
            "name": "Имя",
            "code": "NAME"
        },
        {
            "fieldId": "KpGLlc1U3yzNDLFu",
            "name": "Дата Рождения",
            "code": "BIRTH_DATE"
        }
    ],
    "records": [
        {
            "boId": null,
            "instanceId": "7ptdU@OFh~4LEKoJ",
            "values": [
                {
                    "coFieldId": null,
                    "fieldId": "xQK11@uul08penSM",
                    "value": "Сидоров",
                    "displayValue": "Сидоров",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "oDZwyNuzRXrACu7w",
                    "value": "Матвей",
                    "displayValue": "Матвей",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "KpGLlc1U3yzNDLFu",
                    "value": "\"1981-09-11T08:14:07.140Z\"",
                    "displayValue": "11.09.1981",
                    "isReadOnly": false,
                    "readOnly": false
                }
            ]
        },
        {
            "boId": null,
            "instanceId": "0EkMG5drGnlS~wlE",
            "values": [
                {
                    "coFieldId": null,
                    "fieldId": "xQK11@uul08penSM",
                    "value": "Сидоров",
                    "displayValue": "Сидоров",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "oDZwyNuzRXrACu7w",
                    "value": "Михаил",
                    "displayValue": "Михаил",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "KpGLlc1U3yzNDLFu",
                    "value": "\"1974-09-20T09:11:34.870Z\"",
                    "displayValue": "20.09.1974",
                    "isReadOnly": false,
                    "readOnly": false
                }
            ]
        },
        {
            "boId": null,
            "instanceId": "fPhK6xoFo4CmU~IU",
            "values": [
                {
                    "coFieldId": null,
                    "fieldId": "xQK11@uul08penSM",
                    "value": "Малахов",
                    "displayValue": "Малахов",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "oDZwyNuzRXrACu7w",
                    "value": "Андрей",
                    "displayValue": "Андрей",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "KpGLlc1U3yzNDLFu",
                    "value": "\"1999-12-11T18:00:00.000Z\"",
                    "displayValue": "12.12.1999",
                    "isReadOnly": false,
                    "readOnly": false
                }
            ]
        },
        {
            "boId": null,
            "instanceId": "fB6uONz16zm5B@xP",
            "values": [
                {
                    "coFieldId": null,
                    "fieldId": "xQK11@uul08penSM",
                    "value": "Горбачев",
                    "displayValue": "Горбачев",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "oDZwyNuzRXrACu7w",
                    "value": "Андрей",
                    "displayValue": "Андрей",
                    "isReadOnly": false,
                    "readOnly": false
                },
                {
                    "coFieldId": null,
                    "fieldId": "KpGLlc1U3yzNDLFu",
                    "value": "\"1984-12-31T18:00:00.000Z\"",
                    "displayValue": "01.01.1985",
                    "isReadOnly": false,
                    "readOnly": false
                }
            ]
        }
    ],
    "hasNext": false,
    "totalHits": 4,
    "totalHitsMore": false,
    "tookInMillis": 2
}

Неправильный Ответ:

Клиентов 5 и Андрей Сидоров входит, потому что его фамилия Сидоров:

{
   "boCode": "CLIENT",
   "businessObjectId": "7x9hWxwZ@xa2D3gB",
   "heads": [
      {
         "fieldId": "xQK11@uul08penSM",
         "name": "Фамилия",
         "code": "SURNAME"
      },
      {
         "fieldId": "oDZwyNuzRXrACu7w",
         "name": "Имя",
         "code": "NAME"
      },
      {
         "fieldId": "KpGLlc1U3yzNDLFu",
         "name": "Дата Рождения",
         "code": "BIRTH_DATE"
      }
   ],
   "records": [
      {
         "boId": null,
         "instanceId": "fPhK6xoFo4CmU~IU",
         "values": [
            {
               "coFieldId": null,
               "fieldId": "xQK11@uul08penSM",
               "value": "Малахов",
               "displayValue": "Малахов",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "oDZwyNuzRXrACu7w",
               "value": "Андрей",
               "displayValue": "Андрей",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "KpGLlc1U3yzNDLFu",
               "value": "\"1999-12-11T18:00:00.000Z\"",
               "displayValue": "12.12.1999",
               "isReadOnly": false,
               "readOnly": false
            }
         ]
      },
      {
         "boId": null,
         "instanceId": "fB6uONz16zm5B@xP",
         "values": [
            {
               "coFieldId": null,
               "fieldId": "xQK11@uul08penSM",
               "value": "Горбачев",
               "displayValue": "Горбачев",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "oDZwyNuzRXrACu7w",
               "value": "Андрей",
               "displayValue": "Андрей",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "KpGLlc1U3yzNDLFu",
               "value": "\"1984-12-31T18:00:00.000Z\"",
               "displayValue": "01.01.1985",
               "isReadOnly": false,
               "readOnly": false
            }
         ]
      },
      {
         "boId": null,
         "instanceId": "3fdhTt7wmbEtEKda",
         "values": [
            {
               "coFieldId": null,
               "fieldId": "xQK11@uul08penSM",
               "value": "Сидоров",
               "displayValue": "Сидоров",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "oDZwyNuzRXrACu7w",
               "value": "Андрей",
               "displayValue": "Андрей",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "KpGLlc1U3yzNDLFu",
               "value": "\"1901-09-06T10:04:08.636Z\"",
               "displayValue": "06.09.1901",
               "isReadOnly": false,
               "readOnly": false
            }
         ]
      },
      {
         "boId": null,
         "instanceId": "7ptdU@OFh~4LEKoJ",
         "values": [
            {
               "coFieldId": null,
               "fieldId": "xQK11@uul08penSM",
               "value": "Сидоров",
               "displayValue": "Сидоров",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "oDZwyNuzRXrACu7w",
               "value": "Матвей",
               "displayValue": "Матвей",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "KpGLlc1U3yzNDLFu",
               "value": "\"1981-09-11T08:14:07.140Z\"",
               "displayValue": "11.09.1981",
               "isReadOnly": false,
               "readOnly": false
            }
         ]
      },
      {
         "boId": null,
         "instanceId": "0EkMG5drGnlS~wlE",
         "values": [
            {
               "coFieldId": null,
               "fieldId": "xQK11@uul08penSM",
               "value": "Сидоров",
               "displayValue": "Сидоров",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "oDZwyNuzRXrACu7w",
               "value": "Михаил",
               "displayValue": "Михаил",
               "isReadOnly": false,
               "readOnly": false
            },
            {
               "coFieldId": null,
               "fieldId": "KpGLlc1U3yzNDLFu",
               "value": "\"1974-09-20T09:11:34.870Z\"",
               "displayValue": "20.09.1974",
               "isReadOnly": false,
               "readOnly": false
            }
         ]
      }
   ],
   "hasNext": false,
   "totalHits": 5,
   "totalHitsMore": false,
   "tookInMillis": 2
}