На странице объекта есть кейс. Каждому шагу кейса соответствует свой статус объекта и вкладка в коллекции Вкладок. Кейс переходит по статусам автоматически. 

Вкладки, не соответствующие шагу, скрываются.

 

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

Нравится

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

Добрый день.

Для реализации Вам необходимо подписаться на изменение колонки кейса и при её изменении вызывать метод setActiveTab.

Пример реализации для страницы CasePage:

define("CasePage", [], function() {
		return {
			entitySchemaName: "Case",
          	attributes: {
              "ActiveTabName": {
                dependencies: [
                  {
                    columns: ["Status"],
                    methodName: "setActiveTabByStatus"
                  }
                ]
              },
              "StatusTabDictionary": {
                dataValueType: Terrasoft.DataValueType.COLLECTION,
                value: [
                  { statusId: "7e9f1204-f46b-1410-fb9a-0050ba5d6c38", tabName: "CaseInformationTab" },
                  { statusId: "3859c6e7-cbcb-486b-ba53-77808fe6e593", tabName: "TimelineTab" },
                  { statusId: "ae7f411e-f46b-1410-009b-0050ba5d6c38", tabName: "SolutionTab" }
                ]
              }
            },
			methods: {
 
              setActiveTabByStatus: function() {
                var status = this.get("Status");
                if (!status) {
                  return;
                }
 
                var statusTabDictionary = this.get("StatusTabDictionary");
                for (var i = 0; i < statusTabDictionary.length; i++) {
                  var item = statusTabDictionary[i];
                  if (item.statusId === status.value) {
                    this.setActiveTab(item.tabName);
                    return;
                  }
                }
              },
 
              initTabs: function() {
                this.callParent(arguments);
                this.setActiveTabByStatus();
              },
 
              onEntityInitialized: function() {
                this.callParent(arguments);
                this.setActiveTabByStatus();
              }
 
            }
		};
	}
);

 

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

Добрый день!

Подскажите, пожалуйста, можно ли каким-то образом включать и отключать бизнес-правила на странице через механизм Feature Toggle?

Попробовал вот так, не работает:

