Технические вопросы
7.x

Здравствуйте коллеги. Подскажите пожалуйста как сделать так чтобы в выпадающем списке была фильтрация типа CONTAIN? а не START_WITH. CONTAIN работает только тогда, когда ввести знак % перед текстом. Возможно сделать поиск типа CONTAIN без знака %.
Возьмите во внимание что системная настройка Тип сравнения для строковых колонок = 1.
См фото.

Нравится

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

Здравствуйте!

Системная настройка влияет только на быстрый поиск в разделе.

Для решения Вашего вопроса необходимо заместить схему LookupPageViewModuleGenerator. В данной схеме есть метод pushSelectFilters. Именно этот метод отвечает за тип поиска. В базовой версии тип поиска START_WITH. В замещающей схеме Вам необходимо заменить тип поиска на CONTAIN.

Важно! Данное изменение замедлит быстродействие системы, поскольку поиск "%запрос%" отрабатывает значительно медленнее, чем поиск "запрос%".

я это уже сделал раньше, но работает только когда выбирать значение из lookup Пример описанного выше не работает.

Здравствуйте!

За поиск значения в выпадающем списке отвечает метод getLookUpQuery. У этого метода есть переменная Terrasoft.SysSetting.lookUpFilterType. По умолчанию его значение - START_WITH. Вам необходимо переопределить значение данной переменной на CONTAIN. Это можно сделать на init BasePageV2.

Работает. Большое спасибо!

Показать все комментарии
Видимость полей! что-то не работает.
Технические вопросы
7.x

Добрый день! Подскажите, пожалуйста, начинающему...
Были добавлены 3 новых поля на страницу case.
Создала замещающий модуль для страницы настройки и настроила правила отображения Поля1, если тип обращения = Жалоба. Но в итоге получаю, что поля никогда нет на странице (основа кода тут http://academy.terrasoft.ru/documents/?product=SDK&ver=7.6.0).

rules: {
        "UsrField11": {
        BindParametrVisibilePlaceByType: {
                ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                property: BusinessRuleModule.enums.Property.VISIBLE,
                conditions: [{
                leftExpression: {
                     type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                     attribute: "Category"
                                },
                        comparisonType: Terrasoft.ComparisonType.EQUAL,.
                        rightExpression: {
                                type: BusinessRuleModule.enums.ValueType.CONSTANT,
                                value: "1C9D7B67-9A81-41F8-89F5-B6BF69F821D6"
                        }
                }]
        }
}
},
                       

Нравится

1 комментарий
null
дата
Технические вопросы
7.x

Добрый день!
Подскажите, пожалуйста, как
1) очистить дату через элемент "Изменение данных" - то есть как обозначить пустую дату?
2) как сравнить в условии(условный поток) в бизнес-процессе дату с null (то есть проверить заполнена дата или нет)

Собственно, интересует вопрос как обозначить пустую дату? (незаполненную)
Например, строка - это string.Empty
а в случае даты?

Нравится

6 комментариев

Дарья, добрый день!

На уровне приложения поле с типом DateTime является non-nullable. Т.е. установить значение null в элемент “Изменить данные” не получится.
Список доступных методов DateTime можно посмотреть в документации https://msdn.microsoft.com/en-us/library/system.datetime(v=vs.110).aspx
Если не указывать значение для поля с типом DateTime при создании записи в объекте – в базе данных будет установлено значение null.

а в условном потоке можно как-то проверить, заполнена дата или нет?

Если нельзя очистить дату с помощью элемента "Изменить данные", тогда как действовать? использовать элемент сценарий?

Здравствуйте, Дарья!

