Добрый день.

 

Сотрудники call-центра жалуются на проблемы со звонками:

1) После окончания исходящего звонка, в ленте звонков информация не сбрасывается, счетчик времени продолжает идти, хотя звонок закончен.

 

2) Если набрать новый номер, отображается его соединение с предыдущим собеседником

 

 

Нравится

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

Добрый день, 

 

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

 

На что стоит обратить внимание: 

1. Проверить соединение межу сервером телефонии и сервером TMS, если он сипользуется. Если сервер TMS не используется, то проверить соединение между серевром телефонии и клиентом.

2. Если используется TMS, то стоит его обновить до последней версии. Сыллка "Скачать Creatio Messaging Service" есть тут: https://academy.terrasoft.ru/docs/user/drugie_reshenija/konnektory_tele…

Добрый день, получилось у вас решить проблему ?

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

Добрый день!

Команда 

Ext.create("Terrasoft.SelectQuery", {rootSchemaName: "Case"});

выдает ошибку:Изображение удалено.С DeleteQuery все нормально.

Я что то не так делаю?

Нравится

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

Добрый день.

Нужно писать так:

var esqContact = Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "Contact"});

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

В клиентском модуле MobileDynamicLinkReceiver есть метод:

 

getSelectQuery: function(schemaName, columnName, filterColumn, filterValue) {
		var filter = Ext.create("Terrasoft.QueryCompareFilter", {
			comparisonType: Terrasoft.QueryComparisonType.StartWith,
			leftExpression: Ext.create("Terrasoft.ColumnExpression", {
				columnPath: filterColumn
			}),
			rightExpression: Ext.create("Terrasoft.ParameterExpression", {
				parameter: {
					value: filterValue
				}
			})
		});
		return Ext.create("Terrasoft.SelectQuery", {
			rootSchemaName: schemaName,
			columns: [columnName],
			rowCount: 1,
			filters: filter
		});
	},

Он же как то работает наверно.

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

Добрый день!

 

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

Раньше было:

Изображение удалено.

 

а теперь просто автозаполняемое поле и никаких кнопок "Открыть процесс" и т.п.

Изображение удалено.

 

Подскажите, как мне добавить событийный подпроцесс при создании новой записи.

Нравится

1 комментарий
Лучший ответ

В объекте слева выбираете События, в событиях выбираете нужны галочки. В верху есть кнопка Открыть процесс.

 

 

В объекте слева выбираете События, в событиях выбираете нужны галочки. В верху есть кнопка Открыть процесс.

 

 

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

Добрый день, 

 

Подскажите, есть ли в Creatio контрол для загрузки изображения в колонку типа Image? 

 

Есть реализации, которые позволяют загружать изображение в колонку с типом Image link, когда картинка в итоге загружается в таблицу SysImage, но это решение не подходит. 

Нравится

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

Добрый день, можете более детально описать, что вам необходимо сделать?

У меня есть карточка раздела, в которой пользователю нужно загрузить 3 картинки. Раздел привязан к сущности, у которой есть соответственно 3 колонки с типом Image. Эти изображения потом обрабатываются в событийном процессе сущности и их удобно хранить именно в самой сущности, а не в SysImage. Поэтому хотелось бы узнать существует ли способ загрузить изображение с помощью какого либо клиентского контрола прямо в сущность.

 

 

Рекомендую ознакомиться со статьей https://academy.terrasoft.ua/docs/developer/elements_and_components/bas…. Возможно она вам поможет

Дима Вовченко,

на эта ссылка нет ответа

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

После обновления на версию 7.17.2 перестали загружаться файлы в Excel отчёты.

Дополнение "Excel reports builder". Воспроизводится для всех разделов.

В консоли ошибка "One or more filters are not filled, please fill in all filters and try again."

Как можно решить данную проблему?

Нравится

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

Станислав, добрый день!

 

Ответственная команда по решению подготовила обновленный пакет с исправлением этой ошибки. Установите повторно решение из Creatio Marketplace.

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

Возникла необходимость редактирования детали "Средства связи" в разделе контакты.  Через мастер деталей это невозможно, т.к деталь неизменяема. Остается вариант с изменением исходного кода. Как можно заместить/редактировать необходимый модуль? В частности необходимо изменить код (или заместить на другой модуль) в модуле ContactCommunicationDetailV2.  

Нравится

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

Доброе утро.

 

Как показывает практика, в таких случаях лучше реализовать свою деталь и подключить её вместо базовой.

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

 Алла Савельева,

