Добрый день ! 

 

Стоит задача направить на почту контакту письмо с оповещением, что контакт был упомянут в Ленте (в любом объекте). Чаще всего это объект Документ.

Нашла на маркетплейс темплейт, который реализует данную задачу на конфигурации Service. https://marketplace.terrasoft.ru/template/uvedomlenie-ob-upominanii-v-l…; Дабы не изобретать велосипед, хотела переделать бизнес-процесс под нашу конфигурацию, но непонятны некоторые позиции в бизнес процессе. Также установила данный темплейт на триальную версию конфигурацию сервис, и протестила его, но уведомления на почту не падают.

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

 

Нравится

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

LilyG,

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

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

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

P.S. Кстати, скриншоты своих изменений Вы так и не прикрепили.

Добрый день.

Все возникшие с настройкой вопросы Вы можете задать разработчику данного бизнес-процесса. Напишите письмо на bpmonlinelabs@bpmonline.com.

Алла Савельева пишет:

Добрый день.

Все возникшие с настройкой вопросы Вы можете задать разработчику данного бизнес-процесса. Напишите письмо на bpmonlinelabs@bpmonline.com.

Добрый день ! 

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

LilyG,

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

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

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

P.S. Кстати, скриншоты своих изменений Вы так и не прикрепили.

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

мне не совсем понятно, для чего используется схема.id у объекта сообщение, можете сказать источники, где я смогу узнать об этом ? Что вообще представляет из себя эта схема ? Гугление ничего не дало по этому вопросу. 

LilyG, причём тут гугление, это же дополнение из маркета, Алла выше привела почту разработчиков.

Судя по этим двум скриншотам, по пустому Id схемы определяется, является ли комментарий в ленте корневым или ответом на другой комментарий и в зависимости от этого отрабатывает различная логика.

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

LilyG, причём тут гугление, это же дополнение из маркета, Алла выше привела почту разработчиков.

Судя по этим двум скриншотам, по пустому Id схемы определяется, является ли комментарий в ленте корневым или ответом на другой комментарий и в зависимости от этого отрабатывает различная логика.

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

Спасибо. 

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

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



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

[#Читать пользователя контакта.Первый элемент результирующей коллекции.Тип подключения#]==0&&[#Message Schema ID#]==[#Cases Schema ID#]&&[#Читать системную настройку NoReplyNotificationMailboxSettings.Первый элемент результирующей коллекции.Значение уникального идентификатора#]!=Guid.Empty&&[#Читать контакта.Первый элемент результирующей коллекции.Email#]!=String.Empty

Тип  подключения пользователя: что это ? я нашла данную колонку в пользователях, вывела её и у всех стоит "0". Но что означает этот ноль непонятно .

Системная настройка не должна быть пустой (это выглядит логично, но я не нашла данную системную настройку "NoReplyNotificationMailboxSettings" в нашей конфигурации и в гугле).

Не пустой email тоже выглядит логично.

И главный вопрос, зачем приравнивать id Схем сообщения и кейса ? 

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

По типу пользователя, см. тему.

Системной настройки с таким кодом стандартно не вижу, возможно, она идёт в пакете с этим БП. Судя по названию, в ней может хранится Id записи о ящике «noreply@...».

Процесс предназначен для работы с напоминаниями раздела обращений, потому и сравнивается Id со схемой Case.

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

Всем добрый день. Версия 7.12.

Есть стандартная функциональность комментирования - Лента https://academy.terrasoft.ru/documents/customer-center/7-14/predstavlenie-lenta

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

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

Нравится

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

Логика детали ленты сделана в схеме SocialFeed, там при нажатии кнопки «Опубликовать» или Enter на клавиатуре вызывается функция onPostPublishClick.

Как вариант, добавить в интересующий раздел новое логическое поле (не забыв запретить его менять тем, кому не надо) и в доработанной onPostPublishClick проверять это значение у текущей записи раздела, если такое поле в разделе есть. Или сделать проверку в вызываемой при обновлении детали функции initModuleViewModel, а также функции onRender, чтобы при запрете отключить возможность отправки вообще.

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

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

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

Нравится

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

Можно

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

Можно

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

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

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

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

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

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

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

Нравится

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

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

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

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

Доброе утро.

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

Телефермеры — это как телепузики?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 которое при открытии будет проиницилизировано!

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

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 и посмотреть в его конфигурации не вносились ли изменения/исправления в используемую Вами функцию. Возможно, что описываемая проблема уже решена в более поздних версиях.

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

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

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

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

Добрый день!

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

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

Нравится

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

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

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

 

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

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

Нравится

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

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

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.

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

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

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

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

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

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