Добрый день!

Сделал тестовый WS, который возвращает:

{"TestResult":[{"comment":"Programer","name":"Alex"},{"comment":"Manager","name":"Bob"}]}

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

В блоке с кодом C# первой строкой пишу:

var entities = Get>("WebService1.UsrTestResult_Out");

При выполнении данной строки в entities данные не появляются.

В чем могут быть проблемы?

 

Нравится

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

ICompositeObject  это для случяая когда вы парсите коллекцию полученную из элемента чтение данных в БП

Вам нужно просто выполнить парсинг JSON на C# примеров в интернете как это сделать масса

ICompositeObject  это для случяая когда вы парсите коллекцию полученную из элемента чтение данных в БП

Вам нужно просто выполнить парсинг JSON на C# примеров в интернете как это сделать масса

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

Коллеги, а можно ли в задании-сценарии создавать свой класс? И можно ли в принципе свободно в нем писать свой код или есть большое число ограничений?  Ссылку по описанию данного блока на академии смотрел. Описание так весьма краткое.

Например пробую использовать:

public class SomeClass{

            public string id;

            public string login;

            public string name;

};

При попытке его использования выскакивает ошибка при публикации.

Александр Кулиш,

Свой класс вы можете создать добавив в конфигурации элемент - Исходный код, затем его можно использовать в задании сценарии!

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

Всем добрый день! 

Реализовал в заказе/лиде кнопку звонка - http://prntscr.com/ngpc8u

звонок вызываю через публикацию CallCustomer:

 

this.sandbox.publish("CallCustomer", {
					number: mobilePhone, 
					customerId: Terrasoft.SysValue.CURRENT_USER.value, 
					entitySchemaName: "Lead",
					callRelationFields: undefined
				});

 Какие параметры необходимо добавить что бы в звонке сохранился либо Лид/Заказ  + Контакт заказа если звоним из Заказа - http://prntscr.com/ngpenx ?

Или необходимо использовать другой метод?

Заранее благодарен.

Нравится

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

Перед отправкой сообщения сохраните ваш конфиг в "AdvisedIdentifiedSubscriberInfo", те

 

this.set("AdvisedIdentifiedSubscriberInfo", {

number: _nomer, 
                    customerId: this.get("Id"), 
                    entitySchemaName: "Lead",
                    callRelationFields: ...

});

 

Если не поможет (Насколько понимаю каждая интеграция с телефонией реализована по своему, возможно что запись в базу информации о звонке реализована напрямую из dll инсертами) то посмотрите что поступает в БД через sql профайлер и что за запросу идут через сервисы во вкладке Netwoork браузера. Возможно вам придется  найти Id звонка и обновить нужные вам поля в объекте.

Добрый день!

Попробуйте передать данные поля в callRelationFields. Это массив из объектов, типа:

{
	name: columnName,
	value: columnValue,
	type: this.Terrasoft.DataValueType.GUID
}

 

Сидоров Александр В.,

this.sandbox.publish("CallCustomer", {
					number: mobilePhone, 
					customerId: Terrasoft.SysValue.CURRENT_USER.value, 
					entitySchemaName: "Lead",
					callRelationFields: [{
						name: "Lead",
						value: leadId,
						type: this.Terrasoft.DataValueType.GUID
					}]
				});

Подставил параметры, не помогло, что не так?

Нигрескул Алексей,

Посмотрите, какие поля приходят в метод updateCallByIdentificationData схемы CtiPanelIdentificationUtilities. Может быть там возникают ошибки

Насколько я понимаю в customerId должна быть Id вашего Lead  с которого совершается звонок те набор полей customerId и EntitySchemaName вы определяете схему и идентификатор записи к которой будут добавлен набор полей из callRelationFields

Григорий Чех,

Передавал  customerId: leadId, entitySchemaName: "Lead" не помогло

Добавить комментарий

Сидоров Александр В.,

Продебажил данный метод, он даже не срабатывает при вызове через публикацию CallCustomer.

Перед отправкой сообщения сохраните ваш конфиг в "AdvisedIdentifiedSubscriberInfo", те

 

this.set("AdvisedIdentifiedSubscriberInfo", {

number: _nomer, 
                    customerId: this.get("Id"), 
                    entitySchemaName: "Lead",
                    callRelationFields: ...

});

 

Если не поможет (Насколько понимаю каждая интеграция с телефонией реализована по своему, возможно что запись в базу информации о звонке реализована напрямую из dll инсертами) то посмотрите что поступает в БД через sql профайлер и что за запросу идут через сервисы во вкладке Netwoork браузера. Возможно вам придется  найти Id звонка и обновить нужные вам поля в объекте.

