Возможно ли в раздел по api подтянуть список из другой системы и потом через карточку с виртуальными полями получать данные так же через api. Смысл в том что нужно сделать управление другим сервисом через фронтэнд Creatio.

 

Нравится

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

Можно варианты реализации множество навскидку 1) получать данные из сервиса (по аналогии с DataService) 

2) Использовать интеграцию на уровне БД (Linked Servers) и создать виртуальный объект на основе представления. Обсуждалось тут и тут и тут

В общем вариантов много, почитайте все ветки и документацию по интеграции с другими системами.

 

Вариант dblink не подходит так как есть доступ только по webapi.

Получить данные из сервиса я могу, проблема только как данные списка в разделе заставить брать не из базы а с api (полученные любым из способов, хоть через сервис на Бэке)

пишет:

Можно варианты реализации множество навскидку 1) получать данные из сервиса (по аналогии с DataService) 

2) Использовать интеграцию на уровне БД (Linked Servers) и создать виртуальный объект на основе представления. Обсуждалось тут и тут и тут

В общем вариантов много, почитайте все ветки и документацию по интеграции с другими системами.

 

Вариант dblink не подходит так как есть доступ только по webapi.

Получить данные из сервиса я могу, проблема только как данные списка в разделе заставить брать не из базы а с api (полученные любым из способов, хоть через сервис на Бэке)

Можно на сервере БД создать view, получающую информацию от стороннего веб-сервиса и туда же отправляющую в instead-триггерах.

Но обращаться с ней с точки зрения производительности нужно очень осторожно.

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

Можно на сервере БД создать view, получающую информацию от стороннего веб-сервиса и туда же отправляющую в instead-триггерах.

Но обращаться с ней с точки зрения производительности нужно очень осторожно.

Это выходит что нужно создать или сервис на c# или на уровне базы http клиентом. А можно ли переопределить логику получения списка не из базы данных а по webapi? И наверно резонно подумать что если можно, на сколько это может быть проблематично с дальнейшими обновлениями системы что бы не вышло конфликта так как я понимаю прийдеться  замещать довольно глубокий код. Другими словами стоит ли игра свеч и порванного бубна?

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

Также посмотрите статью, где обсуждают нечто подобное, хоть и без интеграции.

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

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

Также посмотрите статью, где обсуждают нечто подобное, хоть и без интеграции.

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

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

Коллеги, добрый день!

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

Сейчас при прокручивании реестра записей, наименования столбцов скрываются. 

Огромная просьба, внести корректировки в систему.

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

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

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

это будет замечательно,если они это реализуют в версии 7.15.2. Уж очень ждем. :)

Максимова Екатерина,

Здравствуйте. Данный функционал уже реализован и будет доступен после обновления на версию 7.15.2

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

Добрый день!

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

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

Список создал для менеджеров, что у них на дашбордах отображалась ТОЛЬКО одна запись на текущий момент. Но по текущей логике менеджер может нажать "Показать больше" и взять в работу другой элемент списка (например, список по лидам)

Можно убрать ссылку Показать больше из списка? Насколько я помню, в более старых версиях данной ссылки не было

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

Нравится

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

Эта логика реализована в схеме ChartModule:

/**
 * Loads data into grid with pageble options.
 * @protected
 */
loadMore: function() {
	this.loadGridData();
},

 И ниже:

}, {
"name": chartId + "_loadMore",
"itemType": Terrasoft.ViewItemType.BUTTON,
"caption": {"bindTo": "Resources.Strings.LoadMoreButtonCaption"},
"click": {"bindTo": "loadMore"},
"controlConfig": {
"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
"imageConfig":  {"bindTo": "Resources.Images.LoadMoreIcon"}
},
"classes": {"wrapperClass": ["load-more-button-class"]},
"visible": {"bindTo": "CanLoadMoreData"}
}]

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

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

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

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

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

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

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

 

Нравится

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

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

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

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

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

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

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

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

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

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

Коллеги, добрый день! Просьба подумать над возможностью группировки записей в реестрах. Например, в заказах сделать группировку по фирмам или датам или ответственным. С возможностью свернуть и развернуть группировку естесственно.

Нравится

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

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

А если к этому добавить возможность настраивать несколько представлений, как было в 3.x, то будет еще лучше!

Показать все комментарии
Коллеги, мне кажется странным, что для ввода значений в CheckBox используется нормальная, всем привычная картинка, а для отображения в списке почему-то Yes/No (при этом в обычных полях отображается нормальной галочкой).Предлагаю перейти к единому, принятому во всем софтварном мире (уж, выбирайте - классический стиль или Apple-стиль) отображению логического поля в списке. Это намного нагляднее и понятнее.
3 комментария

Владимир, спасибо за обратную связь.
Данная информация была передана в департамент разработки для рассмотрения реализации функционала в будущих версиях.

"Вильшанский Дмитрий" написал:Данная информация была передана в департамент разработки для рассмотрения реализации функционала в будущих версиях

