Вопрос

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


 

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

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

Попробуйте что-то вроде такого: 

initQuerySorting: function(esq) {
  if (!esq.columns.contains("CreatedOn")) {
    var createdOnColumn = esq.addColumn("CreatedOn");
    createdOnColumn.orderPosition = 1;
    createdOnColumn.orderDirection = this.Terrasoft.OrderDirection.ASC; //DESC
  }
 }

 

Как вариант, можете попробовать через Конфигурацию установить колонку сортировки http://prntscr.com/kx2u2z для вашего объекта Справочник.

На сколько я помню - должно сработать.

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

Прошу откликнуться, у кого был опыт по направлению интеграции bpmonline и Яндекс.Метрика/ Google Analytics

Конкретные задачи:

1.       Изображение удалено.CRM       ->       Google Analytics: (важно это сделать до запуска) передавать по Measurement Protocol все данные о статусе заявки, + передавать статусы отказа по заявке. Получим отчет по всей воронке, от кликов с различных источников до выдачи карты. Отказы нужны, что бы понимать качество источников, с которых приходит трафик.

2.       Изображение удалено.Google Analytics        ->        CRM: передавать данные о кликах и источниках трафика из GA в CRM. Это позволит все данные о воронке хранить на нашей стороне, плюс визуализировать отчеты по воронке внутренними инструментами от Террасофт (возможно для визиаулизации и не понадобиться Power BI)

3.       Изображение удалено.CRM        ->       Яндекс.Метрика: передавать все данные о статусе заявки, + передавать статусы отказа по заявке. Получим отчет по всей воронке, от кликов с различных источников до выдачи карты. Отказы нужны, что бы понимать качество источников, с которых приходит трафик. Необходимо для оптимизации контекстной рекламы на Яндексе.

5.       Отдельно нам надо трекать в CRM действия наших клиентов, заходят они в интернет банк или мобильный банк, какие операции и где выполняют.

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

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

Делал загрузку данных с Яндекс.Метрика и самое сложное - это правильно составить запрос + обработать данные. 

Все из того, что вы описали, делается простыми http-запросами, так что проблем возникнуть не должно. Остаются нюансы площадок (кол-во запросов в день, полечение oauth-токена, на гугле вообще приложение вроде как надо регистрировать)

А в чем проблема со стороны сервера на C# делать запросы к этим сервисам. Делал в свое время к Гугл-аналитике по АПИ, прекрасно работало. Понятно, что сама Гугл-аналитика в ВРМ передавать ничего не будет.

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

Здравствуйте! Такая ситуация когда выполняется вызов метода получения UserConnection
через БП, то возникает ошибка, если на прямую из клиента через сервис, но всё нормально, ошибок нет. В чем здесь дело?


 

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

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

Добрый день, Александр.

Получение экземпляра UserConnection из объекта HttpContext (контекст запроса) возможно только в рамках веб-запроса к сервису. При вызове метода сервиса вручную (например, если создать экземпляр класса сервиса и вызвать нужный метод) нет контекста запроса, поэтому, при получении вы получаете ошибку.

При написании веб сервисов хорошая практика - не писать код обработки непосредственно в методах сервиса, а писать её в рамках некоторого вспомогательного класса. В класс следует добавить конструктор, который принимает объект UserConnection.

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

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

Получить экземпляр UserConnection в бизнес-процессах можно следующими способами (в зависимости от того интерпретируемый процесс, или нет):

var userConnection = Get<UserConnection>("UserConnection");
​var userConnection = context.UserConnection;

В рамках процессов объектов можно воспользоваться одноименным свойством - UserConnection.

Добрый день, Александр.

Получение экземпляра UserConnection из объекта HttpContext (контекст запроса) возможно только в рамках веб-запроса к сервису. При вызове метода сервиса вручную (например, если создать экземпляр класса сервиса и вызвать нужный метод) нет контекста запроса, поэтому, при получении вы получаете ошибку.

При написании веб сервисов хорошая практика - не писать код обработки непосредственно в методах сервиса, а писать её в рамках некоторого вспомогательного класса. В класс следует добавить конструктор, который принимает объект UserConnection.

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

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

Получить экземпляр UserConnection в бизнес-процессах можно следующими способами (в зависимости от того интерпретируемый процесс, или нет):

var userConnection = Get<UserConnection>("UserConnection");
​var userConnection = context.UserConnection;

В рамках процессов объектов можно воспользоваться одноименным свойством - UserConnection.

Семенов Александр Евгеньевич,

Спасибо большое за ответ, разобрался всё работает)

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

