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

Нравится

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

Добрый день!

 

Уточните, пожалуйста, что вы имеете ввиду под " все значения коллекции данных"? Если есть возможность, предоставьте, пожалуйста, скриншот для лучшего понимания вашего вопроса.

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

Добрый день! 

 

Просьба подсказать, как в коде делать проверку, входит ли пользователь в список пользователи/роли, который описан в "Доступ по операциям" и привязать эту проверку при нажатии на кнопку. Если нужно в какой-то момент выдать права на кнопку определенному сотруднику, то можно просто добавить в список и проверка будет отработает.

Нравится

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

Добрый день!



Мы проверяем в момент открытия страницы, заполняя атрибут.

А потом уже этот атрибут используем, например, в бизнес-правилах



 

RightUtilities.checkCanExecuteOperation({operation: "UsrCanReadSomething"}, function(result) {
					this.set("UsrCanReadSomething", result);
				}, this);

 

Владимир Соколов,

Спасибо большое! 

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

Всем привет! При обновлении системы возникает ошибка в пакете Exchange (ошибка на версии 7.18.2):

Продукт: BankSales_BankCustomerJourney_Lending_Marketing

Версия: 7.16.2.1600 -> 7.18.5

Dbo: MSSQL

Ошибка:

[19:19:13] 1) D:\Work\Apps\MMB_7.18.5\Terrasoft.WebApp\Terrasoft.Configuration\Autogenerated\Src\ExchangeSyncService.Exchange.cs(125,39) error CS0029: Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Collections.Generic.List' 

[19:19:13] 2) D:\Work\Apps\MMB_7.18.5\Terrasoft.WebApp\Terrasoft.Configuration\Autogenerated\Src\ExchangeUtility.Exchange.cs(248,11) error CS0029: Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Collections.Generic.List' 

[19:19:13] Utility finished working. 

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

Нравится

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

Добрый день.

 

Рекомендуем вам обратится в техническую поддержку Creatio.

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

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

Нравится

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

Александр, 



мне кажется, достаточно простого процесса, который запускается на добавление лида и изменения поля Stage. И он будет записывать нужные вам данные в нужное место

Владимир Соколов,

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

Aleksandrs A,

С этим проблем не замечали - процесс очень простой, и выполняется быстро. 



Проблемы бывают, когда процесс вызывает множество инстанций подпроцесса, когда долго обрабатываются какие-то данные. 



У нас такой процесс длится 1.5-4 секунды. Вряд ли у вас тысячи лидов одновременно переходят со стадии на стадию (если только нет каких-то массовых действий, которые лучше производить в нерабочее время).



Возможно, процесс внутри Event listener будет выполняться быстрее, но это уже требует действий разработчика.

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

Проблема с window.alert() в том, что в браузере его можно отключить(по крайней мере в лисе), и тогда пользователь не будет видеть эти уведомления, а хочется сделать так, чтобы пользователь уведомление это всегда видел. Есть ли какой-то аналог, может эти стандартные белые окошки с синими кнопками? Их то вроде никак не отключишь.

Нравится

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

Есть метод showInformationDialog, который показывает модальное окно с сообщением и его в браузере не выключить. Примеры использования можно найти в коде, там один аргумент, в который нужно записать, что показать в сообщении. Можете использовать его вместо window.alert()

Есть метод showInformationDialog, который показывает модальное окно с сообщением и его в браузере не выключить. Примеры использования можно найти в коде, там один аргумент, в который нужно записать, что показать в сообщении. Можете использовать его вместо window.alert()

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

Есть задача добавить валидацию на странице Лида при переходе со стадии Qualification на следующую. Переход автоматический выключен, перехода мануального конкретно со стадии Qualification нет, переход выполняется по нажатию кнопки QUALIFY. Я так понимаю, в данной ситуации asyncValidate не поможет.  Соотвественно, хочу залезть в логику кнопки и добавить валидацию там(суть валидации в том, чтобы не дать перейти на следующую стадию, если условия не выполнены). Правильный ли подход для решение этой задачи, и если да, то где искать метод, отвечающий за эту кнопку?

Нравится

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

При нажатии на кнопку Qualify происходит вызов метода onLeadManagementButtonClick из LeadManagementUtilities. Этот метод можно переопределить в LeadPageV2 и, в результате проверки, вызывать родительский метод (this.callParent(arguments);) или обрывать выполнение метода.

