Вопрос

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

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

У меня такой же вопрос

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

Этот механизм реализован в схеме DesktopPopupNotification, функция из которой вместе с параметрами сообщения вызывается в том месте системы, где хотим что-то сообщить. Например, в SectionMergeHelper:

/**
 * Show popup message with the merge info.
 * @param {Number} mergeRecordsCount Count of records to merge.
 */
showMergePopup: function(mergeRecordsCount) {
	var config = this.getMergePopupConfig(mergeRecordsCount);
	DesktopPopupNotification.showNotification(config);
},
 
/**
 * Returns the config of the popup notification.
 * @param {Number} mergeRecordsCount Count of records to merge.
 * @return {Object} Config of the popup notification.
 */
getMergePopupConfig: function(mergeRecordsCount) {
	var bodyTemplate = this.getMergePopupBodyTemplate();
	return {
		id: this.Terrasoft.generateGUID(),
		title: resources.localizableStrings.MergeNotificationTitleTemplate,
		body: this.Ext.String.format(bodyTemplate, mergeRecordsCount),
		icon: this.getMergePopupIconUrl(),
		onShow: this.onShowPopup,
		ignorePageVisibility: true
	};
},

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

Александр, спасибо за развёрнутый ответ! В частности интересуют уведомления об успешном запуске процессов, например при опубликовании обращения или очистки кэша Redis, в схемах процессов вызов данной функции не обнаружил

Похоже на функцию _showSuccessfullyRunProcessPopup в схеме ProcessModuleUtilities.

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

Был создан БП с блоком отправки почты. В тело письма передается HTML-текст через параметр процесса. Всё работает корректно.

Но при повторном открытии и сохранении БП, параметр в графе "Тело Письма" сбрасывается, даже если не щелкать на блок отправки почты. Приходится при каждом изменении БП заново указывать параметр в тело письма. Иначе в письме содержится именно текст [#IsOwner....

Подскажите, можно ли как-то избежать повторения этих действий?

 

 

У меня такой же вопрос

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

Обратитесь в тех поддрежку Terrasoft (Creatio) не забыв указать номер версии используемой  у вас BpmOnline.

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

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

Подскажите как можно из Бизнес процесса обратится к C# методу?

У меня такой же вопрос

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

Добрый день! Здесь -  http://prntscr.com/qr8kpl подключаем нам нужное пространство имен, затем объявляем экземпляр класса и вызываем метод - http://prntscr.com/qr8lqh 

Благодарю

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

Необходимо асинхронно запустить из одного БП другой. Использую элемент скрипт

var manager			= context.UserConnection.ProcessSchemaManager;
var processSchema	= manager.GetInstanceByName("ProcessDealerClaim");
var process			= processSchema.CreateProcess(context.UserConnection);
process.SetPropertyValue("FlipId", Get<Guid>("FlipId"));
process.Execute(context.UserConnection);

И всё бы было хорошо, если бы не версионность, а именно, у БП ProcessDealerClaim есть более новая версия ProcessDealerClaimNewBusiness1. Можно, конечно, вписать ее, но что будет, когда появится ProcessDealerClaimNewBusiness2 ? Переделывать?

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

У меня такой же вопрос

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

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

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

Алла Савельева пишет: Где именно посмотреть? ДЛЛ декомпилировать?

Зачем dll, посмотрите в коде схем, где запускают процессы.

Например, в LeftPanelTopMenuModule фильтруют список процессов по IsMaxVersion:

openProcessPage: function() {
	var vwSysProcessFilters = Terrasoft.createFilterGroup();
	vwSysProcessFilters.name = "vwSysProcessFiler";
	var sysWorkspaceFilter = Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL, "SysWorkspace",
		Terrasoft.SysValue.CURRENT_WORKSPACE.value);
	vwSysProcessFilters.addItem(sysWorkspaceFilter);
	var businessProcessTagFilter = Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL, "TagProperty",
		ConfigurationConstants.SysProcess.BusinessProcessTag);
	vwSysProcessFilters.addItem(businessProcessTagFilter);
	var isMaxVersionFilter = Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL, "IsMaxVersion", true);
	vwSysProcessFilters.addItem(isMaxVersionFilter);
	var config = {
		entitySchemaName: "VwSysProcess",
		isRunProcessPage: true,
		captionLookup: resources.localizableStrings.processLookupCaption,
		multiSelect: false,
		columnName: "Caption",
		filters: vwSysProcessFilters,
		hideActions: true
	};
	var handler = function(args) {
		var activeItems = args.selectedRows.getItems();
		if (!this.Ext.isEmpty(activeItems)) {
			Terrasoft.ProcessModuleUtilities.executeProcess({
	sysProcessId: activeItems[0].Id
});
		}
	};
	LookupUtilities.Open(this.sandbox, config, handler, this, null, false, false);
},

Плюс есть сообщение ActiveProcessSchemaVersionChanged, на которое в некоторых схемах подписываются, например, в VwProcessLibSection.

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

Добрый день!