Для проверки заполнена дата или нет Вы можете в условном потоке сравнивать [#Параметр#] c минимальной датой (DateTime.MinValue).

Дата не заполнена, если [#Параметр#]<=(DateTime.MinValue).

Для очистки даты Вам нужно использовать задание-сценарий, т.к. элементом "Изменить данные" Вы сможете только задать значение DateTime.MinValue, которое соответствует 01.01.0001 (такое значение будет отображаться на странице редактирования/в реестре, что не очень красиво).

спасибо

Добрый день!
Использую такой код в сценарии для очищения даты
UserConnection userConnection = context.UserConnection;
var update = new Update(userConnection, "Case")
.Set("SolutionProvidedOn", new QueryParameter(null))
.Where("Id").IsEqual(new QueryParameter(RecordId));
update.Execute();
Возникает ошибка при исполнении процесса -
Ссылка на объект не указывает на экземпляр объекта.

Пробую использовать такой код в сценарии для очищения даты
UserConnection userConnection = context.UserConnection;
var update = new Update(userConnection, "Case")
.Set("SolutionProvidedOn", null)
.Where("Id").IsEqual(new QueryParameter(RecordId));
update.Execute();
При публикации объекта возникает ошибка

Как очистить дату с помощью элемента-сценарий?

Здравствуйте, Дарья!

Вы можете использовать CustomQuery.

var dr = new CustomQuery(UserConnection, String.Format(
"update case set SolutionProvidedOn = null where Id = 974ca9fc-c066-4a7a-ac65-7ec91a44a067")).ExecuteReader(dbExecutor);

При этом сам запрос Вам необходимо формировать отдельно (так как Id каждый раз будет новый).

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

Для объекта была создана деталь. Можно ли блокировать кнопку Добавить (или скрывать ее) в зависимости от определенного условия?

Нравится

13 комментариев

Иван,

Есть 2 метода, которые можно переопределить getAddRecordButtonVisible и getAddRecordButtonEnabled.

Я бы на вашем месте управлял доступностью и переопределил метод getAddRecordButtonEnabled на странице детали.

        methods: {
            /**
             * Возвращает доступность кнопки добавления записи.
             * overriden
             * @returns {boolean}
             */
            getAddRecordButtonEnabled: function () {
                return (2 == 5);
            }
        },

Добрый день.

Скрытие кнопки можно реализовать следующим образом:
В схеме детали, в разделе diff, добавить следующее:

			{
				"operation": "remove",
				"name": "addRecordButton"
			}

Дмитрий, попробовал добавить метод на страницу детали, но кнопка по прежнему остается активной.

Юрий, такой подход, вероятно, не подойдет, потому что блокировать необходимо при некотором условии.

"Пажуков Иван Александрович" написал:            getAddRecordButtonEnabled: function () {
                return (2 == 5);
            }

Иван,

Можете скинуть скрипт страницы, на которую вы добавляете переопределение метода?

Дмитрий, могу скинуть.
pagescript.txt

Иван,

Вы изменяете страницу редактирования сущности "UsrNomMeterValues", а замещать метод нужно на странице детали данной сущности.

Поместил на страницу детали, результат тот же.
detailscript.txt

Иван, добрый день!

Во вложении пример замещающей схемы детали. Результат выглядит следующим образом:

disableaddbutton.txt

После сохранения схемы необходимо очистить кэш браузера.

А в какой момент эта кнопка будет блокироваться? При открытии страницы? Или при изменении условия во время редактирования/сохранения страницы?

Доброго.
При открытии страницы.

Добрый день!

Подскажите, а как нибудь можно сделать, чтобы допустим в контрагентах выводилась кнопка добавления, а например в контактах - нет для сервисных договоров при рабочее месте общее

Это схема ServicePactRecipientsDetail, там в одной функции как раз проверяют, контакт или контрагент, а в другой — показывают или скрывают кнопку добавления (по другой причине). Вам нужно переопределить вторую функцию, добавить логику, подобную той, что в первой:

/**
 * @inheritdoc Terrasoft.BaseManyToManyGridDetail#getSchemaInsertQuery
 * @overridden
 */
getSchemaInsertQuery: function() {
	var insert = this.callParent(arguments);
	var detailColumnName = this.get("DetailColumnName");
	if (detailColumnName) {
		var detailColumnType = detailColumnName === "Contact" ?
				ServiceDeskConstants.ServiceObjectType.Contact :
				ServiceDeskConstants.ServiceObjectType.Account;
		insert.setParameterValue("Type", detailColumnType,
			this.Terrasoft.DataValueType.GUID);
	}
	return insert;
},
 
/**
 * @inheritDoc Terrasoft.BaseGridDetailV2#getAddRecordButtonVisible
 * @overridden
 */
getAddRecordButtonVisible: function() {
	return !Terrasoft.isCurrentUserSsp() &amp;&amp; this.callParent(arguments);
},

 

Показать все комментарии
7.6
бизнес правила
редактируемый реестр
Технические вопросы
7.x

Добрый день!
Возник вопрос как правильно написать бизнес правило, чтобы оно корректно работало при добавлении и изменении записей в редактируемом реестре.

 attributes: {
                "Order": {
                    lookupListConfig: {
                        columns: [
                            "Account.SxNAVCode", "SxShippingType.Code",
                            "Owner.SxNAVCode","SxContract.SxNAVCode",
                            "Date","Account.SxCFO.Code","Account.Id","Account.SxTradeChain.SxNAVCode", "Account.SxTradeChain.SxCFO.Code"
                            ,"Account.SxSalesOutletType","SxPaymentFormula","SxPaymentFormula.SxPaymentDelay","SxWarehouse.SxCode"
                        ]
                    }
                },

.........................................
//в секции rules
 "SxDesiredDiscount": {
                    "BindParameterEnabledToPaymentDelay": {
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        "property": BusinessRuleModule.enums.Property.ENABLED,
                        "conditions": [
                            {
                                "leftExpression": {
                                    "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                    "attribute": "Order.SxPaymentFormula.SxPaymentDelay"
                                    attributePath:""
                                },
                                "comparisonType": Terrasoft.ComparisonType.LESS,
                                "rightExpression": {
                                    "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                    "value": 45
                                }
                            }
                        ]
                    }
                },

в детали также добавлены колонки

getGridDataColumns: function() {
                var config = this.callParent(arguments);
                config["Order.Account"]= { path: "Order.Account" };
                config["Order.Date"]= { path: "Order.Date" };
                config["Order.SxPaymentFormula"]= { path: "Order.SxPaymentFormula" };
                config["Order.SxPaymentFormula.SxPaymentDelay"]= { path: "Order.SxPaymentFormula.SxPaymentDelay" };
                config["Order.Account.SxSalesOutletType"]= { path: "Order.Account.SxSalesOutletType" };
                return config;
            }

Проблема в том, что при добавлении требуемое значение при добавлении можно получить как:
this.get("Order")["SxPaymentFormula.SxPaymentDelay"]
а при изменении:
this.get("Order.SxPaymentFormula.SxPaymentDelay"));

Следовательно есть разница в работе правил.

Подскажите пожалуйста, как решить данную проблему? Как верно сформировать конфиг, чтоб он всегда был одинаковым?

Нравится

11 комментариев

Александр, добрый день!

Попробуйте в leftExpression указать параметры attribute и attributePath так:

"attribute": "Order",
"attributePath":"SxPaymentFormula.SxPaymentDelay"

Я таким образом сразу пробовал. Не помогло. Все равно работает или при добавлении или при изменении.

Александр, самый простой способ - устанавливать значение атрибута в методе initEntity карточки детали. Примерно так:

initEntity: function(callback, scope) {
	this.callParent([function() {
		if (!this.get("Order.SxPaymentFormula.SxPaymentDelay")) {
			this.set("Order.SxPaymentFormula.SxPaymentDelay",
				this.get("Order") && this.get("Order")["SxPaymentFormula.SxPaymentDelay"]);
		}
		callback.call(scope || this);
	}, this]);
}

В бизнес-правиле в этом случае необходимо использовать только "attribute": "Order.SxPaymentFormula.SxPaymentDelay".

Олег, работает.
Спасибо за помощь!

Подскажите пожалуйста, пытаюсь добавить фильтрацию, одного поля по значению другого, в редактируемом реестре. - http://www.community.terrasoft.ru/forum/topic/15497

Тут рассматриваеться BINDPARAMETER, возможна ли работа правила FILTRATION?

Для реализации данного функционала достаточно добавить фильтрацию в карточку схемы нужной детали. Добавленная фильтрация будет применяться и к редактируемому реестру детали. Однако, некоторые возможности фильтрации в данном случае могут не работать.

Сергей, спасибо - после вашего комментария все встало на свои места, был не в курсе что нужна страница редактирования, делал напрямую в схеме детали с редактируемым реестром.

подскажите, пожалуйста, как фильтровать значение поля детали по значению поля объекта, в котором деталь. У меня в продажах есть деталь Доп.соглашения,в которой есть поле-ссылка на Договор. Мне нужно фильтровать договора по полю Контрагент - показывать только те договора, которые принадлежат контрагенту текущей продажи.
Я создала карточку редактирования, прописала в ней бизнес правило со ссылкой на атрибут AccountId. Но не могу определить, когда заполнять этот атрибут. в момент, когда срабатывает initEntity в самой сущности Доп.соглашение еще не заполнено поле Продажа. а методы init, onEntityInizialized не срабатывают
Есть какой-то вариант, как я могу получить id текущей сущности(продажи), в которой находится деталь, из карточки редактирования детали (не из схемы детали, а из карточки)?

Добрый день, Любовь.

Насколько я понял Ваш кейс, вы пытаетесь добавить деталь, объект которой - Договор. Достаточно будет связать данную деталь с карточкой следующим образом - объект детали AccountId = объекта карточки AccountId.
Если же Вы пытаетесь добавить деталь, объект которой кастомный, и в нем просто присутствует поле Договор, то реализовать такую логику не получится. Действительно, init/onEntityInizialized при загрузке детали не срабатывают, они отработают только если Вы откроете объект детали на редактирование.

"Мотков Илья" написал:Если же Вы пытаетесь добавить деталь, объект которой кастомный, и в нем просто присутствует поле Договор, то реализовать такую логику не получится. Действительно, init/onEntityInizialized при загрузке детали не срабатывают, они отработают только если Вы откроете объект детали на редактирование.

объект кастомный. Простите за дотошность, но вообще нет никаких вариантов реализации такого кейса? просто кейс, на мой взгляд, довольно типичный. неужели нет никаких вариантов(кроме перехода на другой вид детали)?

Нет, отрабатывает только БизнесПравила, следовательно если через БП нет возможности реализовать такую логику, то нет, у вас не получится сделать ее с помощью вычисляемых атрибутов для РР.

Можно было бы конечно предложить дублировать необходимые поля в сущности детали, при создании и при изменении этих полей в основной карточке, но это очень большой костыль. Правильнее уже будет перейти к нередактируемой детали, если данная фильтрация очень важна. Пусть это и черевато несколькоми лишними движениями для конечного пользователя, зато все будет работать как надо.

Показать все комментарии
Технические вопросы
7.x

Здравствуйте.

Экспорт списка записей по дефолту сохраняет данные всего из нескольких полей. Как добавить другие?

Нравится

1 комментарий

Виктор, добрый день!

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

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

Здравствуйте.

Подскажите пожалуйста как узнать входит ли пользователь в определенную функциональную или организационную роль на клиенте и сервере.

Нравится

6 комментариев

Здравствуйте.
В базе данных есть таблица SysUserInRole. Там содержится развязка вхождения пользователей в роли (поля SysUserID, SysRoleID). Сами пользователи и роли находятся в таблице SysAdminUnit.

Подскажите как добавить к стандартному полю Ответственный фильтрацию по определенной роли, использую SysUserInRole:

attributes: {
    "Owner": {
        dataValueType: Terrasoft.DataValueType.LOOKUP,
	lookupListConfig: { filters: [ function() {
		var filterGroup = Ext.create("Terrasoft.FilterGroup");
		filterGroup.add("IsPurchasingDepartment",
		Terrasoft.createColumnFilterWithParameter(
			Terrasoft.ComparisonType.EQUAL,
			"[SysUserInRole:SysUser:[SysAdminUnit:Contact].Id].SysRole",
			"eb2644b7-9647-440c-9a05-6318d8d9e3b2")); 
		return filterGroup;
		}]}
	}
}

При открытие появляется ошибка "Элемент коллекции с именем Id] не найден", насколько понял неправильно написано "[SysUserInRole:SysUser:[SysAdminUnit:Contact].Id].SysRole" использовал пример из SDK "Построение путей к колонкам относительно корневой схемы. 3) Колонка схемы по произвольному внешнему ключу"
с одной связью понятно, но для двух примера нет, подскажите как правильно построить путь, не получилось разобраться.

Такой уровень вложенности вероятно не получится сделать.
Попробуйте написать esq к таблице «SysAdminUnit» по условию «SysUserInRole» (join), и выберите из него Id этой самой «SysAdminUnit», прямо в функции фильтрации.
А полученный массив Id уже передайте через «createColumnInFilterWithParameters» как-то так:

define("AccountPageV2", ["AccountPageV2Resources", "GeneralDetails"],
function(resources, GeneralDetails) {
	return {
		entitySchemaName: "Account",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		attributes: {
			"Owner": {
				dataValueType: Terrasoft.DataValueType.LOOKUP,
				lookupListConfig: {
					filter: function() {
 
						// массив айди из SysAdminUnit, где-то тут напишите esq вместо него
						var idList = ["5CE92315-6128-44BE-A175-238EC6E3609F", "85C1DE5F-DD7E-4F8D-8F97-D3D8630A2C2F"];
 
						var filterGroup = new Terrasoft.createFilterGroup();
						var filterById = Terrasoft.createColumnInFilterWithParameters("[SysAdminUnit:Contact:Id].Id", idList);
						filterById.comparisonType = Terrasoft.ComparisonType.EQUAL;
						filterGroup.add("filterById", filterById);
 
						return filterGroup;
					}
				}
			}
		},
		methods: {},
		rules: {},
		userCode: {}
	};
});

Только вместо idList разумеется, будет результат esq.

Максим, ESQ на клиенте асинхронны, т.е. ваш вариант не подходит.
Сделал через представление, но все таки хотелось бы узнать наверняка возможен ли желаемый уровень вложенности.

Желаемый уровень вложенности невозможен. А асинхронность можно побороть пользуясь колбеками. Примеры использования колбеков в esq есть в типовых схемах.

Максим Шевченко пишет:

Желаемый уровень вложенности невозможен

То есть, никак не узнать, входит ли пользователь в функциональную роль опосредованно (наример, является руководителем сотрудника, у которого есть данная функциональная роль)?  

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

Здравствуйте, помогите пожалуйста. Создал деталь, в которой есть поля Счет, Контрагент и др. Должен присутствовать фильтр счетов по контрагенту.
Пришел к следующей реализации:

attributes: {
    "UsrBill": {
          lookupListConfig: {
                filters: [
                        function() {
                                var account = this.get("UsrContragent");
                                var filterGroup = this.Ext.create("Terrasoft.FilterGroup");
                                var left = [Invoice:AccountId]
                                filterGroup.add("UsrContragent",
                                        Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
                                        left,
                                        account.value));
                                return filterGroup;
                        }
                ]
        }
    }
}
}

