OData
FileService
GetFile
7.13_()
service

Я не могу найти где можно увидеть список файлов к Обращению.

Само обращение отображается по запросу 

***bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseCollection(guid'ae67f3b8-c319-4a59-9d97-f8585f6b3d33')

Но внутри него я не могу найти список прикрепленный файлов.

Вопрос.

Где искать ? 

Нравится

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

Для каждой детали используется свой адрес в OData. Файлы обращения, соответственно, будут: ***bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection/. Там можно посмотреть Id файлов и связи с обращениями. А непосредственно скачивание производить в FileService.

Я правильно понял чтоб мне найти файл который принадлежит к обращению мне нужно считать все файлы которые отдает CaseFileCollection и пройти все skiptoken ? После того как считал найти в них ид моего обращения ? И лишь потом узнать что за файл.  

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

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

не хватило разума мне понять.

view-source:https://*****.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=Name eq 'WhatsApp Image 2018-01-16 at 14.15.07 (1).jpeg'

По такому запросу ответ отдает верный.



view-source:https://*****.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=CaseId eq guid'829a0b1a-650b-4844-b664-59053f9434ad'

По этому запросу отдает Элемент коллекции с именем CaseId не найден



Что он от меня хочет ? 

CaseFileCollection?$filter=Case/Id eq guid'829a0b1a-650b-4844-b664-59053f9434ad'

 

Спасибо!

Никогда б не догадался. Ниже привожу рабочий пример.

https://*.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=Case/Id eq guid'1f779f3d-60b4-4a2c-a4b4-43e2cf89d8f0'

ссылку выше про  FileService. Я почитал. Но результата опять нет. 

 

http://адрес_сайта/0/rest/FileService/GetFile/e9eafee9-c4e4-4793-ad0a-003bd2c6a9b4/935b6ecb-3509-4c8a-bc7e-03ab0661da24

Тут первый GUID — ID схемы ContactFile (видно в URL, если её открыть в дизайнере), второй — ID записи в таблице.



Я думал что по этому запросу https://*.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=Case/Id eq guid'1f779f3d-60b4-4a2c-a4b4-43e2cf89d8f0'

я узнаю ид файла. Но нет. Ид тут другой. И ID схемы CaseFileCollection Тоже у меня нет.

Вопрос. 

Где я должен получить эти ИД ? 

По ссылке написано всё верно. Первый Id — для схемы CaseFile посмотрите в дизайнере. Второй — Id нужной записи в этой таблице, которую Вы получите по результату CaseFileCollection.

Да, все верно. Я не туда смотрел. Спасибо.

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

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

