Добрый день. Просьба помочь в ответе на следующий вопрос по очередям:
1) У каждого объекта очереди есть поле "Дата следующей обработки", каким образом оно заполняется? По кнопке [Запланировать на дату] или с помощью другого механизма?
2) С чем может быть связана проблема, что после заполнения по кнопке [Запланировать на дату] времени и даты, объект очереди всё равно при наполнении очереди попадает в очередь.
//вместо того, чтобы сработал алгоритм: "Объект очереди не будет отображаться в едином окне до того момента, когда наступит указанное время обработки. При наступлении запланированного времени обработки объект очереди отобразится вверху списка в очереди у того оператора, который взял в работу данный объект очереди"
3) Корректно ли поведение системы: если с домашней страницы по кнопке [Открыть] открыть объекта очереди, то объект очереди исключается из очереди, но через 1-5 минут (в зависимости от [Частота обновления]) снова отображается в очереди
Нравится
По инструкции:
Дата следующей обработки
Если оператор отложил обработку элемента, данная колонка отобразит дату, в которую элемент снова будет предложен оператору.
Это поле 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.
Если у Вас в системе элементы очереди фильтруются некорректно, попробуйте сравнить поведение и код системы с демо-версией, которую можно развернуть на сайте. Если есть отличия в упомянутых схемах, дело может быть в неверных доработках Вашей системы.