Вопрос

Добрый день! Подскажите, пожалуйста, можно ли создать какой-то класс, методы которого можно будет вызывать из бизнес-процессов и сервисов? Например, для записи в объект логов определенных событий в серверной части

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

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

Можно

В БП вы можете использовать элемент Сценарий для выполнения c# кода, а в сервисах напрямую подключать ваш код.

А если оформить как веб-сервис, то можно будет запускать из клиентского кода, как тут в комментарии. И в БП есть элемент запуска веб-сервиса без необходимости программирования, только делать анонимным или предусмотреть авторизацию. 

Григорий Чех,

Тут вопрос в том, как организовать вызов кода, чтобы не копипастить его в каждом процессе или сервисе. То есть это можно было бы решить через внешнюю библиотеку, но она должна будет иметь ссылки на библиотеки Terrasoft, поэтому придется переделывать её, например, при обновлении подключенных библиотек до новой версии framework. Этого делать не хотелось бы. Может быть, есть более правильное решение

Если взаимодействовать не через C#-код, а чисто как с веб-сервисом, вызов по URL и получение ответа, то ссылки не потребуются.

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

Добрый день. Подскажите как можно отфильтровать справочник контактов по группе? Смысл в том что при выборе из справочника в списке должны быть сотрудники только определенной группы (у нас тебе группа "телефермеры")

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

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

Доброе утро.

Ваша группа 'Телефермеры' - это группа администрирования или какая-то другая?

Телефермеры — это как телепузики?smiley

Если это группа администрировования, см. тут. Если группа контактов, то условие фильтра будет даже проще, только по полю FolderId в таблице ContactInFolder. 

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

"Организационные роли"

Александр Тыра,

Посмотрите решение по ссылке выше, которое привел Александр Зверев.

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

"Организационные роли" работают, а вот "Функциональные роли" нет

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

Спасибо, решение отличное, но только работают так только 

"Организационные роли", а вот "Функциональные роли" нет

Для функциональной должно быть похоже, только другой набор полей с квадратными скобками. В таблице SysAdminUnitInRole хранятся и те, и те роли.

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

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

Если есть доступ к базе, напишите SQL-запрос, обращающийся к Contact, SysAdminUnit, SysUserInRole и SysAdminUnitInRole и получающий нужную Вам выборку контактов, а затем адаптируйте его под синтаксис с квадратными скобками.

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

спасибо за совет, попробую

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

Select * from "Contact" INNER JOIN "SysAdminUnit" ON "Contact"."Id" = "SysAdminUnit"."ContactId"
where "SysAdminUnit"."Id" IN (Select "SysAdminUnitId" from "SysAdminUnitInRole" where "SysAdminUnitRoleId" = '{C7C2A8E0-C54A-485B-A7A7-6FE3590E769B}')

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

 

filterGroup.add("IsGroupAccess",
    Terrasoft.createColumnFilterWithParameter(
    Terrasoft.ComparisonType.EQUAL,
    "[SysAdminUnit:Contact].[SysAdminUnitInRole:SysAdminUnit].SysAdminUnitRole.Id",
    "{C7C2A8E0-C54A-485B-A7A7-6FE3590E769B}"));

так пробую - не работает

Александр Тыра,

1. Посмотрите sql-профайлером, какой запрос формируется в базу данных при вызове Ввшего кода.

2. Также посмотрите статьи по принципам построения путей к колонкам вот эту и эту.

 

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

тут как раз пишут что к таблице этой не добраться такими запросами

https://community.terrasoft.ua/questions/esq-sintaksis-zaprosa-pri-cepo…

Александр Тыра,

1. Можно сделать эту группу не функциональной, а организационной ролью.

2. Можно попробовать написать свое представление и для фильтрации нужных контактов завязаться на это представление.

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

Задача в том что бы скрыть группу полей. Осталось только вернуть значение true или false для функции visibleReasons но не как не доходит как, сделал но понимаю что так не работает это