У нас возникла такая проблема - при нажатии на кнопку "утвердить" (на детали визы), процесс переходит на другую стадию, даже если не заполнены обязательные поля. Подскажите пожалуйста, можно ли как-нибудь это исправить?

У меня такой же вопрос

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

Меня процесс прослушивания событий визы.
И там уже добавить If колонки не заполнены и т.д.

Меня процесс прослушивания событий визы.
И там уже добавить If колонки не заполнены и т.д.

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

Подскажите как можно в C# сделать Serialize в json объект класса

public class ImportCreatioServiceCaseColumns
{
	[JsonPropertyName("idNumber")]
	public string IdNumber { get; set; }
	[JsonPropertyName("typeCase1Name")]
	public string TypeCase0Name { get; set; }
}
public class ImportCreatioProcessCaseColumnsOut
{
	[JsonPropertyName("schemaName")]
	public string BusinessProcessName { get; set; }
	[JsonPropertyName("parameterValues")]
	public ImportCreatioServiceCaseColumns ImportCreatioServiceCaseColumns { get; set; }

}

и привести его к виду 

{
	"schemaName":"KtImportCaseTransferTableInBPMTest",
	"parameterValues":
	[
		{"name":"idNumber","value":"80001019"},
		{"name":"typeCase1Name","value":"Алматы"}
	]
}

?

Это нужно что бы передать body в микровервис для запуска бизнес-процесса с параметрами POST методом.

У меня такой же вопрос

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

Можно подключитье  Json.NET он уже включен в коробке. Подробнее об использовании смотрите https://www.newtonsoft.com/json

 

Как то так

 

sing System;
using Newtonsoft.Json;
 
namespace JsonPrettyPrint
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Product product = new Product
                {
                    Name = "Apple",
                    Expiry = new DateTime(2008, 12, 28),
                    Price = 3.99M,
                    Sizes = new[] { "Small", "Medium", "Large" }
                };
 
            string json = JsonConvert.SerializeObject(product, Formatting.Indented);
            Console.WriteLine(json);
 
            Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
        }
    }
 
    internal class Product
    {
        public String[] Sizes { get; set; }
        public decimal Price { get; set; }
        public DateTime Expiry { get; set; }
        public string Name { get; set; }
    }
}

 

Не работает так как нужен именно такой формат, уже пробовал как Вы советуете 

Григорий Чех пишет:
{"name":"idNumber","value":"80001019"},

Похожий формат обсуждают тут.

 

Зверев Александр пишет:

Похожий формат обсуждают тут.

А Вы пробовали вызывать бизнес-процесс из другого приложения через post вызов передавая параметры через тело запроса? 

Александр, см. тут.

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

Как можно определить, как создана Активность - вручную пользователем или автоматически системой?
Посмотрел параметр Process Item, но он не у всех процессных активностей заполнен

У меня такой же вопрос

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

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

Кстати, была такая идея от Вас же, только речь шла о правах, а не активностях.

И ещё похожая идея, только для определения записей, заведенных по OData.

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

Да, в некоторых проектах делали заполнение названием процесса, но в стандартном элементе "Выполнить задачу" так просто поля не добавить. 
А ещё есть задачи, созданные при элементах "Открыть страницу редактирования", созданные в DCM...

Думал, вдруг есть что-то встроенное уже

Есть стандартный элемент БП «Привязать процесс к объекту», можно брать после создания брать Id задачи и вызывать его.

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

Добрый день.

Через бизнес-процесс настраивается Email. При вызове бизнес-процесса передаются параметры для подстановки в Email.

Подстановка текстовых значений - работает. Вопрос в том, возможно ли подставить в URL переменный параметр. К примеру, стороннюю ссылку.

Также, возможно ли подстановка картинки из передаваемого URL в шаблон письма?
К примеру, штрих-код.

У меня такой же вопрос

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

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

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

Создана преднастроенная страница.

При открытии два обязательных поля

Проблема. Обязательность первого поля не работает. Система позволяет сохранить данные с незаполненным полемИзображение удалено.

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

Так же на атрибут повешен признак isRequired: true

Однако это не дает ровным счетом ничего

Так же, ни последующая валидация при сохранении, ни правила не помогли

Если кто сталкивался с подобным, подскажите как выходили из ситуации

Спасибо

 

У меня такой же вопрос

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

Попробуйте для установки обязательности поля использовать бизнес-правила. 

Подробнее почитайте о пользовательской функциональности настройки бизнес-правил и настройке бизнес-правил в схемах в конфигурации.

Алла Савельева, Пробовал бизнес-правила. Не помогло.
Спасибо

Дубов Андрей Владимирович,

Приведите пример Вашего кода

Без изучения кода карточки сложно сказать.

Как обходной вариант, на уровне БП проверять значение, если пусто, показывать сообщение и карточку повторно, пока не заполнит правильно.

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

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

Ревью
1 комментарий

Здравствуйте, Кирилл!

Передали данное пожелание команде разработки для анализа возможности внедрения такой возможности в будущих версиях продукта.

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

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