Благодарю, попробую. Id звонка не проблема получить, переопределил схему CtiPanel, переопределил метод onCallSavedEvent и в нем по сути получаю звонок, и тут можно пушить в sandbox и подписываться там где нужно, ну это теоретически, Нужно только подумать как отловить нужную публикацию. Телефония Webitel. Может есть идеи по данному поводу, как отлавливать звонок, вот получаю лог звонка из переопределенного метода onCallSavedEvent - http://prntscr.com/ngvqpx. Просмотрел объект зацепится не за что, у кого какие идеи,заранее благодарен!

Вы пробовали сохранить в this.get("AdvisedIdentifiedSubscriberInfo") конфиг звонка включая поля которые вам нужно сохранить в карточке звонка?

Посмотрите при  сохранении что попадает в identificationFieldsData

 

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

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

 

Имеется ли в системе какой-то инструмент, который позволит узнать имя объектов. 

Задача - отобрать права у пользователей, убрать строку из меню "дизайнер системы". 

В интерфейсе не нашёл информацию по данному меню. 

В реестре прав доступа не могу понять как называется объект. 

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

Нравится

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

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

Это меню реализовано в модуле LeftPanelTopMenuModule.

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

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

Это меню реализовано в модуле LeftPanelTopMenuModule.

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

Алла Савельева, я правильно понимаю, что под модулем Вы понимаете "пакет" ? 

Sunrise challenge,

Не, пакет - это пакет, а модуль - это модуль. Модуль - это ClientUnitSchemaManager, скриншот ниже:

Алла Савельева, волей-неволей вспоминается - "стою на асфальте, в лыжи обутый...". Не нахожу его 

Sunrise challenge,

Проверьте, не включена ли фильтрация в нижней панели окна сервисов (на скриншоте выделила красным):

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

Вы оказались правы. Как-то не очевидно, что он установлен. 

Метод я нашёл, но сохранить изменения он не даёт: 

"Невозможно сохранить изменения элемента "LeftPanelTopMenuModule", так как он создан сторонним издателем или установлен из файлового архива"

Sunrise challenge,

Вам нужно заместить модуль LeftPanelTopMenuModule.

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

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

Спасибо за подсказки. В дополнение - есть ли более простой способ скрыть данное всплывающее меню или убрать из списка "Дизайнер системы"  ? 

Sunrise challenge,

Я не нашла никакой системной настройки, с помощью которой можно было бы управлять этой функциональностью.

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

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

Это не совсем правильно, ибо не нужно агентам и пользователям знать о лишнем функционале, во избежание путаницы. И поиска не регламентированных возможностей. 

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

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

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

Это была описка - речь шла о правах доступа на операции.

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

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

Саша, а ты можешь это внести в список пожеланий от клиента? Я на 100% согласна, что такая настройка должна быть в базовой версии. 

Алла, такое пожелание уже заведено раньше.

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

Привет,

Столкнулся с проблемой:

Версия: 7.13.4.638_SalesEnterprise_Marketing

Место: Конфигурация

Действие: https://academy.terrasoft.ru/documents/technic-sdk/7-13/perenos-izmeneniy-pri-pomoshchi-eksporta-i-importa-shem

Описание: Выбираю пакет, пытаюсь импортировать в него бизнес процесс, находящийся в *.md файле. Нажимаю на импорт из файла, выбираю файл, подтверждаю действие. Получаю сообщение, "Элемент был импортирован в пакет Custom". При этом выбранный мной в таблице пакетов пакет не custom. Решение с установкой пакета по умолчанию не помогло.

 

Нравится

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

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

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

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

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

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

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

Алла Савельева пишет:

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

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

AlexMatveev,

Для БП пакет можно изменить в настройках, смотрите скриншот ниже:

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

Здравствуйте! Может мне кто-то подскажет как делать запрос в DataService, и получать данные, например справочника, с учетом локализации.

Делаю аутентификацию:

{
  "UserName": "Supervisor",
  "UserPassword": "Supervisor"
}

И делаю например запрос справочника

 

{
	"RootSchemaName":"CaseCategory",
	"OperationType":0,
	"AllColumns":true
}

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

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

Нравится

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

Добрый день!

Добавьте в запрос признак "UseLocalization": true

Пример:

{
	"RootSchemaName":"CommunicationType",
	"OperationType":0,
	"AllColumns":true,
    "UseLocalization": true
}

 

Добрый вечер!

Локализируемые значения хранятся в таблицах с таким названием Sys + [Название основной таблицы] + Lcz, то есть в Вашем случае нужные Вам значения хранятся в таблице SysCaseCategoryLcz.

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