Здравствуйте! Подскажите пожалуйста, есть ли возможность сделать в bpm используя класс Insert, запрос такого вида:

Insert into "имя сторонней базы"."имя таблицы этой базы" (...) values (...);

т.е. сделать инсерт в другую стороннюю базу, или прочитать от туда таблицу. Если да, то как сделать.

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

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

Скорее всего нет. Особенно, если система в облаке)

Хотя я бы потестил на локальной версии. Пользователю, под которым BPM лезет в бд, выдал права на другую базу, и запрос бы оформил через CustomQuery

Можно создать view с запросом на выборку, триггерами вместо вставки, изменения и удаления в стороннюю базу. Затем создать привязанную к ней схему с такими же колонками и проставленным признаком «представление» и работать с ней так же, как с обычной.

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

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

Здравствуйте! Может кто-нибудь подскажет как решать проблему, с отображением данных уведомлений.

Сами уведомления приходят, всё хорошо, но они не отображаются "красными кружками", в боковой панели, на "Центр уведомлений". Версия 7.11

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

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

Механизм уведомлений будет работать корректно при правильно настроенных сокетах. С порядком настройки сокетов можно ознакомиться здесь. Также следует обратить внимание на тот факт, что обязательно должен быть активирован компонент "WebSocket Protocol". Ниже прикреплен скриншот для наглядности:

Мотков Илья,

Cпасибо за ответ, сделал как написано, в консоли отобразилась надпись 

WebSocket-connection opened for url:ws://demo.bpmonline.com/0/Nui/ViewModule.aspx.ashx
а так же типа такого периодически сыпется

Уведомления всё равно не появляются, т.е. сами уведомления приходят, но оповещений на уведомления так и не появляются.
Эти уведомления ведь могут работать и на пользовательские разделы?

Насколько понимаю Ваш сайт размещен локально. В данном случае Вам следует обратить внимание на следующие факторы:
1. Должна использоваться только регламентированная Terrasoft операционная система (только Windows в качестве сервера для разворачивания и для клиентской ПК. Также для клентского ПК еще может использоваться MAC OS но только в браузере Safari);
2. Должен использоваться только регламентированный Terrasoft браузер (Chrome, Mozilla последней актуальной версии, Safari под MAC OS);
3. Должны быть открыты и корректно настроены веб-сокеты, ссылка выше.

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

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

devexpress подключение библиотеки для использования в отчете.

Подскажите как подключить?

Пробовал в Дизайнере отчетов bpm в свойстве подключаемые модули указать название свое dll и добавить ее в папку BIN в системе и потом вызвать в коде скрипта. Но библиотеку дизайнер отчетов не видит.

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

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

Тоже сталкивался с подобной проблемой, и не удалось решить, скорее всего, что никак. Пришлось создавать свой велосипед на костылях в скрипте Dev Express, а потом и вовсе пришлось выбросить его на помойку и запилить свой недошаблонизатор, т.к. клиент захотел редактируемый документ, а Dev Express оказался не способен выдать что-то пригодное для редактирования.

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

Выполнил загрузку пакета по инструкции: 

https://academy.terrasoft.ru/documents/technic-sdk/7-12/zagruzka-paketo…

Командой: 

C:\bpmonline7.9.2\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe -packageName=userPackage -workspaceName=Default -operation=InstallFromRepository -sourcePath=C:\SavedPackages -destinationPath=C:\TempPackages -skipConstraints=false -skipValidateActions=true -regenerateSchemaSources=true -updateDBStructure=true -updateSystemDBStructure=true -installPackageSqlScript=true -installPackageData=false -continueIfError=true -logPath=C:\Log

Где параметр "-packageName=userPackage" заменил на собственное название пакета.

Вместе с моим пакетом, подтянулись все другие пакеты, включая базовые. Сейчас стоит вопрос о том, как можно(если можно) вернуть Bpm  в исходное состояние(до загрузки нового пакета), а так же стоит вопрос, по какой причине такое могло произойти, если на параметр "-packageName" должен устанавливать только указанный пакет? 

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

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

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

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

Оба пользователя имеют одинаковый доступ к очереди.

Очередь настроена так:

Активность:

- Категория: Email

- Тип сообщения: Входящее

- Статус: Не начата

 

Проблема:

1) в списке Единого окна отображается разное кол-во записей. У одного пользователя не видны некоторые записи. Например у Supervisor 10 входящих, а у Artem 8 входящих, 2 записи должны отображаться, но их нет.

2) в списке Единого окна есть записи у которых Статус = Завершена, хотя в фильтре установлено отображать только Не начатые.

 

Как это окно работает, почему эти проблемы появились?

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

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

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