isAutoActivity: function(callback, scope){
	var recordId = this.get("PrimaryColumnValue");
	var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
		rootSchemaName: "Activity"
	});
	esq.addColumn("KtIsAutoActivity", "KtIsAutoActivity");
	esq.getEntity(recordId, function(result) {
		this.set("IsAutoActivity", result.entity.get("KtIsAutoActivity"));
		if (callback) {
			callback.call(scope || this);
		}
	}, this);
},
visibleReasons: function() {
	Terrasoft.chain(
		function(next) {
			this.isAutoActivity(next, this);
		},
		function(){
			if (this.get("IsAutoActivity")) {
				return false;
			}
			return true;
		},
		this);
}

 

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

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

А если просто при открытии карточки выполнить 

isAutoActivity и дальше забиндится на 
IsAutoActivity которое при открытии будет проиницилизировано!

Григорий Чех, 

Сработало с init, только теперь вопрос - есть ли смысл делать такую конструкцию?

init: function(callback, scope) {
	this.callParent([function() {
		this.Terrasoft.chain(
			function(next) {
				this.isAutoActivity(next, this);
			},
			function(){
				if (callback) {
					callback.call(scope || this);
				}
			},this);
	}, this]);
},
isAutoActivity: function(callback, scope){
	var recordId = this.get("PrimaryColumnValue");
	var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
		rootSchemaName: "Activity"
	});
	esq.addColumn("KtIsAutoActivity", "KtIsAutoActivity");
	esq.getEntity(recordId, function(result) {
		this.set("IsAutoActivity", result.entity.get("KtIsAutoActivity"));
		if (callback) {
			callback.call(scope || this);
		}
	}, this);
}

или достаточно сделать?

init: function(callback, scope) {
	this.callParent([function() {
		var recordId = this.get("PrimaryColumnValue");
		var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
			rootSchemaName: "Activity"
		});
		esq.addColumn("KtIsAutoActivity", "KtIsAutoActivity");
		esq.getEntity(recordId, function(result) {
			this.set("IsAutoActivity", result.entity.get("KtIsAutoActivity"));
			if (callback) {
				callback.call(scope || this);
			}
		}, this);
	}, this]);
}

 

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

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

Добрый день!

Подскажите, как в системе Service Enterpise правильно настроить календарь 24x7 в справочнике Календари.

Если указывать рабочее время с 0:00 до 23:59 то при подсчёте, например, кол-ва минут

между датами регистрации и планового решения обращения с учетом  календаря 24x7, теряются минуты.

Для рас чета используется функция  GetWorkingTimeSpan из схемы TermCalculatorActions.

Пример:

Дата создания: 2019-10-01 12:21:54.0000000

Дата планового решения: 2019-10-03 12:21:39.0000000

Срок решения: 2 календарных дня.

sql datediff: 2880 минут

расчёт с учетом календаря: 2878

 

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

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

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

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

Вы отметили, что работаете в версии 7.12, а на текущий момент актуальна версия 7.14.4. Поэтому попробуйте развернуть тестовое приложение прямо с сайта terrasoft и посмотреть в его конфигурации не вносились ли изменения/исправления в используемую Вами функцию. Возможно, что описываемая проблема уже решена в более поздних версиях.

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

Добрый день!

Иногда возникает необходимость показать клиенту все доступные в коробке элементы управления. Нашел в папке приложения, в \Terrasoft.WebApp\Resources\ui\demo\demo-main,  модуль, который возвращает конфиг страницы с перечнем котролов и ссылками на демо этих контролов. 

Для чего этот демо-контент? Как можно отобразить эту страницу?

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

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

Судя по наличию такой же папки даже в архиве версии 7.2, это демо-наполнение очень древнее и, скорее всего, несовместимо с UIv2.

Во времена 7.2 интерфейс выглядел примерно так:

 

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

Подскажите где копать. Пакеты были привязаны к svn серверу, но потом решили изменить его на другой (что бы разделить разработку разных групп разработчиков на два svn). Через базу данных в пакетах были изменены Id svn сервера, но при попытке зафиксировать пакет в новом svn он стучится все равно в старый адрес

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

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

