Получение списка объектов, которые должны быть отображены на Kanban-доске

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

{
	"ApiKey": "",
	"ApiVersion": "100",
	"ModuleId":"",
	"Method": "Kanban.GetObjects",
	"UserKey":"37a26a08-4ead-4f69-a780-4ade7ff01561",
	"Parameters":  
	{
		KanbanViewCode:"код kanban-доски",
		Filter:{"txtSmartFilter":"белоусов", "ddlOverdue":"1,2"}

	}
}

Допустимые коды канбан-досок можно получить в конфигурации системы в секции KanbanViews каждого модуля. Если модуль НЕ поддерживает канбан-доски, то данная коллекция будет NULL. В качестве кода в значение StringParamValue запроса подставляем значение KanbanViewCode из конфигурации.

Дополнительно можно передать объект Filter, в котором определить условия фильтрации элементов канабан—доски. Для каждой из доски поддерживается свой список параметров, и его необходимо уточнить у разработчиков. В примере запроса приведен фильтр для доски “Мои задачи”. Любое значение фильтра является не обязательным.

Пример описания канбан-доски для модуля Задачи:

{
						"Title": "Мои задачи",
						"Id": "KanbanTasks",
						"PrimaryColor": "",
						"SecondaryColor": "",
						"BaseObjectType": 0,
						"IsTableModule": false,
						"IgnoreAccessRights": true,
						"UseAsBaseTypeModule": true,
						"Columns": null,
						"DefaultSortColumn": "",
						"DefaultSortDirection": 0,
						"KanbanViews": [
							{
								"Title": "Группировка по статусу и дате",
								"KanbanViewCode": "Kanban.Tasks.GroupByStateAndTime",
								"Columns": [
									{
										"Title": "Задачи для меня",
										"Color": "",
										"Code": "UserPotentialTasks",
										"Items": null
									},
									{
										"Title": "Новый задачи",
										"Color": "",
										"Code": "UserNewTasks",
										"Items": null
									},
									{
										"Title": "Просрочено завершение",
										"Color": "",
										"Code": "UserOverdueTasks",
										"Items": null
									},
									{
										"Title": "Задачи на сегодня",
										"Color": "",
										"Code": "UserTodayTasks",
										"Items": null
									},
									{
										"Title": "Задачи на завтра",
										"Color": "",
										"Code": "UserTomorrowTasks",
										"Items": null
									},
									{
										"Title": "Начну позже",
										"Color": "",
										"Code": "UserTomorrowTasks",
										"Items": null
									}
								]
							}
						]
					}

В ответе будут возвращены все столбцы канбан-доски, и для каждого столбца в коллекции Items будут находится доступные для отображения карточки объектов. Каждый элемент канбан-доски в обязательно порядке будет иметь следующие поля:

		public interface IKanbanDto
    {
        /// <summary>
        /// Поле заголовка, которое отображается в карточке
        /// </summary>
        Classes.FieldViewDto KanbanHeader { get; set; }
        /// <summary>
        /// Код столбца, которому принадлежит объект
        /// </summary>
        string KanbanColumnCode { get; set; }
        /// <summary>
        /// Массив полей, которые необходимо вывести в карточку объекта
        /// </summary>
        XL.Base.Modules.DtoFactory.Classes.FieldsView.GroupViewDto KanbanFields { get; set; }
        /// <summary>
        /// Основная команда для выполенения в карточке
        /// </summary>
        CommandDto KanbanPrimaryCommand { get; set; }
        
    }

<aside> 💡 ВАЖНО! для каждой доски структура возвращаемых объектов может иметь дополнительные поля, необходимые для функционирования той или иной доски. Например, в приведенном ниже примере каждый объект содержит дополнительное поле StatusField

</aside>

Пример ответа:

{
	"Result": {
		"Title": "Группировка по статусу и дате",
		"KanbanViewCode": "Kanban.Tasks.GroupByStateAndTime",
		"TotalCount": 1,
		"Columns": [
			{
				"Title": "Задачи для меня",
				"Color": "",
				"Code": "UserPotentialTasks",
				"Items": []
			},
			{
				"Title": "Новый задачи",
				"Color": "",
				"Code": "UserNewTasks",
				"Items": [
					{
						"KanbanColumnCode": "UserNewTasks",
						"Status": 1,
						"StatusField": {
							"Title": "",
							"Code": "Status",
							"Value": "Новая",
							"CustomColor": "",
							"SystemColor": 4,
							"IsBold": false,
							"FieldType": 0,
							"ColSpan": 1
						},
						"KanbanFields": {
							"Title": "",
							"Code": "",
							"Fields": [
								{
									"Title": "Автор",
									"Code": "AuthorName",
									"Value": "тест1 тест1",
									"CustomColor": "",
									"SystemColor": -1,
									"IsBold": false,
									"FieldType": 0,
									"ColSpan": 1
								},
								{
									"Title": "Просрочено",
									"Code": "DeadlineStatusString",
									"Value": "завершение",
									"CustomColor": "",
									"SystemColor": 1,
									"IsBold": false,
									"FieldType": 0,
									"ColSpan": 1
								},
								{
									"Title": "Завершить",
									"Code": "ExpectedСompletionDateTime",
									"Value": "20.06.2023 16:06",
									"CustomColor": "",
									"SystemColor": 1,
									"IsBold": false,
									"FieldType": 0,
									"ColSpan": 1
								},
								{
									"Title": "",
									"Code": "CommonDescription",
									"Value": "фываыфаыфвва",
									"CustomColor": "",
									"SystemColor": -1,
									"IsBold": false,
									"FieldType": 5,
									"ColSpan": 1
								}
							]
						},
						"KanbanHeader": {
							"Title": "",
							"Code": "KanbanHeader",
							"Value": "задачу завершить позже",
							"CustomColor": "",
							"SystemColor": 1,
							"IsBold": false,
							"FieldType": 0,
							"ColSpan": 1
						},
						"KanbanPrimaryCommand": {
							"Title": "старт",
							"Code": "taskStart"
						},
						"DtoViewType": 4,
						"Flags": null,
						"BaseObjectId": 10019,
						"BaseObjectDate": "01.01.1900 00:00:00",
						"BaseObjectType": 11,
						"BaseObjectName": "задачу завершить позже"
					}
				]
			},
			{
				"Title": "Просрочено завершение",
				"Color": "",
				"Code": "UserOverdueTasks",
				"Items": []
			},
			{
				"Title": "Завершить сегодня",
				"Color": "",
				"Code": "UserTodayTasks",
				"Items": []
			},
			{
				"Title": "Завершить завтра",
				"Color": "",
				"Code": "UserTomorrowTasks",
				"Items": []
			},
			{
				"Title": "Завершить позже",
				"Color": "",
				"Code": "UserAfterTomorrowTasks",
				"Items": []
			}
		]
	},
	"ApiKey": "",
	"ApiVersion": "100",
	"Method": "Kanban.GetObjects",
	"Errors": [],
	"Duration": 765.9604
}

Обратите внимание, что для каждого элемента в списке есть свойство KanbanColumnCode в котором дополнительно явным образом прописывается код столбца, которому принадлежит тот или иной элемент. Данная опция становится критичной при изменении на сервере какого-либо свойства элемента, в ответ на которое будет возвращен DTO-объект, с уже установленным значение в KanbanColumnCode.

Рассмотрим указанный сценарий на примере канбан-доски задачи. Есть задача которая находится в статусе новая задача в столбце UserNewTasks (новые задачи). При старте этой задаче (выполнении метода Tasks.StartTask) статус объекта будет изменен на сервере и возвращенный объект будет иметь в поле KanbanColumnCode новое значение UserTodayTasks. Таким образом клиентское приложение может динамически изменять столбец у элемента после его изменения на сервере.