Спасибо! Хочу получить обратную связь по этому вопросу. Возможно, уже сейчас имеется какая-то недокументированная возможность (Например, вместо Yes отображать "X", а вместо No - пусто)

"Владимир Соколов" написал:
Вильшанский Дмитрий пишет:

Данная информация была передана в департамент разработки для рассмотрения реализации функционала в будущих версиях

Спасибо! Хочу получить обратную связь по этому вопросу. Возможно, уже сейчас имеется какая-то недокументированная возможность (Например, вместо Yes отображать "X", а вместо No - пусто)

Недокументированная возможность есть. Можно поменять константу, которая отвечает за отображение. Другой вопрос, что эта константа может использоваться еще где то кроме реестра. Соответственно, где то может пропасть слово No, а где то изменится слово Yes. Хотя, на первый взгляд константа используется только в реестре.

Чтобы поменять константу нужно:
1. Создать новый модуль. Назвать как угодно и вписать нуда новое значение для константы

Создание модуля

define("UsrChangeLookupRowCountModule", ["terrasoft"], function(Terrasoft){
Terrasoft.Resources.CommonUtils.FalseStringValue = " ";
Terrasoft.Resources.CommonUtils.TrueStringValue = "+";
});

Пример создания модуля.

модуль

2. Заместить BootstrapModules и добавить свой модуль. Не пропустить комы между модулями.

Создание замещающего модуля

Замещение

3. Все сохранить, почистить кеш, перезайти на сайт.
4. Наслаждаться.

Показать все комментарии
Если добавить агрегирующие функции в итоги типа "список" (как в графиках), то это упростит отчётности. Например, отобразить суммарные значения (сумма в валюте, сумма в базовой валюте, сумма налога и т.п.) по всем выписанным счетам за период по датам
1 комментарий

Добрый день!

Данная идея уже зафиксирована для реализации в будущих версиях продукта.

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

BPM On-Site 5.2.0
На странице есть выпадающий список, в котором выводятся данные из справочника.

Вопрос: как задать в выпадающем списке строго определенную последовательность, а не отсортированную по алфавиту?

Нравится

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

Можно создать доп.поле в справочнике пронумеровать в нужном порядке 01,02 и т.д и по нему сортировать ...

Пока самый простой способ нашел: в значения полей дописывать:
1. Встреча
2. Звонок
3. Отправка e-mail

Здравствуйте, Илья!

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

Очистить список:

Page.MyComboBoxEdit.ListPrepared = false;

Добавить пункты в список:

Page.MyComboBoxEdit.AddItem(type.Id, type.Name);

Кроме того, рекомендую обратить внимание на признак сортировки в карточке для данного контрола:
SortDropDownImage

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

Здравствуйте Террасофт!

Помогите разрешить ситуацию с выбором контрагента для поставщика в счете. Сейчас список выбора поставщика включает в себя всех контрагентов имеющихся в системе, а как сделать что бы в этом списке отображались только контрагенты, у которых тип "Наша компания"?

Нравится

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

Нужно на событие OnPrepareSelectWindow лукапа выбора поставщика повесить обработчик вроде:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
	var LookupDataset = LookupDataControl.DataField.LookupDataset;	
	var TypeID = atOur;//константа с GUID, описать в scr_Consts
	ApplyDatasetFilter(LookupDataset, 'TypeID', TypeID, true);
}

Содержание константы - ID записи в tbl_AccountType с текстом "Наша компания".

Опробовал предложенный метод, при нажатии на поиск в поле поставщика, появляется ошибка - что-то вроде: "не нравится atOur". Прошу рабочее решение?
В начале темы выразился не корректно:
На данный момент в поле поставщика по умолчанию стоит контрагент "Ваша компания", мне требуется сделать так, что бы по умолчанию было пусто и что бы отображал в поиске только контрагентов с типом "Наша компания".

"Березин Игорь Викторович" написал:"не нравится atOur". Прошу рабочее решение?

Нужно посмотреть значение поля ID в записи в таблице tbl_AccountType с текстом "Наша компания". Это можно сделать в СУБД или нажатием кнопки "предпросмотр" и затем "выполнить SQL" на sq_AccountType.

Потом в скрипт scr_Consts внести строку вроде:

//Наша компания
var atOur= '{12B90989-C863-42D4-A90B-DDD6024A7FED}';

Тогда заработает. Только значение константы может быть другим.

А ещё такая константа может быть изначально, попробуйте вместо atOur написать так:

 var TypeID = OurCompanyAccountType;

И ничего смотреть в БД не понадобится.

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

См. аналогичное решение здесь.

Не работает!
Версия Террасофта 3.3.2.107 - ни какой реакции.
Версия Террасофта 3.3.2.262 - ошибка, появляется дебагер.
В итоге такой скрипт получился:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
	//TODO
	var LookupDataset = LookupDataControl.DataField.LookupDataset;  
    var TypeID = '{12B90989-C863-42D4-A90B-DDD6024A7FED}';//константа с GUID, описать в scr_Consts
    ApplyDatasetFilter(LookupDataset, 'TypeID', TypeID, true);
}