Я это прекрасно понимаю, но такое себе, когда тебе нужно достать значения справочника, ещё и в таблицу Lcz лезть, проверять там значения нужной тебе локализации. Думал может есть какой-то параметр, при запросе через DataService, который сразу выдаст с локализацией.

Дульский Александр пишет:

Думал может есть какой-то параметр, при запросе через DataService, который сразу выдаст с локализацией.

Да, было бы отлично)))

Можете написать это, как идею на рассмотрение, в службу поддержки.

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

Да, кстати, DataService походу не видит таблицу SysCaseCategoryLcz, т.к. выдает что 

"Элемент с именем \"SysCaseCategoryLcz\" не найден". Получается локализируемые строки никак не взять.

Дульский Александр,

Точно - она же системная, но можно на основании таблицы 'SysCaseCategoryLcz' создать представление и к нему обращаться для получения нужной информации.

Так даже удобнее - можно в представлении сразу указать, чтобы был выбор из нужной Вам локализации.

Добрый день!

Добавьте в запрос признак "UseLocalization": true

Пример:

{
	"RootSchemaName":"CommunicationType",
	"OperationType":0,
	"AllColumns":true,
    "UseLocalization": true
}

 

Сидоров Александр В.,

Спасибо огромное!

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

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

 

Столкнулся с проблемой удаления записей. 

Ситуация выглядит так, что не важно из какого раздела пытаюсь удалить запись, "выдаёт" ошибку: 

"Удаление данных произошло с ошибкой. Обратитесь к системному администратору" 

Подскажите, пожалуйста, в какую сторону смотреть?

P.s. права Supervisor'а 

Нравится

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

Проверьте что вэбсокеты настроены

И да, ещё момент - если обновить страницу, то запись может быть удалена. Тут, уж, на усмотрение bpm :/

Проверьте что вэбсокеты настроены

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

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

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

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

 

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

Нравится

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

Только записи на которые у оператора есть права должны ему выводится (согласно документации по работе с Единым окном), обратитесь в тех поддержку с вопросом возможно в следующих версиях продукта данная проблема устранена. 

Только записи на которые у оператора есть права должны ему выводится (согласно документации по работе с Единым окном), обратитесь в тех поддержку с вопросом возможно в следующих версиях продукта данная проблема устранена. 

Механизм открытия карточки из очереди реализуется в БП «Обработка обращений из очереди в Едином окне», недавно обсуждавшемся.

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

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

Добрый день! Есть такая проблема: с БПМ интегрируется сторонняя система, через DataService, она может загружать файлы к нам в БПМ, для этого есть специальный сервис и метод (FileApiService/Upload). Но так же есть необходимость скачивать файлы из бпм, как это можно организовать?? потому что например, если файлы формата .txt, то байты можно забрать простым SelectQuery, и файл у них создается, а вот если это Word-файлы (.doc, .docx), то они так же читают байты файла, но тут уже проблема, они не могут на своей стороне эти байты преобразовать в файлы формата .doc, .docx, Так вот возможно есть метод отдельный для скачки файлов из БПМ?

Нравится

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

У меня имеется пакет установлен как и другие через репозиторий и он заблокировался каким-то образом. При попытке добавить файл выдает ошибку "Невозможно сохранить изменения элемента, так как пакет, в который он сохраняется, заблокирован другим пользователем". Попробовал поменять значения IsLocked и IsChanged в SysPackage, SysSchema. Привязанных данных нет. Почистил Redis, перезапускал Redis. Менял обратно значения. Ничего не помогает. Зафиксировать тоже не дает. Как такое лечить? Maintainer установлен также как в системных настройках. Другие пакеты в порядке

Нравится

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

Решил вопрос. Зашел через тортилку в repo-browser и снял блокировку с каждого файла в пакете. Сделал коммит в файловой системе, восстановил в БД из репозитория и там у пакета оказался maintainer прежним, до моего изменения. Не знаю почему так вышло, поменял maintainer как надо. всё работает

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

Добрый день!

После обновления пакет через мастер установки приложений, возникла такая ошибка:

"Ошибка обновления структуры таблицы для схемы "VcRequest" из пакета "HeatingCore". UId 336beaed-efb0-49f5-8506-29456cb1bbaf: У колонки "Стадия заявки" с типом справочник не указана ссылка на схему-справочник. "

В самом объекте VcRequest, такой колонки уже нет. Обновление структуры БД, генерация исходного кода и полная компиляция ошибку не устраняют.

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

Нравится

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

 

При полной компиляции должно указывать где именно нет этой колонки, также рекомендую поискать Uid и название колонки в метаданных самого объекта "VcRequest".

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

 

При полной компиляции должно указывать где именно нет этой колонки, также рекомендую поискать Uid и название колонки в метаданных самого объекта "VcRequest".

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

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