businessRules: /**SCHEMA_BUSINESS_RULES*/{
"vsDirectCalc": {
              	//Прямой расчет: Показывать элемент на странице
				"b9d8b16c-d477-45cc-acc6-5b0954b609cd": {
					"uId": "b9d8b16c-d477-45cc-acc6-5b0954b609cd",
					"enabled": {"bindTo": "Terrasoft.Features.getIsEnabled('vsTMA1418')"},	
					"removed": false,
					"ruleType": 0,
					"property": 0,
					"logical": 0,
					"conditions": [
						{
							"comparisonType": 3,
							"leftExpression": {
								"type": 1,
								"attribute": "ScTmaMechanic"
... и т. д.

 

Нравится

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

Добрый день.

 

Подобный подход не сработает, свойство enabled принимает только true или false, байндинги для него не работают (только если вопрос касается бизнес-правил).

 

К сожалению, на текущий момент, подобный подход через механизм Feature Toggle отсутствует.

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

Коллеги, добрый день

Есть потребность привязать старт Бизнес-Процесса к окончанию процедуры Импорта данных

С учетом того, что импорт может производиться в разные разделы (Контакты/Контрагенты/...) — нужно понимать, какой именно объект служил конечной точкой



Вопрос:

Подскажите, пожалуйста, можно ли на уровне Бизнес-процесса получить информацию о том, куда был совершен импорт файла? Есть ли в БД таблица, содержащая поле, в котором бы хранилось подобное значение?

Нравится

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

Константин, добрый день!

 

В базе данных есть таблица "FileImportParameters", где в колонке "ImportParameters" находятся параметры импорта, в том числе и название объекта, куда выполнялся импорт.

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

Всем доброго дня! 

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

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

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

Нравится

6 комментариев
              var activeViewName = this.getActiveViewName();
              if (activeViewName === this.get("AnalyticsDataViewName")) {
                this.sandbox.publish("SectionUpdateFilter",
                                     null, [this.getQuickFilterModuleId()]);
              }

Пробуйте запустить такой код после применения ваших фильтров

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

Можете отправить полный код, где делаете фильтр?

Трефилов Павел Сергеевич,

define("OrderSectionV2", ["ProcessModuleUtilities","BaseFiltersGenerateModule","css!UsrStylesOrderSectionV2"], function(ProcessModuleUtilities,BaseFiltersGenerateModule) {
	return {
		entitySchemaName: "Order",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: {
            "UsrPPNumberFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrPPNumbers": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrMyNumberFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrMyNumbers": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrContrFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrContr": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrNameFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrMyName": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrQua": {
                "dataValueType": Terrasoft.DataValueType.INTEGER,
                "values": ""
            },
        },
		diff: /**SCHEMA_DIFF*/[	
			{
                "operation": "insert",
                "name": "MyFilterContainer",
                "parentName": "LeftGridUtilsContainer",
                "propertyName": "items",
                "index": 3,
                "values": {
                    "id": "MyFilterContainer",
                    "itemType": this.Terrasoft.ViewItemType.CONTAINER,
                    "items": [],
 
                }
            },
 
 
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "PP_Number",
				"index": 1,
                "values": {
                    "bindTo": "UsrPPNumberFilter",
                    "caption": {"bindTo": "Resources.Strings.UsrPPNumberCaption"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "ppNumChanged"
                        }
                    }
 
                }
            },
 
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton1",
					"index": 2,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel" },
					}
			},
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "my_Number",
				"index": 3,
                "values": {
                    "bindTo": "UsrMyNumberFilter",
                    "caption": {"bindTo": "Resources.Strings.myNumber"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "myNumberChanged"
                        }
                    }
 
                }
            },
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton2",
					"index": 4,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel2" },
					}
			},
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "my_Contr",
				"index": 5,
                "values": {
                    "bindTo": "UsrContrFilter",
                    "caption": {"bindTo": "Resources.Strings.myContr"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "myContrChanged"
                        }
                    }
 
                }
            },
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton3",
					"index": 6,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel3" },
					}
			},
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "PeriodSelectButton",
					"index": 7,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.LookupIcon"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "openMyLook" },
					}
			},
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "my_Name",
				"index": 8,
                "values": {
                    "bindTo": "UsrNameFilter",
                    "caption": {"bindTo": "Resources.Strings.myName"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "myNameChanged"
                        }
                    }
 
                }
            },
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton4",
					"index": 9,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel4" },
					}
			},
 
        ]/**SCHEMA_DIFF*/,
 
		methods: {
 
		clearFilter: function() {
			this.set("UsrPPNumberFilter", "");
			this.onUsrFilterChanged();
		},
 
		onUsrFilterChanged: function() {
			this.reloadGridData();
		},
 
		initQueryFilters: function(esq) {
			this.callParent(arguments);
			//номер в пп
			var usrEmailFilter = this.get("UsrPPNumbers");
			if (usrEmailFilter) {
				esq.filters.add("UsrPPNumberFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "UsrNumberInPP".substring(), usrEmailFilter));
			} else {
				esq.filters.removeByKey("UsrPPNumberFilter");
			}		
 
			//Номер
			var usrMyFilter = this.get("UsrMyNumbers");
			if (usrMyFilter) {
				esq.filters.add("UsrMyNumberFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "Number".substring(), usrMyFilter));
			} else {
				esq.filters.removeByKey("UsrMyNumberFilter");
			}
			//Контрагент
			var usrContrFilter = this.get("UsrContr");
			if (usrContrFilter) {
				esq.filters.add("UsrContrFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "Account.Name".substring(), usrContrFilter));
			} else {
				esq.filters.removeByKey("UsrContrFilter");
			}
			//Название
			var usrNameFilter = this.get("UsrMyName");
			if (usrNameFilter) {
				esq.filters.add("UsrNameFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "UsrName".substring(), usrNameFilter));
			} else {
				esq.filters.removeByKey("UsrNameFilter");
			}
 
 
		},
 
		ppNumChanged: function(a, b, c) {
			this.set("UsrPPNumbers", a);
			this.onUsrFilterChanged();
 
		},
 
		myNumberChanged: function(a, b, c) {
			this.set("UsrMyNumbers", a);
			this.onUsrFilterChanged();
		},
 
		myContrChanged: function(a, b, c) {
			this.set("UsrContr", a);
			this.onUsrFilterChanged();
		},
 
		myNameChanged: function(a, b, c) {
			this.set("UsrMyName", a);
			this.onUsrFilterChanged();	
		},
 
		addCallBack: function(args) {
		  this.selectedRows = args.selectedRows.getItems();
 
			var ids = [];
			var names = [];
			this.selectedRows.forEach(function(item) {
				ids.push(item.Id);
				names.push(item.Name);
		   });
			this.set("UsrContr",names);
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').value = names;
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').focus();
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').blur();
		},
 
 		openMyLook: function(){
			var config = {
				entitySchemaName: "Account",
				columns: ["Name"]
			};
			this.openLookup(config, this.addCallBack, this);
		},
		onDel: function(){
			document.getElementById('OrderSectionV2PP_NumberTextEdit-el').value = null;
			this.set("UsrPPNumberFilter", "");
			this.onUsrFilterChanged();
		},
		onDel2: function(){
			document.getElementById('OrderSectionV2my_NumberTextEdit-el').value = null;
			this.set("UsrMyNumberFilter", "");
			this.onUsrFilterChanged();
		},
		onDel3: function(){
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').value = null;
			this.set("UsrContrFilter", "");
			this.onUsrFilterChanged();
		},
		onDel4: function(){
			document.getElementById('OrderSectionV2my_NameTextEdit-el').value = null;
			this.set("UsrNameFilter", "");
			this.onUsrFilterChanged();
		},
 
		}
	};
});

 

Анастасия Шумейко,

Добрый день.

 

Вам нужно проверить уходит ли запрос на получение количества записей.

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

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

Анастасія Шумейко,

А поделитесь, пожалуйста, способом сделать свои кастомные быстрые фильтры ?

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

Привет!

 

При синхронизации в оффлайн режиме не импортируются значения колонок одного из объектов. При чем данная проблема воспроизводится только при синхронизации непосредственно из самого мобильного устройства (версия приложения на устройстве 7.17.3). 

При синхронизации с эмулятора все работает корректно.



Колонки объекта и их настройка синхронизации в манифесте:

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



Ловлю запрос в профайлере при синхронизации с эмулятора:Изображение удалено.

Ловлю запрос при синхронизации с приложения на мобильном устройстве:

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



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

Нравится

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

Привет!

 

Мы сталкивались с подобным кейсом. Проблема была в том, что был задублированный в одном из манифестов  объект импорта. В итоге, при слиянии манифестов в результирующем конфиге присутствовали две настройки импорта для одного объекта. Один с дополнительными колонками, второй - нет. Брался второй конфиг при формировании запроса к серверу.

 

Привет!

 

Мы сталкивались с подобным кейсом. Проблема была в том, что был задублированный в одном из манифестов  объект импорта. В итоге, при слиянии манифестов в результирующем конфиге присутствовали две настройки импорта для одного объекта. Один с дополнительными колонками, второй - нет. Брался второй конфиг при формировании запроса к серверу.

 

Зезюков Сергей Aлександрович,

Спасибо, действительно в одном из пакетов в манифесте был дубль объекта SupplyPaymentTemplate

Показать все комментарии
Работаю с FastReport (Создание провайдера данных отчета) и возник вопрос. 
Как найти Guid entitySchemaUId? 
В примере который есть (Знаменательные события контакта(пример)) указано 
private readonly Guid _contactEntitySchemaUId = new Guid("41af89e9-750b-4ebb-8cac-ff39b64841e");

Когда, создаю по примеру, то требуется поменять Guid, то откуда беру (из объекта к прим.: (0/ClientApp/#/EntitySchemaDesigner/41af89e9-750b-4ebb-8cac-ff39b64841ec) не правильно, т.к. при попытке печати отчета выходит ошибка неполадки сервераИзображение удалено.

Нравится

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

SQL:

select UId
from SysSchema
where Name = 'Contact' and ExtendParent = 0



C#:

UserConnection.EntitySchemaManager.GetInstanceByName("Contact").UId

 

Добрый день.

 

Получить UId схемы можно запросом из таблицы:

select UId
from SysSchema
where Caption = N'<Заголовок схемы>'

 

SQL:

select UId
from SysSchema
where Name = 'Contact' and ExtendParent = 0



C#:

UserConnection.EntitySchemaManager.GetInstanceByName("Contact").UId

 

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

не совсем правильно, так как ваш запрос вернет несколько строк, для каждой замещенной схемы. А нужно взять UId самого базового объекта.

Владислав Литвинчук,

привет , а что будет самым базовым объектом для Lead , я перебирал буквально каждый , но не с одним фаст репорт не заработал, просто выдает ошибку загрузки и все, хотя в примере из академии на объекте контакта все норм

Где ExtendParent = 0, как в моем запросе выше.

Владислав Литвинчук,

проставила вместо 0 false, иначе выдавал ошибку 

Он выдал две записи, какую все же из них следует выбрать?

Анастасия Демидова,

0 - MS, false - Postgre скорее всего.

Данный запрос не может выдать 2 записи. В системе сожет быть только 1 схема объекта без наследования.

Можно скриншот запроса и результата выборки?

Владислав Литвинчук,

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

Доброго времени суток! 

 

Столкнулся с проблемой при настройке синхронизации с почтой. У меня продукт ServiceEnterprise. Сервис ExchangeListener настроен согласно инструкции на академии (все необходимые фичи включены, почтовый сервер настроен). На версии 7.17.1 все отлично работает, как IMAP/SMTP, так и Exhange сервера. Проблема в том, что на версии 7.17.2, 7.17.3 при настройке почтового ящика получаю ошибку 

 

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

 

В логах приложения следующее: 

2021-04-07 09:54:53,829 [255] WARN IIS APPPOOL\SE_7173 IsServerValid - Mailbox ********* didn't pass validation with these credentials, info: Sending test message: The remote server returned an error: (404) Not Found.

 

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

 

Нравится

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

Паламарчук Максим Олегович,

Попробуйте, пожалуйста, поставить новую версию сервиса ("переразвернуть" helm-пакет). Сейчас версия 0.8.26.

У вас слишком она старая.

У нас была похожая ситуация (на почте zimbra). Помогло сменить порт SMTP на 465 в настройках почтовых провайдеров

Владимир Соколов, спасибо за ответ, но проблема не в этом.

проверил настройки - 465-й порт уже был выбран,

 

 

Максим, здравствуйте! 

 

Ваше приложение находится в облаке или расположен на ваших серверах (on-site)?

Пробовали ли добавить ukr.net почту с такими параметрами, например, Outlook или The Bat?

 

Проблема с любым почтовым провайдером или только ukr.net? Пробовали добавить Gmail?

 

На текущем этапе нужно понять, проблема с почтовым ящиком, с почтовым провайдером, с приложением или с микросервисом.

Дмитрий, здравствуйте!

 

Приложение он-сайт.

 

У меня есть несколько почт - ukr.net(провайдер imap) и корпоративная(провайдер exchange). Все работают на версии 7.17.1. На версиях 7.17.2 и 3 с идентичними настройками провайдеров и ящиков ни одна не работает.

 

Я пинговал подписки листенеров микросервиса (адрес сервера)/api/listeners/status - там есть подписки от сайта 7.17.1, а от более новых версий - нет.

 

Также открывал страницу диагностики - там все верно настроено

 

Паламарчук Максим Олегович,

Попробуйте, пожалуйста, поставить новую версию сервиса ("переразвернуть" helm-пакет). Сейчас версия 0.8.26.

У вас слишком она старая.

Дмитрий,

 

спасибо попробую

Дмитрий,

 

действительно на новом сервисе все взлетело. Спасибо большое!

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

Здравствуйте. В компании внедряется решение по взысканию. Есть потребность в А/Б тестировании стратегий, (он же Champion-Challenger).

Вопрос: имеется ли в Сreatio функционал для такого тестирования?



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

Пробовал использовать дату рождения "заканчивается на 1", это позволяет выбрать клиентов по 10%. Но по условию теста нужно 15%.

Подскажите у кого какой опыт в тестировании стратегий. 

 

Нравится

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

Всем доброго дня! Подскажите можно ли как-то отфитровать список  в "Фильтры/группы" - "Добавить условие" ? Изменение поведения в Объекте на режим "Никогда" не подходит(нужно видеть фильтры в расширенном режиме). 

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

Нравится

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

Анастасия, в каждом разделе системы отображение первого поля при быстром поиске заложено в параметре PRIMARY_DISPLAY_COLUMN (Отображаемое значение). Например, для раздела Контакты это поле [ФИО].

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

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

Однако данный вариант также предполагает использование средств разработки. Более детальнее описано в статье по ссылке: https://academy.terrasoft.ua/docs/developer/elements_and_components/bas…

Алёна Доля,

Хотелось бы отредактировать значения именно в базовом списке, 

в "Фильтры/группы" - "Добавить условие" и повыкидывать оттуда не нужные поля. 

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

Здравствуйте, коллеги. Нужно помощь в организации тестирования стратегий. В компании развернуто решение для collection. Имеется потребность тестировать стратегии на предмет эффективности согласно подходу А/Б тестирования, он же Champion-Challenger. Стратегий более 25 шт.  

Основная проблема как сделать слепую (рандомную) выборку согласно условиям теста и при этом количество клиентов должно быть одинаковым.

Например нужно взять 30% новых клиентов для конкретной стратегии и из них по 15 % это тестовая и контрольная группа. И на каждой группе применить разные стратегии, старую и новую, Champion-Challenger.  

 

Для рандомизации пробовал использовать последние цифры дня рождения, "заканчивается на 1" и т.п., но такие условия дают выборку только по 10%. Как вариант ИНН клиента, но насколько знаю ИНН не совсем рандомен. Кроме того выборка дает разное количество клиентов для отработки. Например, 386 и 315 т.е. с досточно большой разницей, что "смажет" результат.

Как вариант генерировать еще 1му полю 0 и 1 рандомно, что бы поделить на 2 группы.

 

Вопросы:

  1. Есть ли в Сreatio функционал для автоматизированного А/Б тестирования? Есть информация, что есть функционал для решения Маркетинг, но здесь немного другая ситуация. Т.к. клиенты заходят залповой загрузкой из основной учетной системы, а не извне в рандомном порядке и нельзя предсказать количество клиентов для тестируемой стратегии.
  2. Если у кого нибудь опыт в подобном тестировании в среде creatio?
  3. Есть ли у кого опыт в рандомизации?
  4. Так же вопрос как оценить результаты теста. Т.е. как сформировать отчет по выборке. Понятно, что в Creatio должны быть id теста как минимум привязанный к клиенту. И возможно в соотношении 1н ко многим. 

 

Из доступных параметров: дата рождения клиента, дата выхода на просрочку, ИНН, сотовый телефон.  

 

Пример условий стратегии на скриншоте.



По продукту вроде Financial Services.

 

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

Нравится

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

В версии 7.17.3 появился новый элемент [ Произвольное распределение ], который позволяет случайным образом направить участников по разным веткам кампании. Данный элемент удобно использовать для контрольных групп, сплит-тестов. 

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