Вопрос

Запланировать на дату (объект очереди)

Добрый день. Просьба помочь в ответе на следующий вопрос по очередям:

1) У каждого объекта очереди есть поле "Дата следующей обработки", каким образом оно заполняется? По кнопке [Запланировать на дату] или с помощью другого механизма?

2) С чем может быть связана проблема, что после заполнения по кнопке [Запланировать на дату] времени и даты, объект очереди всё равно при наполнении очереди попадает в очередь.

//вместо того, чтобы сработал алгоритм: "Объект очереди не будет отображаться в едином окне до того момента, когда наступит указанное время обработки. При наступлении запланированного времени обработки объект очереди отобразится вверху списка в очереди у того оператора, который взял в работу данный объект очереди"

3) Корректно ли поведение системы: если с домашней страницы по кнопке [Открыть] открыть объекта очереди, то объект очереди исключается из очереди, но через 1-5 минут (в зависимости от [Частота обновления]) снова отображается в очереди

Нравится

2 комментария

По инструкции:

Дата следующей обработки

Если оператор отложил обработку элемента, данная колонка отобразит дату, в которую элемент снова будет предложен оператору.

Это поле NextProcessingDate в объекте OperatorSingleWindow. Оно меняется в серверной логике схемы QueuesService, в методах ChangeQueueItemDate (заполнение) и PostponeQueueItem (очистка). А также в клиентской схеме QueueItemEditPage в методе updateQueueItemData и BasePageV2 пакета OperatorSingleWindow, которая взаимодействует с вышеупомянутым сервисом.

Логика фильтрации по этому полю реализована в схеме QueueGridUtilities:

addNextProcessingDateFilters: function(filters) {
	var nextProcessingDateFilters = new this.Terrasoft.createFilterGroup();
	nextProcessingDateFilters.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;
	var nextProcessingColumnName = "NextProcessingDate";
	nextProcessingDateFilters.add("NextProcessingDateFilter", this.Terrasoft.createColumnFilterWithParameter(
		this.Terrasoft.ComparisonType.LESS_OR_EQUAL, nextProcessingColumnName, new Date()));
	nextProcessingDateFilters.add("IsNullNextProcessingDateFilter",
		this.Terrasoft.createColumnIsNullFilter(nextProcessingColumnName));
	filters.add("NextProcessingDateFilters", nextProcessingDateFilters);
},

И её применение там же ниже:

  addQueueFilters: function(filters, config) {
   filters.addItem(this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL,
    "[Queue:Id:QueueId].QueueEntitySchema", this.get("EntitySchemaUId")));
   var queueId = this.get("QueueId");
   if (!Ext.isEmpty(queueId)) {
    filters.addItem(this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL,
     "Queue", queueId));
   }
   var isSupervisorMode = this.get("IsSupervisorMode");
   if (!isSupervisorMode) {
    filters.addItem(this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL,
     "Status.IsFinal", false));
    filters.addItem(this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL,
     "[Queue:Id:QueueId].Status.IsInitial", false));
    filters.addItem(this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL,
     "[Queue:Id:QueueId].Status.IsFinal", false));
    this.addNextProcessingDateFilters(filters);
    this.addOperatorFilters(filters);
    if (!config || !config.skipOperatorFilter) {
     this.addCloseQueueFilters(filters);
    }
   }
  },

Там же есть и другой фильтр, реализованный в функции addOperatorFilters.

Если у Вас в системе элементы очереди фильтруются некорректно, попробуйте сравнить поведение и код системы с демо-версией, которую можно развернуть на сайте. Если есть отличия в упомянутых схемах, дело может быть в неверных доработках Вашей системы.

Спасибо за информацию. Основная проблема была в том, что некорректно был настроен процесс: Обработка обращений/заявок из очереди в Едином окне (в частности правило "когда считать элемент выполненным)

Показать все комментарии