Но никак не получается записать левое выражение.

Нравится

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

Иван,

Данную задачу можно решить через бизнес-правило rules с типом FILTRATION,

Либо:

attributes: {
    "UsrBill": {
        lookupListConfig: {
            filters: [
                function() {
                    var account = this.get("UsrContragent");
                    var filterGroup = this.Ext.create("Terrasoft.FilterGroup");
                    filterGroup.add("UsrContragent",
                        Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
                            "Account", // Указывается поле текущей сущности (в нашем случае Invoice)
                            account? account.value : Terrasoft.GUID_EMPTY));
                    return filterGroup;
                }
            ]
        }
    }
}

Огромное спасибо за помощь. Через правило, я так понял, должно выглядеть следующим образом:

rules: {
        "UsrBill": {
                "FiltrationInvoiceByAccount": {
                        "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
                        "autocomplete": true,
                        "autoClean": true,
                        "baseAttributePatch": "Account",
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                        "attribute": "Account"
                }
        }
}

Но мне немного не понятно, что указывается в атрибутах baseAttributePatch и attribute.

Думаю, что так:

rules: {
        "UsrBill": {
                "FiltrationInvoiceByAccount": {
                        "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
                        "autocomplete": true,
                        "autoClean": true,
                        "baseAttributePatch": "Account",
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                        "attribute": "UsrContragent"
                }
        }
}

