Добрый день!
Коллеги , есть поле Summa тип - дробное число, обязательное
почему то при указании там значения 0 (ноль) система все равно просит заполнить поле , сохраняет если значение кроме 0, обязательность указывал в обьекте через конфигуратор и пробовал через код в Атрибутах.
как быть, может где то есть настройки диапазона значений??
мне нужно чтобы было либо 0 либо другое число.

Нравится

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

Если нужно хранить или ноль, или ненулевое число, то поле нужно сделать необязательным. В базе числовые дробные поля хранятся как decimal not null и нельзя отличить изначально незаполненное поле с «0» от значения «0», которое ввёл пользователь.

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

Если нужно хранить или ноль, или ненулевое число, то поле нужно сделать необязательным. В базе числовые дробные поля хранятся как decimal not null и нельзя отличить изначально незаполненное поле с «0» от значения «0», которое ввёл пользователь.


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

А как Вы отличите незаполненное от заполненного нулём?
Контролы для ввода чисел не умеют отображать null.

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

Все числовые поля идут со свойством not null, поэтому null в этой ячейке не бывает.

Мы делали рядом CheckBox, который снимался, когда вводили в поле 0

"Владимир Соколов" написал:

Мы делали рядом CheckBox, который снимался, когда вводили в поле 0


Владимир можете чуть подробнее, если не сложно то с примерами кодов?

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

Уважаемые коллеги!

Подскажите пожалуйста, каким образом можно добавить дополнительное поле в миникарточку, например, добавить поле "Приоритет" в миникарточку в разделе "Активность" при добавлении задачи.

Нравится

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

Нужно заместить миникарточку ActivityMiniPage и разместить в массиве diff ваше новое поле подобным образом:

{
"operation": "insert",
"parentName": "MiniPage",
"propertyName": "items",
"name": "UsrNewColumn",
"values": {
"visible": {"bindTo": "isNotViewMode"},
"isMiniPageModelItem": true,
"layout": {
"column": 0,
"row": 15,
"colSpan": 24
}
}
}

Если вы вставляете поле куда-то в середину, нужно подвинуть остальные поля на строку ниже с помощью "operation": "merge" и изменением числа row в массиве layout.
Вот примерный код замещенной миникарточки:

define("ActivityMiniPage", [],
function() {
return {
entitySchemaName: "Activity",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
attributes: {},
methods: {},
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"parentName": "MiniPage",
"propertyName": "items",
"name": "UsrNewColumn",
"values": {
"visible": {"bindTo": "isNotViewMode"},
"isMiniPageModelItem": true,
"layout": {
"column": 0,
"row": 15,
"colSpan": 24
}
}
},
{
"operation": "merge",
"name": "MobilePhone",
"values": {
"layout": {
"column": 0,
"row": 7,
"colSpan": 24
}
}
},
{
"operation": "merge",
"name": "Email",
"values": {
"layout": {
"column": 0,
"row": 6,
"colSpan": 24
}
}
}
]/**SCHEMA_DIFF*/
};
});

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

В sales enterprice 7.8 в новом кастомном разделе нужно разместить деталь Email.
Делаем по примеру детали Email в разделе Контрагенты, но после добавления к детали фильтра по типу Активности "Email" деталь исчезла со страница:

details: /**SCHEMA_DETAILS*/{
"EmailDetailV2b2a8a790": {
"schemaName": "EmailDetailV2",
"entitySchemaName": "Activity",
"filter": {
"detailColumn": "UsrEmailRequest",
"masterColumn": "Id"
},
"filterMethod": "emailDetailFilter"
}
}

methods: {
emailDetailFilter: function() {
var recordId = this.get("Id");
var filterGroup = new this.Terrasoft.createFilterGroup();
filterGroup.add("UsrRequestNotNull", this.Terrasoft.createColumnIsNotNullFilter("UsrRequest"));
filterGroup.add("UsrRequestConnection", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "UsrRequest", recordId));
filterGroup.add("ActivityType", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Type", ConfigurationConstants.Activity.Type.Email));
return filterGroup;
},
}

Нравится

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

Откройте F12 и покажите консольную ошибку что возникает, без нее сложно понять что пошло не так.

последняя ошибка полностью https://yadi.sk/i/y9p6VWJDwhYmm

Коллеги, отмена, спасибо! Нужно было в схеме объявить зависимость от модуля ConfigurationConstants

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

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

Возникла необходимость добавить на страницу элемент аудиоплеера (если точнее - запись звонка и возможность её прослушать). В процессе поисков был найден модуль AudioPlayer, который судя по всему, и является нужным плеером.

Существует ли какой-нибудь мануал по работе с ним, или быть может, можно посмотреть где-нибудь рабочий пример?

Версия 7.8 sales.

Нравится

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

Как вариант

Подобная функциональность уже есть в OktellCtiProvider и WebitelCtiProvider.
Что нужно сделать:
1. Создать свой cti-провайдер - наследний MsgServiceCtiProvider. Например, AsteriskCtiProvider. Прописать этот провайдер в таблице SysMsgLib для Asterisk;
2. В методе getCapabilities провайдера вернуть для agentCapabilities фичу Terrasoft.AgentFeaturesSet.CAN_GET_CALL_RECORDS;
3. Реализовать метод получения записей звонка по идентификатору в методе queryCallRecords провайдера.

Прослушивание в коробке не все АТС могут - https://academy.terrasoft.ru/documents/sales-enterprise/7-8/sravnenie-v…

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