Александр вы случаем не представитель компании Террасофт?
Когда вы отвечаете, мне почему то 7 сообщений подряд на почту приходит.
Не знаю куда сообщить о данном баге?

А так:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
         var LookupDataset = LookupDataControl.DataField.LookupDataset;  
         var TypeID = OurCompanyAccountType;
         ApplyDatasetFilter(LookupDataset, 'AccountTypeID', TypeID, true);
}

Сообщения приходят при каждой правке комментария.

Ситуация со скриптом не изменилась.
OurCompanyAccountType - присутствует в scr_Consts.

По сообщениям понятно, спасибо.

"Березин Игорь Викторович" написал:Ситуация со скриптом не изменилась.

А какое сообщение об ошибке возникает?

Здравствуйте, Игорь!

Откройте MS SQL Management Studio и выполните следующий запрос:

select * from tbl_AccountType where Name = 'Наша компания'

1

После этого измените функцию следующим образом:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
         var LookupDataset = LookupDataControl.DataField.LookupDataset;  
         var TypeID = '{12B90989-C863-42D4-A90B-DDD6024A7FED}';
         ApplyDatasetFilter(LookupDataset, 'AccountTypeID', TypeID, true);
}

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

"Березин Игорь Викторович" написал:По сообщениям понятно, спасибо.

Как я вас понимаю...:smile:

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

Дмитрий выполнил запрос к бзае, код у меня такой же как и у вас с Александром. Сделал вставку вашего кода, проверил и ни каких изменений не произошло.
Версия Террасофта 3.3.2.107 - ни какой реакции.
Версия Террасофта 3.3.2.262 - ошибка, появляется дебагер.

Здравствуйте, Игорь!

Для того чтобы в списке контрагентов, при выборе поставщика в счете, отображались только контрагенты с типом "Наша компания" необходимо:

1) Запустить Terrasoft Administrator;
2) Открыть сервис sq_Account и добавить входящий параметр AccountTypeID типа уникальный идентификатор:
1
3) В этом же сервисе в блоке "Where" добавить фильтр сравнения AccountTypeID:
2
4) На событие OnPrepareSelectWindow лукапа выбора поставщика повесить обработчик:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
         var LookupDataset = LookupDataControl.DataField.LookupDataset;  
         var AccountTypeID = '{12B90989-C863-42D4-A90B-DDD6024A7FED}';
         ApplyDatasetFilter(LookupDataset, 'AccountTypeID', AccountTypeID, true);
}

5) Сохранить изменения и перезапустить клиентское приложение Terrasoft .

"Олейник Дмитрий" написал:Открыть сервис sq_Account и добавить входящий параметр AccountTypeID типа уникальный идентификатор:

Неужели этот фильтр не существует "в коробке" изначально? Удивительно.

Ура заработало!

Всем спасибо за помощь.

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

Видимо, новосозданный фильтр AccountTypeID стал включенным. Надо снять галку у него.

Открыл ds_Account нашел "Поле фильтрации" и убрал галку. Ни каких изменений не произошло.
Александр возможно вы имели ввиду другую галку, в другом месте?

В sq_Account фильтр сравнения AccountTypeID должен быть отключён по умолчанию и включаться только когда надо.

Заработало!
Спасибо Александр.

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

Для преобразования строки (набора нескольких значений через запятую) в список, предлагаю следующий пример:

function CreateStringListByCommaString(CommaString) {
var StringsList = System.CreateObject('TSObjectLibrary.StringsList');
if (CommaString != null) {
var StringDataArray = CommaString.split(',');
for (var i in StringDataArray) {
var StrData = StringDataArray[i];
StringsList.Add(StrData);
}
}
return StringsList;
}

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

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

Подскажите пожалуйста можно ли этот StringsList отобразить в визуальном компоненте?

Можно отобразить его свойства Text и CommaText.

Немного не так, в коде выше напутаны названия переменных, нужно писать так

var CommaString = System.CreateObject('TSObjectLibrary.StringsList');
if (CommaString != null) {
var StringDataArray = CommaString.CommaText.split(',');
...

Пример:

function btnOKOnClick(Control) {
var my = GetAttribute(Control.ParentWindow, 'nn');		
 
if (my != null) {
var StringDataArray = my.CommaText.split(',');
for (var i in StringDataArray) {
MessageBox(StringDataArray[i]);
} 
}
 
 
}
 
function Main() {
	var Window = Services.GetNewItemByUSI('wnd_Testing');
	Window.IsDesigning = false;
	Window.Prepare();
	Window.Show();
}
 
function wnd_TestingOnPrepare(Window) {
var arr =  System.CreateObject('TSObjectLibrary.StringsList');
arr.Add('1');
arr.Add('2');
SetAttribute(Window, 'nn', arr);
}
Показать все комментарии