attribute - Имя поля объекта по значению которого будем фильтровать (поле объекта вашей детали)
baseAttributePatch - Имя поля для связи из объекта соответствующего справочному поле UsrBill (объект Invoice)

Спасибо за разъяснения.

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

Каким образом можно сократить неиспользуемое место в карточках (например, между заголовком детали и данными), чтобы на экранах отображалось больше информации?

карточка

Нравится

1 комментарий

Есть ли возможность организовать автоматический обзвон по контактам, какие модули/интеграции требуются, кроме IP-телефонии?

Нравится

17 комментариев

Автоматический обзвон контактов выполняется исключительно самой АТС, bpm'online не принимает в нем участия. Дополнительно, для удобства администратора контакт-центра может быть настроено получение списка контактов на обзвон.

Для реализации задачи требуется дополнительная доработка интеграции:
Создание раздела в bpm'online позволяющего формировать список на обзвон
Формирование службы передающей номер телефона и ID записи для обзвона (Web-сервисы, шлюзовая таблица и т.д.)
Организация обратной связи с результатами обзвона
Реализация зависит от типа АТС, ее возможностей к интеграции и выбранных специалистами способов реализации.

Альтернативой может быть использование CustomerService (https://terrasoft.ru/service/customer-service/360-customer-view)
Плюсом является использование автоматических выборок на основе динамической очереди и возможность запуска бизнес-процессов по звонкам в разных исходящих кампаниях.

Добрый день!

А если переформулировать так: "Как создать (генерировать) очередь Активностей (Звонок) для группы Контактов?"
1. Для одноразового создания Задач для "статического списка" Контактов.
2. Если группа динамическая то, чтобы Оператор каждое утро в разделе "Единое окно" видел перечень новых Задач (по обзвону Клиентов, которые теперь также удовлетворяют условиям группы).
---
Пункт 2 скорее всего стандартными средствами bpmonline не решается, но первый-то должен, нет?

Спасибо.

Здравствуйте!

Создать статический список контактов Вы можете, отметив их тегом. Подробнее о тегах Вы можете прочитать по ссылке:
https://academy.terrasoft.ru/documents/sales-commerce/7-8-0/gruppy-i-te…

Далее, Вы можете создать динамическую группу в разделе "Контакты" с фильтром:
Тег в записи раздела контакты (по колонке Объект) существует
и Тег = <выберите созданный Вами тег>

Далее создайте очередь на основании созданной Вами группы.

Также, как вариант, вместо создания динамической группы и очереди, Вы можете создать бизнес процесс:
1) Стартовый элемент
2) Добавить данные в объект "Активность" в режиме выборки из объекта "Тег в записи раздела контакты".
Условия фильтрации выборки Тег = <выберите созданный Вами тег>
Вам необходимо заполнить поля "Заголовок" (произвольный), тип "Выполнить", категория "Звонок", контакт - из выборки Id.
3) Конец процесса