По порядку:

1) В Едином окне будут отображаться записи, на которые есть доступ у  пользователя. Проверьте права доступа на запись. 

Так же запись должна быть в Едином Окне в статусе "Не обработана" или "В работе", тогда она будет отображаться.

http://prntscr.com/k45uj4

2) Вы можете построить в разделе, по которому строится "Единое Окно", фильтр из очереди, чтобы убедиться в том какие записи попадут в очередь. По данному вопросу необходимо увидеть какие у Вас выполнены настройки в очереди. Возможно у Вас стоит условие фильтрации "ИЛИ", вместо "И"

 

Гриценко Игорь пишет:
Так же запись должна быть в Едином Окне в статусе "Не обработана" или "В работе", тогда она будет отображаться

Это неправильно. Поскольку отсутствует возможность настроить очередь. Я не знаю как, но там появились записи, которые не соответствуют фильтру и в статусе В работе или Не завершена. Такого не должно быть, это нонсенс. Человек ожидает - настроил фильтр очереди - и в этом списке четко именно те записи, которые удовлетворяют фильтру. Я считаю это баг, или вы недостаточно проработали этот вопрос. 

Гриценко Игорь пишет:
Вы можете построить в разделе, по которому строится "Единое Окно", фильтр из очереди, чтобы убедиться в том какие записи попадут в очередь

Эта опция не работает! сколько угодно строишь очередь, меняешь фильтр, все одно - записи не соответствуют фильтру. Там какой-то баг дополнительно. У меня все правильно с фильтрами, это самое простое что можно сделать, фильтр "И". Права раздать элементарно, да и при чем тут права, если записи, которые отображаются - не соответствуют фильтру, там присутствуют кроме фильтра - дополнительные записи. 

Т.е. вывод - этот баг, или недоработка, что в очереди присутствуют записи по фильтру + записи В работе или Не обработана. Вопрос решился только путем удаления старой очереди и создания НОВОЙ, что исключает возможность переноса очереди посредством Данных. это БАГ. Предлагаю рассмотреть этот вопрос и исправить в новых версиях, чтобы записи были только в соответсвии с фильтром, или добавить дополнительный фильтр, которым можно включать выключать фильтр непосредственно очередей (статусы и т.д. ) поскольку реально этими статусами с помощью очереди управлять нельзя.

Добрый день, Дмитрий

Напишите на почту тех. поддержки - support@terrasoft.ru по данной проблеме.

Так же необходим будет кейс воспроизведения данной ошибки на базовой версии(без доработок) bpm'online (https://www.terrasoft.ru/trial?product=service).

Гриценко Игорь,

хорошо спасибо. 

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

Здравствуйте! Возникла следующая задача: есть БП, в нём выполняется шарпный код, по таймеру, и при завершении процесса, в параметры этого процесса, записываются значения, и мне необходимо после выполнения этого БП, на клиенте анализировать эти параметры и выводить соответствующие информационные уведомления. Но я чего-то не пойму как передать в callback, выполнения БП, эти самые параметры?

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

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

Здравствуйте! Попробуйте передавать по каналу web-socket
Код на стороне БП

var userConnection = Get<UserConnection>("UserConnection");
var messageToUser = Get<string>("AbMessageToUser");
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection, "AbCreatingSmsAudienceProcess", messageToUser);
return true;

На клиенте следующий код
 

define("ContactSectionV2", [], function() {
	return {
		entitySchemaName: "Contact",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		methods: {
			init: function () {
				this.callParent(arguments);
				this.subscriptionFunction();
			},
			subscriptionFunction: function() {
				Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE,
				this.onAbCreatingSmsAudienceProcessMessage, this);
			},
			onAbCreatingSmsAudienceProcessMessage: function(scope, message) {
				if (!message || message.Header.Sender !== "AbCreatingSmsAudienceProcess") {
					return;
				}
				var message2 = message.Body;
				if (!this.Ext.isEmpty(message2)) {
					this.Terrasoft.showInformation(message2);
				}
			}
		},
		messages: {}
	};
});

 

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

 

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

Есть простая возможность (без использования MultiMaskEdit) ограничить ввод в текстовое поле:

- чтобы вводились только цифры

- количество - не более 12ти

(например опциями в diff.values)

?

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

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

Такой возможности вероятнее всего нет из коробки. Стандартными средствами JavaScript обрабатывая клавиатурные события, можно посмотреть, например по ссылке - https://learn.javascript.ru/keyboard-events

Можно, например, добавить обработчик на keypress/keydown, и если это не цифра или в поле ввода уже 12 симоволов просто игнорировать нажатия

Спасибо

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