Добрый день. Схожий вопрос обсуждался здесь:

https://community.terrasoft.ru/questions/izmenenie-zablokirovanogo-pake…

Если кратко, то посмотрите следующие скрипты:

--Решение проблемы при изменении хранилища
update syspackage set IsChanged = 1, IsLocked = 1 where InstallType=0
update SysSchema set IsChanged = 1, IsLocked = 1 where syspackageid in (select id from syspackage where InstallType=0)
update syspackageschemadata set IsChanged = 1, IsLocked = 1 where syspackageid in (select id from syspackage where InstallType=0)

 

Пащенко Александр Сергеевич,

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

Добрый день.

Если не меняли аттрибут sourceControlAuthPath в ConnectionStrings, то зайдите по пути C:\Windows\Temp\%номер сайта% (номер сайта можно узнать в IIS,нажав "Дополнительные параметры"  на нужном сайте. Удалите эту папку, очистите кэш redis и переавторизуйтесь в хранилище.

Если у вас указан свой путь, то просто удалите содержимое папки указанной по этому пути.

Дмитрий А.,

не помогает тоже

Александр Тыра пишет:

Дмитрий А.,

не помогает тоже

Должно было помочь, если удалили нужную папку и почистили редиску 

Дмитрий А.,

удалил все и почистил редис - не помогло

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

Как можно из клиентского модуля обновить полоску "бизнес-кейса"?

Суть такая - в бизнес процессе выполняется действие, он переводит на другой статус продажу отправляя в конце сообщение которое ловит продажа и проверяет на номер. Если номер продажи совпадает он обновляет полоску "бизнес-процесса". Так вопрос, с сообщением понятно, а вот как заставить принудительно обновить полоску?

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

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

См. такое же обсуждение год назад.

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

С учётом того, что по шагу кейса запускается дополнительная логика вроде создания задач и изменения значения других полей по БП, которую отдельно не дублировали на клиенте, лучше всё же перезагрузить карточку целиком.

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

На портале при попытке загрузить файл валиться ошибка в консоли 

Файл сохраняется, но не обновляется деталь, приходиться обновлять страницу. Была ли у кого то такая проблема? 

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

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

Для начала попробуйте отладиться и определить, в каком месте возникает ошибка.

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

Если ошибка связана с базовой логикой, Вы можете обратиться в службу поддержки Террасофт за помощью в решении этого вопроса.

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

И ещё рекомендую подумать над обновлением до более актуальной версии. На текущий день актуальной является версия 7.14.4.

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

В академии описано как другие системы могут в bpm'online ложить данные, изменять и удалять. А как можно что бы bpm'online делала это в другою систему по api?

Суть в том что нужно сделать интеграцию двустороннюю что бы другая система ложила и модифицировала донные в bpm'online, и сама bpm'online так же ложила по событию данные в другую систему и модифицировала их по api

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

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

Ну так и разработайте web-сервис который будет принимать данные от сторонней системы и отдавать данные в неё. А в рамках БП отправляйте данные в свою систему.

Добрый день!

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

Тёскин Дмитрий Валерьевич,

Там система для билинга, в маркете нет такого

В БП есть элемент вызова веб-сервиса с возможностью передать в него значения параметров и загрузки в другие параметры значения из ответа сервиса. Если у интересующей системы есть API для авторизации, нужно будет сначала произвести её, а затем работать с API для управления данными.

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

я совсем забыл про графический способ подключения к api из bpm'online. Спасибо

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

Подскажите пожалуйста, как можно реализовать создание 2-х разделов на базе одного объекта. Я новичёк

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

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

А в чем смысл этого действия? Может быть будет удобнее сделать несколько представлений реестра для одного раздела? Например, по аналогии https://community.terrasoft.ru/articles/realizacia-predstavlenia-dopolnitelnogo-reestra-v-razdele

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