При нажатии на кнопку Qualify происходит вызов метода onLeadManagementButtonClick из LeadManagementUtilities. Этот метод можно переопределить в LeadPageV2 и, в результате проверки, вызывать родительский метод (this.callParent(arguments);) или обрывать выполнение метода.

Oleg Drobina,

 Спасибо, так и сделал.

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

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

Нравится

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

Неправильный подход.

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

 

Для проверки необходимо выполнить запрос в базу с помощью EntitySchemaQuery, и посмотреть есть ли записи в объекте LeadFile с фильтром Lead = свойству Id страницы лида.

Неправильный подход.

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

 

Для проверки необходимо выполнить запрос в базу с помощью EntitySchemaQuery, и посмотреть есть ли записи в объекте LeadFile с фильтром Lead = свойству Id страницы лида.

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

 спасибо! Что-то я и забыл про то, что init() аттачментов не запустится пока не откроют таб с ними.

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

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

Нравится

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

Добрый день!



Мы делаем бизнес-правила обязательности полей в зависимости от стадий



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



Владимир

Добрый день!



Мы делаем бизнес-правила обязательности полей в зависимости от стадий



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



Владимир

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

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

Нравится

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

В своём пакете заместить объект активности и во встроенном БП заменить две функции с этой логикой пустыми:

#region Methods: Public
 
//Не записывать в деталь Участников
public override void UpdateParticipantsByOwnerContact() {}
public override void CreateActivityParticipantsFromInsertedValues() {}
 
#endregion

 

Спасибо, попробую ваш вариант

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

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

// Добавить фильтр по типу Обращения
initFixedFiltersConfig: function() {
	this.callParent();
	var defvalue = [
		{value: "13fa5292-c957-4452-8bea-97e5cd381ed0",displayValue: "IT"}, 
		{value: "51c2810b-2c34-4046-a4bf-2cca62b3e10a",displayValue: "Maintenance"}
	];
	var ffc = this.get("FixedFilterConfig"); // Прошлые фильтры
	var fixedFilterConfig = {
		name: "KORUSLOOKUPCaseType",
		columnName: "KORUSLOOKUPCaseType",
		caption: "Тип",
		isCustomFilter: true,
		dataValueType: this.Terrasoft.DataValueType.LOOKUP,
		appendCurrentContactMenuItem: false,
        addNewFilterCaption: this.get("Resources.Strings.SelectFilterTypeCaption"), // Выбрать тип
        hint: this.get("Resources.Strings.SelectFilterTypeCaption"), // Выберите тип обращения
		buttonImageConfig: this.get("Resources.Images.SelectFilterTypeImage"),
		defValue: defvalue,
		//appendFilter: this.appendFixedCaseTypeFilter, - добавление фильтра ( не меняет визуал)
		//getFilter: this.appendFixedCaseTypeFilter
	};
	if (ffc != undefined) {
		ffc.filters.push(fixedFilterConfig);
		this.set("FixedFilterConfig", ffc);
	}
},

Фильтр работает как надо, но после последовала просьба очищать фильтр при выборе нового значения , по сути при нажатии на кнопку "Выбрать тип", необходимо реализовать сначала логику кнопки "Очистить"

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

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

Нравится

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

Добрый день,

 

Реализовать эту функциональность будет крайне сложно, если возможно впринципе, потому что замещения FixedFilterViewModelV2 с моей стороны ничего не дали. Необходимо завязываться на метод lookupSelecting в FixedFilterViewModelV2, потому что колбек функция в ней как раз отвечает за обновление фильтра. В контексте выполнения функции можно сохранить текущий фильтр (вычитать this.$Filters и проверить есть ли там что-то сейчас и если есть, то очищать этот фильтр). Когда в открытом попап окне выбирается новое условие, то колбек вызывает метод addNonPeriodFilterValue, который добавляет к существующей фильтрации ту, которую мы выбираем из попап окна, внутри которого срабатывает метод filterChanged, который обновляет фильтр на UI. То есть, отталкиваться нужно было бы от метода lookupSelecting, но, похоже, это придется полностью переписывать логику View модели и переподключать её к схеме раздела.

Спасибо за ваш ответ, попробую реализовать его или какие-то обходные решения

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