Не нашёл чего-то - есть ли возможность вызвать веб-сервис (такой https://academy.terrasoft.ru/documents/administration/7-13/integraciya-…) из клиентской схемы?

В примерах вижу только вызов из бизнес-процессов.

Нравится

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

Вы можете вызвать сервис реализованный на C# так:

ServiceHelper.callService("UsrSaveProcedure", "ProcedureSql",
 
                function(response) {
 
                    console.log(response.ProcedureSqlResult);
 
                }, {CardId: this.get("Id")}, this);

А через вызванный сервис на клиенте, но уже на серверной части можете вызывать любые внешние веб-сервисы.

Или вы имеете ввиду, что-то иное?

Вы можете вызвать сервис реализованный на C# так:

ServiceHelper.callService("UsrSaveProcedure", "ProcedureSql",
 
                function(response) {
 
                    console.log(response.ProcedureSqlResult);
 
                }, {CardId: this.get("Id")}, this);

А через вызванный сервис на клиенте, но уже на серверной части можете вызывать любые внешние веб-сервисы.

Или вы имеете ввиду, что-то иное?

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

Всем доброго времени суток. Версия 7.12.

Есть справочник "Объекты администрирования" и есть одно из его представлений - "Роли". А можно ли отфильтровать только организационные роли?

Нравится

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

SELECT *

  FROM SysAdminUnit

 where sysadminUnittypeValue =0

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

Информация есть на Академии (https://academy.terrasoft.ru/documents/base/7-13/chasto-zadavaemye-vopr…):

В этом объекте содержится организационная структура компании: пользователи, организационные и функциональные роли. Каждая запись в таблице относится к определенному типу, для которого указывается цифра (“SysAdminUnitTypeValue”). Например, организационной роли соответствует цифра “1”, роли руководителей — цифра “2”, а пользователям — цифра “4”.

Также пример фильтрации ниже:

 Рис. 1

Рис. 2

Вильшанский Дмитрий пишет:

Например, организационной роли соответствует цифра “1”, роли руководителей — цифра “2”, а пользователям — цифра “4”.

Дмитрий, а почему в системе:



с "1" только "System administrators",

а с "0" - "Sales Department", "All portal users", "Accounting Department" и "All employees"



Хотя, в списке организационных полей есть и те, и другие

Владимир Соколов,

по моему, там ещё есть разница между понятиями Организация и Подразделение.

У меня в итоге всё что мне нужно фильтруется вот таким образом:

var typeFilter = Terrasoft.createFilterGroup();
typeFilter.setLogicalOperation(1);
typeFilter.add("ManagerFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 2));
typeFilter.add("DivFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 1));
typeFilter.add("OrgFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 0));
filterGroup.add("typeFilter", typeFilter);

 

Показать все комментарии
Портал самообслуживания
7.13_()
service

Добрый день. 

BPM service, облако. 

Столкнулся со следующей проблемой - пользователи портала не видят сообщения (email) в обращениях на Портале. 

Пересмотрел, кажется, все, что можно. Помогите разобраться где этот момент настраивается. 

Нравится

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

Необходимо с помощью процесса на добавление/изменение "Activity" и добавление в объект "Email message" (у нас в процессе на все три события)  раздавать дополнительно права на e-mail сообщения (Activity) нужным пользователям портала (например, мы выдавали контакту инцидента и его руководителю).



И посмотрите, есть ли на чтение объекта Activity права у All portal users

Необходимо с помощью процесса на добавление/изменение "Activity" и добавление в объект "Email message" (у нас в процессе на все три события)  раздавать дополнительно права на e-mail сообщения (Activity) нужным пользователям портала (например, мы выдавали контакту инцидента и его руководителю).



И посмотрите, есть ли на чтение объекта Activity права у All portal users

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

Добрый день!



Столкнулся с задачей:

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



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

Нравится

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

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

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

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

Всем доброго времени суток. Версия 7.12.

Два вопроса (не связанных друг с другом):

1. Есть ли возможность вызвать какую-либо функцию после авторизации? Для примера - показывать окно с сообщением сразу после авторизации пользователя. Попробовал добавлять такие вызовы в схемы, загружающиеся только один раз (MainHeaderSchema, CommunicationPanel и т.д.), но вот проблема - если пользователь нажмёт F5, то снова сработает загрузка, а значит - вызов окна.

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

2. Есть ли в фильтрах - https://academy.terrasoft.ru/documents/technic-sdk/7-8/rabota-s-filtram… (именно в варианте для клиентской части) фильтрация "последних нескольких записей"? Т.е. к примеру, фильтрация по колонке с датой:

var dateColumn = esq.addColumn("UsrDate");
dateColumn.orderDirection = Terrasoft.OrderDirection.DESC;
dateColumn.orderPosition = 0;

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

Нравится

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

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

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
      rootSchemaName: "UsrTable",
      rowCount: 5
}
var createdOnColumn = esq.addColumn("CreatedOn");
createdOnColumn .orderDirection = Terrasoft.OrderDirection.DESC;
createdOnColumn .orderPosition = 0;

 

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

2. Вам нужно указать при обращении к EntitySchemaQuery кол-во выводимых записей в запросе:

  var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
      rootSchemaName: "UsrTable",
      rowCount: 5
   }

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

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
      rootSchemaName: "UsrTable",
      rowCount: 5
}
var createdOnColumn = esq.addColumn("CreatedOn");
createdOnColumn .orderDirection = Terrasoft.OrderDirection.DESC;
createdOnColumn .orderPosition = 0;

 

Григорий Чех пишет:

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

Из второго вопроса Дениса понятно, он понимает, что записи должны быть отсортированы (он даже приводит пример). А я ответила на конкретный вопрос пользователя 'как мне вытащить только, допустим, первые пять?'. 

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

Всем доброго времени суток. Версия 7.13.

На демо-площадке добавил кнопку и модуль в коммуникационную панель, для примера полностью скопировал код из статьи: http://beta-community.bpmonline.com/articles/kak-dobavit-knopku-v-kommu…

В результате новая вкладка появилась, но она пустая, а при открытии возникает ошибка в консоли:

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

Ошибка возникает в функции generateSchemaStructure, вызываемой в init модуля UsrMyMenuModule внутри this.callParent(arguments).

Что не так? Помню, что в 7.12 успешно добавлял свою вкладку на панель.

Нравится

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

Добрый день

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

При сохранении схемы проверьте наличие ошибок, выдаваемых валидатором (сообщения о лишних пробелах можно игнорировать), а также можете воспользоваться любым JS online валидатором 

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

Всем доброго времени суток. Версия 7.12.

Ситуация в целом следующая - нужно добавить кнопку в стандартное окно lookup. Примерно сюда:

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

Где добавляется нашёл, всё в целом понятно - схема LookupPageViewGenerator, функция getSelectionControlsConfig.

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

Нравится

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

Здесь на сайте данный вопрос уже многократно обсуждался. Например, вот этот пост.

Идеально, это реализация собственного окна (наследника от LookupPageViewGenerator) и потом вызовом его в тех местах, где требуется.

Здесь на сайте данный вопрос уже многократно обсуждался. Например, вот этот пост.

Идеально, это реализация собственного окна (наследника от LookupPageViewGenerator) и потом вызовом его в тех местах, где требуется.

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

Добрый день!

Как можно отправить данные с bpmonline на внешний сайт  при изменении статуса Обращения ? 

Нужны либо все данные обращения, либо его ИД.

Нравится

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

Добрый день)

Посмотрите пост.

Подробнее о выборе способа интеграции можно почитать на Академии.

Добрый день)