Спасибо за ответ! И все таки: каким образом будет грамотнее заменить существующий клиентский модуль  на кастомный? С сохранением ключевых зависимостей, но изменением кода.

Тимур Макаев,

 

Возможны оба варианта: иногда нужно сохранить ключевые зависимости, иногда - нет.

Также возможен вариант, когда лучшим решением будет сделать свою таблицу и на её основании разрабатывать требуемую логику.

А чтобы отобразить уже внесенные данные, их можно перенести в новую таблицу с помощью запросов на уровне базы данных.

Всё зависит от того, насколько сильно будет изменена базовая логика.

Создаем новый модуль, например:

define("UsrBaseCommunicationViewModel", ["ext-base",
	"terrasoft", "UsrBaseCommunicationViewModelResources",
	"BaseCommunicationViewModel",],
	function(Ext, Terrasoft, resources, BaseCommunicationViewModel) {
		Ext.define("Terrasoft.configuration.UsrBaseCommunicationViewModel", {
			extend: "Terrasoft.BaseCommunicationViewModel",
			alternateClassName: "Terrasoft.UsrBaseCommunicationViewModel",
			methodName: function(value) { //метод, который нужно заместить в базовой логике
 
			},
		});
	});

Подключаем этот модуль в базовую деталь (создав замещающую страницу):

define("BaseCommunicationDetail", ["UsrBaseCommunicationViewModel"], function(UsrBaseCommunicationViewModel) {
	return {
		attributes: {
		},
		methods: {
			init: function(callback, scope) {
				this.set("BaseCommunicationViewModelClassName", "Terrasoft.UsrBaseCommunicationViewModel");
				this.callParent(arguments);
			},
		},
		diff: /**SCHEMA_DIFF*/[
		]/**SCHEMA_DIFF*/
	};
});

Естественно делаем все на свой страх и риск.

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

Коллеги существуют возможность поднятия сервиса Exchange Listener на Windows?

Нравится

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

Если сможете поставить docker на windows, то да.

Добрый день!

Хочу обратить внимание, что для продуктивных сайтов мы рекомендуем разворачивать  EXCHANGE LISTENER с использованием оркестратора Kubernetes и пакетного менеджера Helm.

В открытом доступе в Интернете есть информация о том, как можно было бы развернуть Kubernetes  на Windows. 

Но хочу обратить внимание, что мы рекомендуем для стабильной работы микросервиса разворачивать его именно на Linux.

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

Когда пытаюсь удалить объект через элемент БП удалить данные мне выдает сообщение, что Элемент удалить невозможно, так как он используется в процессе.

Как мне найти процесс , в котором он используется , что бы очистить связь

Нравится

2 комментария
Лучший ответ

Объект не нашел, но сделал удаление без связанных с помощью метода 

 

GridUtilitiesService deleteRecordsService = new GridUtilitiesService();
//первый параметр айдишники записей, а второй целевой объект
deleteRecordsService.DeleteRecords(new string[]{"ac52a8ab-f404-4809-b590-e4beeec2eacc","f9f8c61d-64b3-4686-862f-e261150e7fca","320cc71e-e053-4eb2-b6eb-8ca96728bb51"}, "Activity");

 

Объект не нашел, но сделал удаление без связанных с помощью метода 

 

GridUtilitiesService deleteRecordsService = new GridUtilitiesService();
//первый параметр айдишники записей, а второй целевой объект
deleteRecordsService.DeleteRecords(new string[]{"ac52a8ab-f404-4809-b590-e4beeec2eacc","f9f8c61d-64b3-4686-862f-e261150e7fca","320cc71e-e053-4eb2-b6eb-8ca96728bb51"}, "Activity");

 

Добрый день!

 

Найти идентификатор экземпляра процесса, в котором используется удаляемая запись можно запросом:

select SysProcessId from SysProcessElementData ed join SysEntityCommonPrcEl ede on ede.ProcessElementId = ed.Id where ede.RecordId = 'id удаляемой записи'



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



Рекомендую обратить внимание на метод DeleteWithCancelProcess в классе Entity, с помощью которого в задание сценарии можно удалить связь и отменить процесс. 



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

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

Добрый день . 

Есть стандартный БП Запуск процесса Отправка email сообщения группе о назначении обращения. Работает отлично. Но начиная с версии 7.17 можно отправлять вложения в  ходе БП.

Кто подскажет как модернизировать стандартный БП, что бы вложения отправлялись ? 

 

