Всем привет. Помогите разобраться.

Есть продукт с двумя языками: RU, EN. По умолчанию RU.

Создал пакет, добавил локализацию для 2-х языков, выгрузил в пакет. Локализация для системных настроек задается в Sql-скрипте для 2-х языков.

Проблема. При установке пакета в приложение, где стоит EN язык по умолчанию,(но RU присутствует) нету заголовков для EN языка:

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

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

Если поменять язык на Ru  то все заголовки есть.

Возможно, это связано с тем, что в данные выгружаются локализация только для RU.

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

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

 

Нравится

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

А вы в "Данные" добавили ваши переводы и системные настройки?

Добрый день, Артем.

Скорее всего локализации некорректно привязаны к пакету, либо не привязаны вообще. Посмотрите статью на Академии, посвященную привязке даннных: https://academy.terrasoft.ru/documents/technic-sdkmp/7-12/privyazka-dan…

Литвинко Павел, Антон Малий,

Доброго времени суток. 

В данных прикреплены и системные настройки, и их значения + после установки данных пользовательским скриптом происходит вставка в таблицы типа: "Sys{table}Lcz". Данные с русской локализацией есть, с английской нет.

 

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

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

Добрый день, настроил интеграцию веб сервиса и сейчас настраиваю бизнес процесс по данному сервису, а именно запись всех детали по совершенным входящим и исходящим звонкам через мобильный телефон, и привязка всех этих данных к Детали Звонок в Bpm Online. 

Сам вопрос состоит в том что - все данный которые высылает веб сервис являются " Тип Данных Текст", и только в этом формате они могут попасть в bpm online. К письму прикрепляю скриншот авто генерирующей страницы данных в бизнес процессе , который показывает все данные с веб сервиса при одном запросе (то есть данные одного звонка). Без труда по бизнес процессу в Детали Звонок заполнил Данные - "Номер от" и "Номер Кому", по скольку эти поля в bpm online " строковые (текстовые) как и в веб сервисе, но к примеру:

1. Как в бизнес процессе добавить в детали Звонок, в Справочном Поле "Направление звонка", где есть варианты "Входящий" и "Исходящий", если Веб сервис выдает направление звонка в виде Тип Данных Текстового поля (строковое) в двух вариантах: "1" - это исходящий звонок и "0" - это входящий звонок. Как я понимаю это можно сделать по идее через "Условный поток"  или элемент бизнес процесса "Формула", где по видимому логика на подобие "если Направление Звонка в Веб Сервисе == "1", то далее поток идет в элемент процесса Добавить Данные в Деталь звонок и заполняем там Направление Звонка "Исходящий". К сожалению заполнив в условном потоке условие: 

