Вопрос

Коллеги, вопрос такой.

При первом входе, какое-либо действие занимает много времени, например, создание контакта - до 15 секунд. 

Затем, повторная операция - сокращается до 2-3 секунд.

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

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

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

В свое время занимался порталами, там были скрипты прогрева системы, может к BPM Online есть подобные.

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

PS: Версия облачная.

 

 

 

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

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

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

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

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

Пытаюсь сделать отправку сообщения в задании-сценарии в соответствии с данной инструкцией https://academy.terrasoft.ua/documents/technic-sdk/7-13/clientmessagebr….

В БД есть данное задание-сценарий:

    string sender = "AddProductToInvoice";

    string messageText = "";

    MsgChannelUtilities.PostMessageToAll(sender, messageText);

    return true;

При публикации выдается сообщение об ошибке компилятора:

"The name MsgChannelUtilities does not exist in the current context "

 

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

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

Во-первых. Ответ на исходный вопрос ("The name MsgChannelUtilities does not exist in the current context ") - в пространство имен бизнес-процесса нужно добавить Terrasoft.Configuration. 

MsgChannelUtilities это просто схема исходного кода в базовой конфигурации, её код расположен в неймспейсе Terrasoft.Configuration (можно её открыть и посмотреть). 

Во-вторых. Метод refreshGridData() определён для раздела (Section) и в примере в https://community.terrasoft.ru/questions/obnovlenie-reestra-detali-posle-bp обновляет именно страницу раздела (AccountSection). Очевидно, что на странице карточки он отсутствует, т.к. на карточке нет грида, который она могла бы обновлять. Чтобы обновить деталь на карточке нужно использовать метод this.updateDetail({detail: "здесьимядетали"});

Вам нужно в Ваш БП в пространство имен подключить MsgChannelUtilities.

Смотрите скриншот ниже:

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

Алла , у меня такая же проблема , подключил MsgChannelUtilities

но теперь выходит другая ошибка 

см скришот ниже

Пользователь13,

Доброе утро.

В таком случае попробуйте написать таким образом:

var userConnection = Get<UserConnection>("UserConnection");
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection, MessageName, MessageText);

 