UserConnection userConnection = UserConnection;

if (userConnection.CurrentUser.ConnectionType == UserType.SSP) {

    userConnection = userConnection.AppConnection.SystemUserConnection;

}

var senderEmail = Terrasoft.Core.Configuration.SysSettings.GetValue(userConnection, 

    "SupportServiceEmail", string.Empty);

if (userConnection.GetIsFeatureEnabled("EmailMessageMultiLanguage") || userConnection.GetIsFeatureEnabled("EmailMessageMultiLanguageV2")) {

    var caseRecordId = (StartSignal1.RecordId != Guid.Empty)

        ? StartSignal1.RecordId 

        : StartSignal2.RecordId;

    var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Case");

    esq.AddColumn("Group");

    var caseEntity = esq.GetEntity(userConnection, caseRecordId);

    if (caseEntity != null) {

        var adminUnitEsq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "SysAdminUnit");

        adminUnitEsq.UseAdminRights = false;

        var emailColumnName = adminUnitEsq.AddColumn("Contact.Email").Name;

        var groupId = caseEntity.GetTypedColumnValue("GroupId");

        adminUnitEsq.Filters.Add(adminUnitEsq.CreateFilterWithParameters(FilterComparisonType.Equal, "[SysUserInRole:SysUser].SysRole", groupId));

        var collection = adminUnitEsq.GetEntityCollection(userConnection);

        var result = string.Join(";", collection.Select(e => e.GetTypedColumnValue(emailColumnName)));

        if (!string.IsNullOrWhiteSpace(result)) {

            var emailTemplateSender = new Terrasoft.Configuration.EmailWithMacrosManager(userConnection);

            var emailTemplateId = Terrasoft.Configuration.CaseConsts.GroupTemplateId;

            if (userConnection.GetIsFeatureEnabled("EmailMessageMultiLanguageV2")) {

                emailTemplateSender.SendEmailFromTo(caseRecordId, emailTemplateId, senderEmail, result);

                return true;

            } else {

                var emailTemplateStore = new Terrasoft.Configuration.EmailTemplateStore(userConnection);

                var emailTemplateLanguageHelper = new Terrasoft.Configuration.EmailTemplateLanguageHelper(caseRecordId, userConnection);

                var languageId = emailTemplateLanguageHelper.GetLanguageId(emailTemplateId);

                var templateEntity = emailTemplateStore.GetTemplate(emailTemplateId, languageId);

                emailTemplateSender.SendEmailFromTo(caseRecordId, templateEntity.PrimaryColumnValue, senderEmail, result);

            }

        }

    }

} else {

    Guid sendEmailToCaseGroup = new Guid("C68F5A4E-AD06-4C83-88C4-040D2480FACB");

    var manager = userConnection.ProcessSchemaManager;

    var processSchema = manager.GetInstanceByUId(sendEmailToCaseGroup);

    if (ProcessSchemaManager.GetCanUseFlowEngine(userConnection, processSchema)) {

        var flowEngine = new FlowEngine(userConnection);

        Dictionary parameter = new Dictionary();

        parameter.Add("CaseRecordId", CaseRecordId.ToString());

        flowEngine.RunProcess(processSchema, parameter);

    } else {

        var moduleProcess = processSchema.CreateProcess(userConnection);

        if (processSchema.Parameters.ExistsByName("CaseRecordId")) {

            moduleProcess.SetPropertyValue("CaseRecordId", CaseRecordId);

        }

        moduleProcess.Execute(userConnection);

    }

}

return true;

Прикрепленные файлы

Нравится

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

Добрый день.

Рекомендую вам воспользоваться данной статьей или уже готовое бесплатное расширение, которое можно будет немного отредактировать.

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

Добрый день!

Коллеги, поделитесь, пожалуйста опытом, кто устанавливал приложение "Split tests in marketing campaigns for Creatio"  с Marketplace. Интересует, возникали ли конфликты с коробочным или кастомным функционалом и, если да, то в какой версии системы?

А так же, приходилось ли взаимодействовать непосредственно с разработчиком приложения, в каком ключе происходило взаимодействие?

В общем, буду благодарна за любую информацию по данному приложению.

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

Нравится

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

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

В Creatio версии 7.17.3 появился новый базовый элемент кампании [Произвольное распределение]. Рекомендую использовать базовый элемент.

Приложение "Split tests in marketing campaigns for Creatio" опубликовано разработчиком Dev labs и поддерживается через посты на Creatio Community.

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