[#Мои Звонки 1.napravlenie_zvonka#]=="1"  

процесс через данный условный поток не проходит и далее не отрабатывается элемент Добавить Данные в Деталь звонок, как правильно реализовать данную идею ?

2. Необходимо чтоб веб сервис вызывался каждые 3-5 секунд, чтоб синхронизировать звонки с веб сервиса, как решение нашел пока только запуск бизнес процесса через элемент "Начальное Событие Стартовый Таймер", но там минимальное значение 1 мин, то есть бизнес процесс запускается не чаще чем каждые 1 мин, как реализовать начало бизнес процесса (запрос данных с веб сервиса) каждые 3-5 секунд

3. Веб сервис выдает в текстовом формате тип данных (как и все данне) "Дату Звонка" в виде тип данных текст - набор цифр (визуально для нас), а для системы получается в виде текста (в сриншоте видно) пример:

Дата Звонка: 15218316845

Представитель веб сервиса Мои Звонки, сказал:

"по дате звонка - это дата/время в формате unix timetamp (количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года), стандартный формат для передачи дат в числе .."

Вопрос состоит в том как эти данные которые попадают в bpm online в виде Тип Данных Текст преобразовать в Тип Данных Время в формате bpm online и далее чтоб отрабатывался элемент бизнес процесса - Добавить Данные в Деталь звонок и заполнилось поле " Дата Начала", " Дата Завершения" ... где данные поля заполняются/имеют Тип Данных Дата и Время.

Спасибо

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

Нравится

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

Направления звонка это справочник, туда можно вставлять значения кода в виде чисел и он будет соответственно показывать ваше состояние. (пример ниже).

Пример как решить проблему с UTC тоже ниже привел.



Запускать БП можете через крон тригер, настроив его так, как вам нужно, пример ниже.



Для пункта 2

// Создание задания для запуска процесса.
IJobDetail job = AppScheduler.CreateProcessJob("OpStateActivityInAccountProcessJob", null, "OpStateActivityInAccountProcess",
"CurrentWorkspace", "CurrentUserName");
 
// Создание Cron-триггера, соответствующего графику запуска задания.
ITrigger trigger = new CronTriggerImpl("OpStateActivityInAccountProcessTrigger", null, "0 60 * * * ?");  //Каждый час будет запускать БП OpStateActivityInAccountProcess
 
//Секунды будут выглядеть так: ("0/5 * * * * ?"), то есть каждые 5 секунд запускать
 
// Добавление задания и триггера в планировщик.
AppScheduler.Instance.ScheduleJob(job, trigger);
return true;





Для пункт 1, 3.

Условие направления звонка можете так сделать --- if (direction.ToString() == "0")

var insert = new Insert(userConn)
     .Into("Call")
      .Set("Duration", Column.Const(Int32.Parse(duration)))
      .Set("StartDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(start_time)))
      Set("EndDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(end_time)))
                        as Insert;
insert.Execute();



А еще лучше, вместо БП которые будет каждые 5 секунд у вас делать синхронизацию, это привязаться на событие окончания звонка из сервиса Моих звонков и указать шарпный сервис, который будет принимать и обрабатывать это событие, примером если надо могу поделится, как я интегрировался с ними

 

Направления звонка это справочник, туда можно вставлять значения кода в виде чисел и он будет соответственно показывать ваше состояние. (пример ниже).

Пример как решить проблему с UTC тоже ниже привел.



Запускать БП можете через крон тригер, настроив его так, как вам нужно, пример ниже.



Для пункта 2

// Создание задания для запуска процесса.
IJobDetail job = AppScheduler.CreateProcessJob("OpStateActivityInAccountProcessJob", null, "OpStateActivityInAccountProcess",
"CurrentWorkspace", "CurrentUserName");
 
// Создание Cron-триггера, соответствующего графику запуска задания.
ITrigger trigger = new CronTriggerImpl("OpStateActivityInAccountProcessTrigger", null, "0 60 * * * ?");  //Каждый час будет запускать БП OpStateActivityInAccountProcess
 
//Секунды будут выглядеть так: ("0/5 * * * * ?"), то есть каждые 5 секунд запускать
 
// Добавление задания и триггера в планировщик.
AppScheduler.Instance.ScheduleJob(job, trigger);
return true;





Для пункт 1, 3.

Условие направления звонка можете так сделать --- if (direction.ToString() == "0")

var insert = new Insert(userConn)
     .Into("Call")
      .Set("Duration", Column.Const(Int32.Parse(duration)))
      .Set("StartDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(start_time)))
      Set("EndDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(end_time)))
                        as Insert;
insert.Execute();



А еще лучше, вместо БП которые будет каждые 5 секунд у вас делать синхронизацию, это привязаться на событие окончания звонка из сервиса Моих звонков и указать шарпный сервис, который будет принимать и обрабатывать это событие, примером если надо могу поделится, как я интегрировался с ними

 

Для пункта 1 сделал как вы сказали: --- if (direction.ToString() == "0"), все сработало отлично, Спасибо !

по остальным пунктам напишу вам личное сообщение

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

Добрый день.

Описание вопроса. Есть БП в котором есть элемент визирования. Элемент визирования направляет Email по шаблону визирующему. Необходимо сделать так, чтобы в этом письме были две кнопки "Утвердить" и "Отклонить", при нажатии на которые происходило бы установление статуса визы. Кнопки в шаблон добавил, но вот какие ссылки прописать не понимаю. Подскажите как реализовать?

 

Нравится

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

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

Можно посмотреть как реализовано утверждение/отклонение визы в коробке и по аналогии сделать. Схема VisaNotificationsSchema, методы approve и reject.

Алексей, добрый день!

У меня возникла подобная задача (добавить кнопки визирования непосредственно в письмо), подскажите, как вам удалось ее тогда решить? 

Буду очень признательна. 

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

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

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

Например: Есть справочники Tarifs в нем есть поле Position. И в зависимости от значения Position (1,2,3...)нужно сортировать выпадающий список.

Нравится

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

Это можно сделать при формировании запроса EntitySchemaQuery.

var sortPosition = esq.addColumn("Position");

sortPosition.orderDirection = Terrasoft.OrderDirection.ASC;

Я не уверен, что правильно понял кейс, но у меня, например, есть справочное поле "Рейтинг заявки", где значения от 1 до 10. И десятка идет сразу после единицы, так как оно сортируется как текст. Я на пейдже заявки создал атрибут, где указал сортировку по нужному мне целочисленному полю UsrNumber, которое я чуть ранее добавил в этот справочник.

"UsrRate": {
    lookupListConfig: {
	    orders: [
			{
			    columnPath: "UsrNumber", 
				direction: Terrasoft.OrderDirection.ASC
			}
		]
	}
}

 

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

Добрый день!

Являюсь новичком. Поэтому прошу Вас помочь для устранения данной ошибки.

Установил и настроил все как скзано руководстве.

1. Добавил все роли и компоненты

2. Добавил вед сайт.

3. Для вебсайта добавил приложение .

 

После запуска выводит сл. ошибку.

Object reference not set to an instance of an object. 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
 
 Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
 
Source Error: 
 
 
 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  
 
Stack Trace: 
 
 
 
[NullReferenceException: Object reference not set to an instance of an object.]
   Terrasoft.Core.UserConnection.InitializeDBExecutor(AppConfigurationSectionGroup appSettings) +148
   Terrasoft.Core.UserConnection.Initialize(AppConfigurationSectionGroup appSettings) +134
   Terrasoft.Core.AppConnection.InitializeSystemUserConnection(ConfigurationSection schemaManagerProviderConfigurationSection) +114
   Terrasoft.Core.AppConnection.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup) +557
   Terrasoft.WebApp.Global.InitializeAppConnection() +472
   Terrasoft.WebApp.Global.Application_Start(Object sender, EventArgs e) +258
 
[HttpException (0x80004005): Object reference not set to an instance of an object.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +520
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +176
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +165
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +353
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +341
 
[HttpException (0x80004005): Object reference not set to an instance of an object.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +523
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +107
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +688
 
 
 
 
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.3062.0 

Прошу помочь с решение данной задачи.

Нравится

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

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

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

Удалось определить и решить проблему?

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

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

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

Добрый день!



Можно ли в аналитике раздела Обращения можно сделать такой список (именно список, а не диаграмму):

Сервис - количество обращений с данным сервисом.

При этом, чтобы с этим списком работала фильтрация раздела Обращения.



Или надо настраивать его в разделе Сервисы, создавая фильтры там?

Или есть другие способы?

Нравится

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

Добрый день. 



Такого рода фильтр можно построить в разделе "Обращения", однако строить его придется по объекту "Сервис", и вывести колонку "Обращения.Количество". 



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

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

Добрый день! Возникла проблема с разделом Контакты. Нет возможности открыть карточки пользователей, а также править в Мастере раздела. Появляется белый экран и дальше зависает. Подскажите как быть?

Нравится

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

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

 

Рекомендуем Вам для быстрого решения данной проблемы обратиться в службу технической поддержки по адресу - support@terrasoft.ru

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

Коллеги. всем доброго времени суток! Нужна Ваша помощь.

В преднастроенной странице реализовал метод подсчета вводимых символов - http://prntscr.com/jr6ki0

срабатывает функция - http://prntscr.com/jr6ky6

Результат - http://prntscr.com/jr6lss, http://prntscr.com/jr6m3d

Делаю так же в карточке редактирования раздела SMS:

http://prntscr.com/jr6mwu - не срабатывает

http://prntscr.com/jr6nx7

Подскажите в чем может быть проблема?

Заранее благодарю!

Нравится

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

Добрый день. Вопрос.

 

Как сделать так, чтобы в каждой записи реестра была колонка с кнопками. Сейчас ето реализовано через activeRowcActions и кнопки видны только для активной записи когда кликаеш.

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

 

 

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

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

Нравится

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

Я делал так:

Создал замещение «ContactFile», добавил колонку логического значения, имя «Button1».

Создал замещение схемы «FileDetailV2»:

define("FileDetailV2", ["terrasoft", "ControlGridModule"],	function(Terrasoft) {
	return {
		methods: {
			applyControlConfig: function(control) {
				control.config = {
					"className": "Terrasoft.Button",
					"style": Terrasoft.controls.ButtonEnums.style.BLUE,
					"caption": "Click",
					"handler": this.f1
				};
			},
			f1: function() {
				debugger;
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "DataGrid",
				"parentName": "DataGridContainer",
				"propertyName": "items",
				"values": {
					"className": "Terrasoft.ControlGrid",
					"controlColumnName": "Button1",
					"applyControlConfig": {"bindTo": "applyControlConfig"}
				}
			}
		]/**SCHEMA_DIFF*/
	};
});

Так же нужно вывести колонку(Button1), что бы она отображалась в детали. Можно подменить профиль, в котором хранятся настройки колонок, или подменить метод «getProfile».

Если нужно несколько кнопок, то придётся расширять «ControlGrid».

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

Добрый день!

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

Кейс - Пользователь создал 245 обращений, из них с указанной оценкой - 19. "Очень доволен" проставлено в 16-ти обращениях, в двух - "Нейтральный", в одном "Очень недоволен".

В итогах средний балл по этому пользователю равен 3 (Нейтральный), по моим подсчетам, там должно быть мимимум 4 (Доволен). 16*5+2*3+1*1 = 87 (общая сумма балов), далее 87/19 (общее кол-во обращений с оценкой) = 4,578....

Может я что-то неправильно считаю?

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

Заранее спасибо за помощь

 

Нравится

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

Коллеги, очень нужна помощь в данном вопросе, может кто-то сталкивался

По логике Ваш подсчет корректный, т.е. если все цифры такие, как Вы приводите, то среднее = 87/19.

Чудес не бывает и, если система выдает 3, значит что-то Вы не учти при подсчете.

Я вижу несколько вариантов.

1. Проверить значения 'Баллов' в справочнике 'Уровень удовлетворенности'. Возможно, было изменено одно или несколько значений в этом поле.

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

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

Итог по данной проблеме. Вместе со специалистом из Террасофт посмотрели данный кейс, действительно в списках расчет производится некорректно. Коллеги взяли на более детальный анализ

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