Увы снова ошибка(

добавил эту строку  

var userConnection = Get<UserConnection>("UserConnection");

ошибки не возникло после  публикации, но почему то деталь не обновилась после вставки в нее значения((

Пользователь13 пишет:
ошибки не возникло после  публикации, но почему то деталь не обновилась после вставки в нее значения((

Значит нужно отладиться и посмотреть получает ли деталь Ваше сообщение с БП.

Как вариант, могут быть проблемы с работой Web-сокетов. 

через отладчик выяснил что  обмен сообщениями происходит ошибка на

эту функцию this.refreshGridData(); 

вот код на странице , деталь находиться на странице FinApplicationPage

 onMyBpFinish: function(args) {
                    //Обновим грид
                 //   this.showInformationDialog ("sdfgsdfsdf");
                    window.console.info("Получено сообщение");
                    this.refreshGridData();
                },

Пользователь13,

this.reloadEntity(); - это попробуйте, обновляет всю страницу. У меня заработало все в итоге.

this.refreshGridData(); - тоже ошибку выдавало, видимо ее как-то по другому надо использовать. 

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

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

Во-первых. Ответ на исходный вопрос ("The name MsgChannelUtilities does not exist in the current context ") - в пространство имен бизнес-процесса нужно добавить Terrasoft.Configuration. 

MsgChannelUtilities это просто схема исходного кода в базовой конфигурации, её код расположен в неймспейсе Terrasoft.Configuration (можно её открыть и посмотреть). 

Во-вторых. Метод refreshGridData() определён для раздела (Section) и в примере в https://community.terrasoft.ru/questions/obnovlenie-reestra-detali-posle-bp обновляет именно страницу раздела (AccountSection). Очевидно, что на странице карточки он отсутствует, т.к. на карточке нет грида, который она могла бы обновлять. Чтобы обновить деталь на карточке нужно использовать метод this.updateDetail({detail: "здесьимядетали"});

SERGEY 

спасибо! this.reloadEntity() это заработало!

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

Основное направление деятельности компании «ТЕХНОТЕСТ Груп» («Технотест Плюс» и «Украгротест»):

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

2. Производство инструментов для контроля качества зерна.

3. Продажа контрольных (стандартных, референтных) образцов зерна.

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

 

Предпосылки внедрения bpm’online

До внедрения платформы bpm’online в «Технотест Плюс» велась собственная система сбора, учета и хранения информации. Важной потребностью было хранение истории переговоров с клиентами, в связи с чем, было принято решение наладить новый тип бизнес-процессов с помощью внедрения системы CRM.

Решающими факторами выбора bpm’online sales стали такие преимущества платформы:

· общая систематизация работы менеджера и последующих отчетов руководству;

· ведение истории переговоров с клиентом;

· входящая/исходящая корреспонденция и звонки;

· гибкость;

· масштабируемость;

· безопасность.

 

Задачи внедрения bpm’online sales:

· воспроизвести бизнес-процесс компании, при котором система будет подсказывать менеджеру и напоминать о следующих шагах в работе с клиентом;

· построить систему контроля работы менеджера;

· оптимизировать временные затраты менеджеров.

 

Выполненные настройки

При внедрении bpm’online sales было принято решение работать с базовым функционалом раздела [Лиды]. По базовому процессу «Управление лидом 7.8.0» создается запись в разделе [Заказ]. Информация о клиенте автоматически переносится из лида в заказ, где происходит основная работа с клиентом.

Были добавлены такие поля как:

· тип заказа;

· вид груза;

· контактный телефон для почты;

· фактический телефон получателя;

· информация о доставке;

· состояние поставки товара на склад;

· плановая дата поставки от поставщика;

Также для оптимизации работы менеджеров было принято решение фиксировать информацию о счетах в карточке заказа, для чего были добавлены поля:

· тип оплаты;

· состояние оплаты;

· возможна частичная оплата;

· состояние оплаты;

· реквизиты поставщика (Наша компания).

Так как компания «Технотест Плюс» очень плотно сотрудничает с компанией Новая почта, для удобства отправки заказов партнёрами был доработан функционал передачи данных из bpm'online в личный кабинет пользователя Новой почты. Достаточно заполнить необходимые поля, такие как ответственный для НП, вес, ширина, длина, высота, и система самостоятельно подсчитает объемный вес в кг и м3.

Важное преимущество этого функционала – отправка СМС и email Контрагенту о статусе движения отправленного товара. 

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

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

 

Результат

Внедрение bpm’online позволило организовать работу менеджеров в единой системе, а также закрыть основную цель — выполнение запланированных задач и хранение истории коммуникаций с клиентом.

Также система автоматически создает активности согласно настроенному бизнес-процессу, после чего уведомляет о них пользователя. Благодаря этому менеджеру не нужно держать в голове информацию о всех незакрытых счетах — система напомнит ему о необходимых действиях.

  

 

 

 

Поделиться

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

Добрый день!

Подскажите, пожалуйста, как решить данный кейс?

1. По процессу необходимо отправить клиенту письмо по шаблону, котором должна отображаться продуктовая корзина заказа. 

Т.е. Создаем заказ вручную, добавляем продукты. Как отобразить в письме таблицу с продуктами в заказе?

 

2. Как в HTML код шаблона вставить динамические поля? возможно ли это?

 

Спасибо

 

Сейчас версия 7.13, на проде будет 7.14

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

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

1. Полностью решить такую задачу с помощью "родных" элементов не получится. Вам понадобится пользовательское действие, которое формирует html-таблицу из выборки по объекту. Не нашел его на маркетплейсе, но я точно его скачивал где-то на ресурсах Террасофта, возможно в том же маркетплейсе, просто искал плохо. Называется "Таблица детали для email". С помощью него Вы можете в процессе читать ваш шаблон, затем с помощью пользовательского действия формировать таблицу. После этого в элемент отправки письма вставляете html-текст шаблона + таблица. Должно сработать :)

1. Полностью решить такую задачу с помощью "родных" элементов не получится. Вам понадобится пользовательское действие, которое формирует html-таблицу из выборки по объекту. Не нашел его на маркетплейсе, но я точно его скачивал где-то на ресурсах Террасофта, возможно в том же маркетплейсе, просто искал плохо. Называется "Таблица детали для email". С помощью него Вы можете в процессе читать ваш шаблон, затем с помощью пользовательского действия формировать таблицу. После этого в элемент отправки письма вставляете html-текст шаблона + таблица. Должно сработать :)

2. Расскажите подробнее что Вы хотите отобразить в динамических полях. В шаблонах доступны макросы, которые подставляют имя, фамилию адресата и данные объекта, из которого создается письмо. Возможно это Вам и нужно.

Ксензов Егор пишет:

1. Полностью решить такую задачу с помощью "родных" элементов не получится. Вам понадобится пользовательское действие, которое формирует html-таблицу из выборки по объекту. Не нашел его на маркетплейсе, но я точно его скачивал где-то на ресурсах Террасофта, возможно в том же маркетплейсе, просто искал плохо. Называется "Таблица детали для email". С помощью него Вы можете в процессе читать ваш шаблон, затем с помощью пользовательского действия формировать таблицу. После этого в элемент отправки письма вставляете html-текст шаблона + таблица. Должно сработать :)

Егор, тысяча благодарностей, будем пробовать.

 

Ксензов Егор пишет:

2. Расскажите подробнее что Вы хотите отобразить в динамических полях. В шаблонах доступны макросы, которые подставляют имя, фамилию адресата и данные объекта, из которого создается письмо. Возможно это Вам и нужно.

Егор, предположим  у нас есть html-код, который нам предоставил клиент. Это код из сайта продуктовой корзины(например). В данном коде нам необходимо отобразить какие-то поля из системы. Или надо отдельными блоками добавляться блок с динамиечскими полями из пользовательского макроса, отдельно блок html?

Также см. обсуждение.

И в маркете нашлось очень по описанию похожее на Вашу потребность решение: Работа с поставщиками по товарам «под заказ»:

  • Отправка e-mail уведомлений со списком продуктов покупателям и поставщикам (в зависимости от типа заказа).

Виктория Мун,

Если не подойдут готовые решения, на которые указал Александр, то у Вас есть два пути:
1. Как вы и указали, делать блоками: часть письма будет шаблоном из справочника, часть - html'ем клиента. В бизнес-процессе уже будете склеивать шаблон письма из справочника + таблица + код клиента. Это подойдет если поля из макроса нужно указывать только в определенном блоке письма, например, в приветствии (т.е. заменить часть кода клиента на шаблон из справочника, в который подставляются макросы).
2. Обрабатывать весь html клиента в скрипт-таске.

Ксензов Егор,

Егор, добрый день!
Искала довольно тщательно, но подобного приложения не нашла. Буду признательна если поможете найти. Как ра необходимо данные из детали отправлять в e-mail. Спасибо

 

Ещё вариант, сделать в объекте раздела текстовое поле неограниченной длины и туда автоматически заносить перечень значений из связанных записей с детали с нужными элементами форматирования. Синхронизация будет в одну сторону, БП или встроенный БП на событиях добавления, изменения и удаления записей в объекте детали.

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

Добрый день!

Тема уже поднималась, но не до конца понял.

Сделал замещающий клиентский модуль , добавил в diff поле UsrCardNumber (оно Integer). Но не отображает значение.

И тут же задам вопрос - есть возможность поиска по числовым полям? Я указал в свойствах поля индексировать, но видимо это другое. Или поиск возможен только текстовым полям? Очень скудная документация по настройке поиска(

 

define("ContactSearchRowSchema", [], function() {
	return {
		
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "remove",
				"name": "EntitySchemaCaption"
			},
			{
				"operation": "merge",
				"name": "FoundColumnsContainerList",
				"values": {
					"layout": {
						"column": 0,
						"row": 2,
						"colSpan": 12
					}
				}
			},
			{
				"operation": "insert",
				"parentName": "DataContainer",
				"propertyName": "items",
				"name": "Job",
				"values": {
					"layout": {
						"column": 12,
						"row": 0,
						"colSpan": 6
					}
				}
			},
			{
				"operation": "insert",
				"parentName": "DataContainer",
				"propertyName": "items",
				"name": "UsrCardNumber",
				"values": {
                        "enabled": true,
                        "visible": true,
					"layout": {
						"column": 18,
						"row": 0,
						"colSpan": 6
					}
				}
			},
			{
				"operation": "insert",
				"parentName": "DataContainer",
				"propertyName": "items",
				"name": "Account",
				"values": {
					"layout": {
						"column": 0,
						"row": 1,
						"colSpan": 12
					}
				}
			},
			{
				"operation": "insert",
				"parentName": "DataContainer",
				"propertyName": "items",
				"name": "Email",
				"values": {
					"className": "Terrasoft.Hyperlink",
					"href": {bindTo: "getEmailUrl"},
					"click": {bindTo: "onEmailUrlClick"},
					"layout": {
						"column": 18,
						"row": 1,
						"colSpan": 6
					}
				}
			},
			{
				"operation": "insert",
				"parentName": "DataContainer",
				"propertyName": "items",
				"name": "MobilePhone",
				"values": {
					"layout": {
						"column": 12,
						"row": 1,
						"colSpan": 6
					}
				}
			}
		
		
		]/**SCHEMA_DIFF*/
	};
});

 

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

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

Поиск идёт только по тексту, используется движок для полнотекстового поиска Elastic SearchВ ConfItemSearchRowSchema номера InventoryNumber и SerialNumber сделаны текстовыми, по ним ищет. То есть лучше и новое поле UsrCardNumber делать текстовым, либо дублировать в текстовое поле значение из числового. 

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

Где найти справочник способов оплаты?

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

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

Добрый день!
Может тип оплаты?

Добрый день!
Может тип оплаты?

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

Получаю по oData данные счета и клиента, необходимо понять является ли клиент контрагентом или контактом. Как это сделать? 

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

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

В счетах поле 'Клиент' составное и состоит оно из полей 'Контрагент' и 'Контакт'.

Таким образом, Вам нужно проанализировать, если поле 'Контакт' пусто, значит клиент является юр. лицом (контрагентом), если заполнено - физ.

В счетах поле 'Клиент' составное и состоит оно из полей 'Контрагент' и 'Контакт'.

Таким образом, Вам нужно проанализировать, если поле 'Контакт' пусто, значит клиент является юр. лицом (контрагентом), если заполнено - физ.

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

В общем задача на первый взгляд простая.

Нужно в одной из страниц переписать метод кнопки Закрыть, чтобы в одном из случаев перехода (в случае если адрес предыдущей страницы был XXX (нужен URL c параметрами, просто document.referrer не подойдет) , то поменять адрес возврата.

Метод onCloseCardButtonClick переопределил, но не могу понять, как мне URL получить предыдущей страницы.

Уже все перерыл.

var router = Terrasoft.router.Router;

hash = router.getHash(); - тут только текущий адрес карточки

 

 

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

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

Буквально утром отвечал на похожий вопрос, посмотрите эту ветку

Буквально утром отвечал на похожий вопрос, посмотрите эту ветку

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

По какому адресу нужно обратится чтобы получить данную информацию?

https://<domen>/0/ServiceModel/EntityDataService.svc/?????

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

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

Добрый день!
InvoicePaymentStatusCollection

Добрый день!
InvoicePaymentStatusCollection

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

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

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

Вопрос такой - через oData создаю объект, например, контакт, но БП настроенный на добавление объекта не запускается. Куда копать?

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

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

SERGEY PIMINOV,

Под внутренними бизнес-процессами подразумеваются событийные процессы объекта. Сделайте автонумерацию по аналогии с этим примером.

Добрый день!
Действительно почему то не работают сигнала по созданию объектов через OData.
Но работают сигналы во внутреннем бизнез процессе, например ContactInserted

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

Не совсем понял, а что значит по внутреннем? Как это можно использовать? Мне просто автонумерацию в БП сделать нужно, а через  БД не получается. Может на событие объекта повесить тогда как-то?

SERGEY PIMINOV,

Под внутренними бизнес-процессами подразумеваются событийные процессы объекта. Сделайте автонумерацию по аналогии с этим примером.

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