В результате запуска такого процесса система создаст активности по контактам из выборки.

Добрый день ! Подскажите пожалуйста как создать очередь на основании созданной группы?

Оксана, добрый день!

Очередь можно наполнить фильтром, рекомендованным Алексеем для статической группы -
Тег в записи раздела контакты (по колонке Объект) существует
и Тег = <выберите созданный Вами тег>

Добрый день, Илья! Правильно я понимаю , что очередь все равно формируется в рамках какого то процесса, т.е. вне процесса функцию обзвона реализовать невозможно?

Заранее спасибо за ответ!

Добрый день, Илья! Правильно я понимаю , что очередь все равно формируется в рамках какого то процесса, т.е. вне процесса функцию обзвона реализовать невозможно?

Заранее спасибо за ответ!

Добрый день, Оксана!

Да для формирования очереди необходимо указывать бизнес-процесс по которому будет выполняться действие. Вы так же можете использовать один из уже существующих, например "Обработка обращений из очереди в Едином окне" или скопировать его, внести изменения в копию после чего использовать копию процесса

Добрый день, Илья! Ранее Алексей отвечал, что обзвон можно осуществить в рамках бизнес-процесса. могу ли я уточнить у Вас некоторые моменты? Насколько я понимаю, мы создаем бизнес процесс, и в него добавляем один элемент "Выполнить задачу". Далее в параметре категория указываем "звонок". А дальше непонятно в каком из параметров делается выборка.
Буду благодарна за быстрый ответ

