Вопрос

Добрый день!

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

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

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

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

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

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

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, то будет еще лучше!

+1

Войдите или зарегистрируйтесь, чтобы комментировать
Идея
Коллеги, мне кажется странным, что для ввода значений в 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);
}
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Необходима помощь знающих людей в следующем вопросе:

на карточке редактирования есть два поля. Первое поле типа справочник. При выборе значения в первом поле необходимо заполнить выпадающий список для второго поля, что бы пользователь смог выбрать только определенные значения. Значения для списка второго поля вычисляются в коде. Они не постоянны, поскольку один из элементов вычисления имеет переменное значение.
Идеальным вариантом был бы мемори датасет, но не получилось привязать его к контролу EnumDataControl.
Так же есть идея заполнять сервис Enum динамически в коде, возможно ли это?
Или есть другой вариант решения задачи?

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

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

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

http://terrasoft.com.ua/sdk/
IEnumExample.js - пример динамического заполнения перечисления.

спасибо!

Подскажите, пожалуйста, а можно добавлять/удалять элементы у сервиса Enum через код перед его открытием (ShowSelectEnumItemWindow(EnumUSI))? Мне это сделать не удалось. Наверно, что-то не так делаю.

www.informicus.ru

Конечно можно, IEnum в SDK посмотрите.
Что именно не удалось ?

1) Создала сервис Enum без значений.
2) далее заполняю и вызываю его следующим образом в коде:

var enm_ShowsForDay = Services.GetNewItemByUSI('enm_ShowsForDay');
	for (var i = 1; i <= 13; i++) {
	    var EnumItem = enm_ShowsForDay.CreateItem();
	    EnumItem.ID = EnumItem.Code = 'TranslationsPerBlock_' + i;
	    EnumItem.Caption = i;
	    enm_ShowsForDay.Add(EnumItem);
	}
 
	try{
		var TrsPerBlock = parseInt((ShowSelectEnumItemWindow('enm_ShowsForDay')).ResultValue.Caption);
	}
	catch (e){
		return false;
	}

но список оказывается пустым при открытии перечисления.

www.informicus.ru

Разобралась сама.
В функции ShowSelectEnumItemWindow просто заново объект создавался.

var Enum = Services.GetNewItemByUSI('EnumUSI');

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

www.informicus.ru

Кстати перечисления кажется по GetSingleItemByUSI получать надо.

"Underscore a.k.a. _" написал:Кстати перечисления кажется по GetSingleItemByUSI получать надо.

Почему?
GetSingleItemByCode ()
Services.GetNewItemByUSI()

"Раловец Ольга" написал:Почему?
GetSingleItemByCode ()
Services.GetNewItemByUSI()

Прошу прощения, я Вас не совсем понял :)
Я хотел сказать что перечисления как и таблицы получаем с помощью метода GetSingleItemByUSI объекта Services.

Я всегда считала, что правильно Services.GetNewItemByUSI(), но похоже и Services.GetSingleItemByUSI() тоже работает.

:redface:

Но я надеюсь Вы осознаете и исправитесь :) На самом деле немного стыдно, два раза подряд Вас так ткунуть. Но это было сильнее меня :)

"Underscore a.k.a. _" написал:На самом деле немного стыдно, два раза подряд Вас так ткунуть

Что Вы, напротив, я ценю конструктивную критику.

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