Работа с АТС - в процессе, но ей занимаюсь немного не я.. меня интересует именно клиентская реализация проигрывателя.

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

<audio>

Есть контрол AudioPlayer, судя по всему, входящий в пакет CTI Base. Как его подключить на страницу?

Здравствуйте, Денис!

Примеры реализации, которые используются например при интеграции с Oktell есть в пакете CTIBase, в частности схемы AudioPlayer и CallRecordUtilities.

"Мотков Илья" написал:в пакете CTIBase, в частности схемы AudioPlayer

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

В объекте страницы (entitySchemaName) по сути есть колонка со строкой-ссылкой на аудиофайл, которая подставляется в нужное место внутрь тега.

Но есть ещё одна задача, возможно, не совсем в рамках вопроса - нужно тот же элемент отобразить на странице с реестром. Возможно где-то были примеры добавления элементов не на страницу, а в список (см. скриншот)?

Денис, в базовой функцитональности мы тоже выводим плеер в реестр. Скриншоты прикрепил. Реализация есть в CallSectionV2 также в пакете CTIBase.

Илья, спасибо, всё добавили.

Добрый день! Можете скинуть пример реализации плеера на странице?

Добрый день, Роман!

Примеры реализации Вы можете посмотреть в конфигурации bpm'online в пакете CTIBase в следующих схемах:
CallSectionV2.js - тут Вам необходимы методы getPlayer: function(), getSourceId: function(), requestCallRecords: function(autoStartPlay)
AudioPlayer.js - схема реализации аудиоплеера
allSectionGridRowViewModel - класс модели представления строки реестра звонков

Мотков Илья,

Здравствуйте, а вы не знаете, есть ли какая то возможность организовать подобное внутри карточки? Пробовал подключать 

AudioPlayer но в ответ получаю лишь 'AudioPlayer' is not defined.

Мотков Илья,

Здравствуйте, подскажите пожалуйста, возможно ли реализовать прослушивание аудио не в разделе, а в карточке звонков? И если да, то как именно. Пробовал подключить 

AudioPlayer, но получаю подобную ошибку "'AudioPlayer' is not defined.", хотя модуль же есть в системе. 

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

Здравствуйте! Продукт sales enterprice 7.8
В карточке счета нужно считать сумму значений колонки Итого продуктов на детали "Продукты" и сохранять в колонку Итого в карточке счета.

Нравится

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

Добрый день! На странице «Продажи» при добавлении продуктов срабатывает базовый бизнес процесс расчета Суммы рис. 1.
Вид БП рис. 2
В нем вызывается базовый метод «CalckOpportunityAmount», который обновляет поле Сумма на странице Продажи рис 3.
Подскажите пожалуйста, как можно заменить (изменить метод расчета CalckOpportunityAmount) базового бизнес процесса.

Нравится

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

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

Вам необходимо:
1) Заместить объект "OpportunityProductInterest"
2) Открыть процесс замещенного объекта
3) Среди методов процесса выделить метод "CalckOpportunityAmount"
4) Проставить признак "Переопределен"
5) Реализовать нужную логику без вызова родительского метода.

Демьяник Алексей. Большое спасибо!

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

Добрый день! Довольно часто возникают подобные ситуации:
При внесении доработок в клиентскую часть системы, пользователи не видят новых изменений из-за закешированных статических файлов. Подскажите, каким образом можно заставить браузеры подтянуть новые изменения?

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

Нравится

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

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

Очистку кеша необходимо осуществлять средствами браузера. Пример расширения, которое очищает кеш браузера:
https://chrome.google.com/webstore/detail/cache-killer/jpfbieopdmepaolg…

Если система уже эксплуатируется. Скажем, в ней работает 50 человек. Вносятся доработки.
И для того чтобы все пользователи смогли использовать новый функционал, необходимо либо заставить каждого пользователя очистить кеш своего браузера либо ожидать когда время кеша истечёт?

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

Уважаемые коллеги!

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

Нравится

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

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

Используйте приведение типа Guid в String:
[#Читать задачу.первый элемент результирующей коллекции.Id#].ToString
Прошу обратить внимание, что C# является регистрочувствительным.

Большое спасибо, коллеги!

Все получилось!!!

Единственно, необходимо чуть подправить саму формулу:

[#Читать задачу.первый элемент результирующей коллекции.Id#].ToString , а надо

[#Читать задачу.первый элемент результирующей коллекции.Id#].ToString()

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

Уважаемые коллеги!

Подскажите пожалуйста, как сделать перенос строки в теле письма в элементе бизнес-процесса "Формула"?
При использовании тега бр> (br почему-то не отображается в теле письма) - "Формула" выдает ошибку: "Выражение содержит недопустимый перенос строки".

Нравится

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

Уважаемые коллеги!

Подскажите пожалуйста, как сделать перенос строки в теле письма в элементе бизнес-процесса "Формула"?
При использовании тега "Формула" выдает ошибку: "Выражение содержит недопустимый перенос строки".

Нравится

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

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

Для переноса строки используйте html тег <br>.
Обратите внимание, что тег должен быть заключен в двойные кавычки. Могу предположить, что Вам поможет следующая инструкция, которая описывает работу с формирование письма:
http://www.community.terrasoft.ru/blogs/12527 (статья написана для старого интерфейса bpm'online, но все еще не потеряла актуальности).

Большое спасибо, коллеги!

Все получилось!!!

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