Добрый день.
С позиции пользователя:

  • Выбрал нужные контакты
  • Выбрал действия, создать очередь обзвона(возможно ли добавить новое действие в "действия")
  • После выполнения этих действий АТС должна начинать обзвон

С позиции разработчика:

  • Выбрал нужные контакты, сохранил их UUID
  • Создал задачи для контакта, сохранил их UUID
  • Запустил перебор по сохраненному списку

Из явных минусов:

  • Нужно при старте обзвона сходить в задачи и проверить, есть ли не законченные обзвоны и добавить их в список обзвона
  • Не понятно столько осталось контактов в обзвона

Это логика, которую мы будем закладывать в интеграцию.
На этой неделе будем тестировать.
Если в логике что то не правильно - прошу скорректировать.

Добрый день , Алексей! Не совсем понятно то , что вы написали. Я хотела бы все таки узнать пошаговые действия для создания такого процесса.

Заранее спасибо!

"APanyovin" написал:

Добрый день.

С позиции пользователя:

  • Выбрал нужные контакты
  • Выбрал действия, создать очередь обзвона(возможно ли добавить новое действие в "действия")
  • После выполнения этих действий АТС должна начинать обзвон

С позиции разработчика:

  • Выбрал нужные контакты, сохранил их UUID
  • Создал задачи для контакта, сохранил их UUID
  • Запустил перебор по сохраненному списку

