Фильтры

Пытаюсь сделать так

var update = this.Ext.create("Terrasoft.UpdateQuery", {rootSchemaName: this.entitySchemaName});
update.filters.add("IdFilter", this.Terrasoft.createColumnFilterWithParameter("Id", selectedRows));
update.setParameterValue("B2BClient", Terrasoft.GUID_EMPTY, Terrasoft.DataValueType.GUID);
update.execute(function() {
	this.updateDetail({reloadAll: true});
}, this);

Упорно ничего не работает. 

Даже если писать вместо Terrasoft.GUID_EMPTY null или  Terrasoft.DataValueType.LOOKUP, выдает Uncaught Идентификатор GUID должен содержать 32 цифры и 4 дефиса (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

Нравится

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

Лёш, проблема не там где ищешь.

Ты фильтр добавляешь selectedRows а тип фильтра используешь как для this.get("Id").

Ошибка в том что фильтр ожидает от тебя не array а GUID.

Для массива измени тип фильтра на createColumnInFilterWithParameters.

А в исходниках кстати указано что апдейте надо Null передавать, а не GuidEmpty

Добрый вечер.

 

Попробуйте написать таким образом:

update.setParameterValue("B2BClient", null, Terrasoft.DataValueType.LOOKUP);

 

Лёш, проблема не там где ищешь.

Ты фильтр добавляешь selectedRows а тип фильтра используешь как для this.get("Id").

Ошибка в том что фильтр ожидает от тебя не array а GUID.

Для массива измени тип фильтра на createColumnInFilterWithParameters.

А в исходниках кстати указано что апдейте надо Null передавать, а не GuidEmpty

В конфигурации встречается и работает нормально null и с Terrasoft.DataValueType.GUID тоже. Например, в FileDetail:

var update = Ext.create("Terrasoft.UpdateQuery", {
	rootSchemaName: this.entitySchema.name
});
update.enablePrimaryColumnFilter(itemId);
update.setParameterValue("LockedOn", currentDateTime, Terrasoft.DataValueType.DATE_TIME);
if (isLocked) {
	update.setParameterValue("LockedBy", Terrasoft.SysValue.CURRENT_USER_CONTACT.value,
		Terrasoft.DataValueType.GUID);
} else {
	update.setParameterValue("LockedBy", null, Terrasoft.DataValueType.GUID);
}
update.execute(function(response) {
...

 

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

Здравствуйте,
у меня есть Процесс который запускаеться при добавлении записи, мне в нем нужно пользователю вывести информационное вспливающее сообщение, можете подсказать варианты как это можно сделать.
Использую BPM 7.15

 

Нравится

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

Спасибо, подошло.

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

Добрый день!

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

Ошибка на скриншоте

Нравится

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

Здравствуйте, Николай!

Если у Вас версия 7.16.1, то IMAP-почта может не добавляться из-за ошибки использования STARTTLS в пакете OldEmailIntegration. Возможно, и с Exchange причина та же. 

Исправление включено в  7.16.2.
Для версий 7.16.1 нужно установить новую версию пакета OldEmailIntegration через Дизайнер системы - Установка и удаление приложений. Пакет можно получить, обратившись в службу поддержки.

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

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

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

 

Заранее благодарю за ваши ответы.

Нравится

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

Мария, этот механизм реализован во многих схемах. Для плитки активности интерфейс описан в схеме BaseDashboardItemViewConfig, а логика — в ActivityDashboardItemViewModel и её родителях EntityDashboardItemViewModel и BaseDashboardItemViewModel. В них можно увидеть кнопку «Завершить» (Execute) и её логику заголовка, видимости и нажатия. А сами названия этих схем прописаны в схеме SectionActionsDashboard в пакете ActionsDashboard в функции:

/**
 * @inheritdoc Terrasoft.BaseActionsDashboard#initDashboardConfig
 * @override
 */
initDashboardConfig: function() {
	this.callParent(arguments);
	const dashboardConfig = this.get("DashboardConfig");
	const processItemsConfig = {
		"VwProcessDashboard": {
			masterColumnName: "Id",
			referenceColumnName: "EntityId",
			viewModelClassName: "Terrasoft.ProcessDashboardItemViewModel",
			viewConfigClassName: "Terrasoft.BaseDashboardItemViewConfig"
		}
	};
	const activityItemsConfig = {
		"Activity": {
			viewModelClassName: "Terrasoft.ActivityDashboardItemViewModel",
			viewConfigClassName: "Terrasoft.BaseDashboardItemViewConfig"
		}
	};
	const approvalItemsConfig = this._getApprovalItemsConfig();
	const extendedConfig = this.values.dashboardConfig || {};
	Ext.merge(dashboardConfig, processItemsConfig);
	Ext.merge(dashboardConfig, activityItemsConfig);
	Ext.merge(dashboardConfig, extendedConfig);
	Ext.merge(dashboardConfig, approvalItemsConfig);
	this.set("DashboardConfig", dashboardConfig);
},
 
/**
 * Returns approval items config.
 * @private
 * @return {Object}
 */
_getApprovalItemsConfig: function() {
	const config = {};
	const approvalSchemaName = this.get("ApprovalSchemaName");
	if (approvalSchemaName) {
		config[approvalSchemaName] = {
			masterColumnName: "Id",
			referenceColumnName: this.get("ApprovalReferenceColumnName"),
			viewModelClassName: "Terrasoft.ApprovalDashboardItemViewModel",
			viewConfigClassName: "Terrasoft.ApprovalDashboardItemViewConfig"
		};
	}
	return config;
},

Соответственно, Вам надо будет делать свои схемы-наследники этих, добавлять там кнопку и заместить SectionActionsDashboard на версию с их упоминанием. Для примера, для виз в схемах ApprovalDashboardItemViewModel и ApprovalDashboardItemViewConfig сделана своя логика с несколькими кнопками, а те схемы унаследованы от тех же EntityDashboardItemViewModel и BaseDashboardItemViewConfig.

 

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

Здравствуйте! На 7.16.1 необходимо настроить поиск дублей в Контрагенте по кастомному полю (ИНН). Добавил хранимую процедуру и зарегистрировал её, как описано в данной статье: https://academy.terrasoft.ru/documents/technic-sdk/7-11/dobavlenie-pravila-poiska-dubley?_ga=2.85605657.1051876412.1592819009-1256785345.1592483512. Установил признак "Использовать при сохранении", но при сохранении не отрабатывает, хотя при массовом поиске дубли находит. При этом стандартные правила отрабатывают при сохранении, если включить этот признак. 
Название кастомного поля: InfTIN
Ссылка на код процедуры: https://pastebin.com/Gwir4eDg
Ссылка на код регистрации правила: https://pastebin.com/L9uVR8kR

Нравится

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

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

 

Что интересно, если в Вашей ссылке поменять версию на 7.16, заголовок сменится на Добавление правила массового поиска дублей | Creatio Academy и содержит примечание:

Описанный процесс добавления правила массового поиска дублей актуален для Creatio версий 7.13.2 и ниже. Для версий системы 7.13.4 и выше функциональность поиска дублей описана в статье “Поиск и объединение дублей”, а работа с правилами поиска дублей при сохранении записи — в статье "Добавление правила поиска дублей при сохранении записи".

Поскольку у Вас 7.16.1, эта статья не подходит, выберите подходящую статью.

 

Зверев Александр,

В самом начале данной статьи есть предупреждение:

Описанный процесс добавления правила поиска дублей актуален для Creatio версий 7.13.2 и ниже. Для версий системы 7.13.4 и выше функциональность поиска дублей описана в статье “Поиск и объединение дублей”, а работа с правилами массового поиска дублей — в статье "Добавление правила массового поиска дублей".

При этом процедура работает, похожа на стандартные процедуры, которые работают при сохранении, при установке признака "Использовать при сохранении".
Не хотелось бы завязывать поиск дублей на функциональности для версий 7.13.2 и ниже, ведь если в последующих обновлениях её поправят, то отвалится поиск дублей. 

Для версии 7.16 поиск дублей описан в статьях «Как выполнить поиск дублей», «Как работает поиск дублей» и «Правила поиска дублей», там хранимки уже не упоминаются. Уверены, что те стандартные способы, с которыми сравниваете, используют такие хранимки?

Зверев Александр,

В статье "Правила поиска дублей" описывается достаточно странный процесс, потому что в "Правила поиска дублей" нет кнопки добавить. 

При этом, стандартные правила используют такие же хранимые процедуры. Например, правило поиска дублей контрагента по имени: https://pastebin.com/iKnzi8Nm

Кроме того, все правила описаны в таблице DuplicatesRule, которая явно указывает на хранимые процедуры.

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

Зверев Александр,

Но по статье для 7.16 необходимо замещение модулей, а с версии 7.13 оно запрещено

Где именно? Статья «Добавление правила поиска дублей при сохранении записи», несмотря на адрес с цифрой 16, тоже, похоже, относится к версии до 7.13.2.

 

По изначальному вопросу: если у Вас 7.16.1, те правила поиска, которые с хранимкой и наподобие которых Вы хотите сделать своё, точно ли отрабатывают или остались от старых версий?

 

Зверев Александр,

Да, я именно про эту статью. 

Они, скорее всего, остались от старых версий, но они отрабатывают.

В DuplicatesRuleManager в функции проверяются условия для правил:

/// <inheritdoc cref="IDuplicatesRuleManager.GetDuplicatesRules(string)"/>
public IEnumerable<DuplicatesRuleDTO> GetDuplicatesRules(string schemaName) {
	return GetAllDuplicatesRules()
		.Where(rule => rule.SchemaName == schemaName &&
			(schemaName == LeadSchemaName ? rule.IsActive : rule.UseAtSave) &&
			(string.IsNullOrEmpty(rule.SearchSchemaName) || rule.SearchSchemaName == schemaName));
}

Проверьте, все ли они выполняются для Вашего.

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