Посмотрите пост.

Подробнее о выборе способа интеграции можно почитать на Академии.

Начиная с 7.12 появился элемент БП «веб-сервис». То есть, можно добавить БП на событие изменения поля, а в нём запустить сервис.

Показать все комментарии
7.12
service
Ошибка базовой функциональности

Ошибка в Базовой функциональности:

В методе restoreActiveRow в клиентской схеме BaseGridDetailV2 (пакет Nui) происходит попытка записать объект в атрибут ActiveRow, который должен содержать строку идентификатора.

this.set(
 "ActiveRow", 
 {
  value: lastActiveRow,
  scrollPageToActiveRow: true
 }
);



В итоге получаем ошибку "Элемент с ключом [object Object] Не существует "

Воспроизведено на 7.12.4

Нравится

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

Коновалов Игорь,

Коновалов Игорь пишет:

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

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

Поэтому сейчас уже взяла за правило, воспроизведение любой баги платформы нужно снять на видео, ибо, если этого не сделать сразу, то все равно потом нужно будет потратить ещё время и таки снять(((

Коновалов Игорь пишет:

P.s.: Когда же уже появится конкурс "Найди баг в базовой функциональности и получи IPhone."

Такого конкурса не будет - IPhono'в на все баги не хватит wink  

На версии 7.13.1 данный код аналогичен.

А как Вы воспроизводите данную ошибку?

В версии 7.12.4 при сохранении карточки детали карьеры контакта никаких ошибок нет. В коде схемы BaseGridDetailV2 для LastActiveRow указан верный тип:

/**
 * Last active record primary column value.
 */
"LastActiveRow": {
	dataValueType: Terrasoft.DataValueType.GUID
},

 

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

Я открываю на редактирование звонок из детали звонки, потом закрываю. 

Метод restoreActiveRow отрабатывает 2 раза. В перывый раз и происходит ошибка

В том то и дело, что и у LastActiveRow и у ActiveRow  тип Guid, в методе в ActiveRow пытаются записать объект

В методе берётся значение из LastActiveRow:

var lastActiveRow = this.get("LastActiveRow");

 

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

И в ActiveRow записывается значение 

{
  value: lastActiveRow,
  scrollPageToActiveRow: true
 }

Да, так должен записаться Guid. Может, в разделе звонков эту функцию переопределяют.

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

Как я написал в самом начале метод restoreActiveRow определён в клиентской схеме BaseGridDetailV2 (пакет Nui), а не в замещённой схеме

Игорь,

снимите видео с воспроизведением ошибки и отправьте в саппорт.

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

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

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

P.s.: Когда же уже появится конкурс "Найди баг в базовой функциональности и получи IPhone."laugh

Коновалов Игорь,

Коновалов Игорь пишет:

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

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

Поэтому сейчас уже взяла за правило, воспроизведение любой баги платформы нужно снять на видео, ибо, если этого не сделать сразу, то все равно потом нужно будет потратить ещё время и таки снять(((

Коновалов Игорь пишет:

P.s.: Когда же уже появится конкурс "Найди баг в базовой функциональности и получи IPhone."

Такого конкурса не будет - IPhono'в на все баги не хватит wink  

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

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