Из явных минусов:

  • Нужно при старте обзвона сходить в задачи и проверить, есть ли не законченные обзвоны и добавить их в список обзвона
  • Не понятно столько осталось контактов в обзвона

Это логика, которую мы будем закладывать в интеграцию.

На этой неделе будем тестировать.

Если в логике что то не правильно - прошу скорректировать.

--

Runtel

Alexey Panyovin

Добрый день, Оксана.

Я постарался описать процесс.
Давайте начнем с главного - на чем пишем и какое api используете?

Не совсем поняла вопроса. Но отвечу так, у нас есть готовый продукт с необходимыми лицензиями. Сейчас мы разбираемся в функционале bpm. На данный момент нам необходимо реализовать не автоматический обзвон, а организовать список контактов на обзвон(в котором будет видно кому дозвонились, кому нет, кому еще не звонили) и также добавлять комментарии к звонкам и чтобы все это делал оператор. Ранее было описано как это сделать в рамках бизнес процесса. Вот мне хотелось бы получить пошаговую инструкцию что и куда нажимать, т.к. из того что написано ранее , не все получается.

"APanyovin" написал:

Добрый день, Оксана.

Я постарался описать процесс.

Давайте начнем с главного - на чем пишем и какое api используете?

--

Runtel

Alexey Panyovin

Доброе утро, Оксана.
В создании БП наверное не помогу.
У нас создание списка и его контроть осуществляет АТС.

Доброе утро, Алексей!

А кто бы мне мог помочь в данном вопросе?

"APanyovin" написал:

Доброе утро, Оксана.

В создании БП наверное не помогу.

У нас создание списка и его контроть осуществляет АТС.

--

Runtel

Alexey Panyovin

Доброе утро, Алексей!

А кто бы мне мог помочь в данном вопросе?

"APanyovin" написал:

Доброе утро, Оксана.

В создании БП наверное не помогу.

У нас создание списка и его контроть осуществляет АТС.

--

Runtel

Alexey Panyovin

Здравствуйте!

Вы можете обратиться к менеджеру, который найдет оптимальный вариант построения процесса. Альтернатива - использование продукта Customer Center.

В этом продукте есть раздел "Очереди", который позволяет выстраивать записи в очередь. Условия попадания в очередь настраиваются в фильтре очереди. Подробно можно прочитать по ссылке.

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