Добрый день.

Следую инструкции https://academy.terrasoft.ru/documents/marketing/7-11/ustanovka-servisa-globalnogo-poiska застрял на пункте 6. "Предварительные настройки конфигурационных файлов".

Не могу найти значения, которые нужно указать в конфиг-файлах компонентов

  • GlobalSearch.WebApp

  • GlobalSearch.WindowsService

  • GlobalSearch.Worker.WindowsService

Есть более подробное описание по настройке этих файлов или конкретный пример со значениями?

Нравится

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

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

 

Для компонента GlobalSearch.WebApp, вам необходимо указать такие значения:

RabbitMq  - формат amqp://логин:пароль@rabbit-url:amqp_port/ где amqp_port – это порт api rabbitmq. Увидеть его можно в админ панели rabbitmq во вкладке overview:

ApiKey – пустая строка «»

DbName — название БД. – не используется

DbServerName — название сервера БД. - не используется

ElasticSearchUrl — URL к серверу ElasticSearch. Пример http://ru1-es-bpm.bpmonline.com:9201/

ConfigFolder – путь к доступной директории в файловой системе. Пример \\tscore-dev-15\GSSConfigs

 

Для компонента GlobalSearch.WindowsService.exe.config, необходимо указать такие значения:

DataCenterName = OnSiteDataCenter -  имя датацентра, в котором работает сервис.

DBServerNameTemplate – {0} - шаблон названия сервера БД

 

Все другие значения, которые указаны в инструкции на Академии https://academy.terrasoft.ru/documents/marketing/7-11/ustanovka-servisa-globalnogo-poiska?_ga=2.15657590.1384539171.1517901712-1106679796.1517901712#XREF_10690_bat есть в конфигурационных файлах.

 

Спасибо за обращение в службу поддержки Terrasoft.

Анна Журавель, здравствуйте.

Спасибо за помощь в настройке конфигов. Теперь столкнулся со следующей проблемой: 

https://academy.terrasoft.ru/documents/marketing/7-11/opisanie-api-servisa-globalnogo-poiska#XREF_17963_API

 здесь дан пример кода. Вот что у меня получилось

Я нашел, что можно с этим сделать, но получаю другую ошибку

Почему может не находиться метод addsite?

 

 

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



Судя по Вашим скриншотам, вы не совсем правильно сформулировали POST запрос и не прописали ApiKey и SiteName.

Данный POST запрос должен идти не к ElasticSearch, а к Global Search Service. В POST запросе необходимо указывать адрес сервиса который указан в IIS,а не путь к файлам сервиса.

В инструкции на Академии (https://academy.terrasoft.ru/documents/marketing/7-11/opisanie-api-servisa-globalnogo-poiska?_ga=2.128212741.845169317.1518421536-1106679796.1517901712#XREF_17963_API) указано, какие значения нужно присвоить параметрам ApiKey и SiteName, а именно :

•ApiKey — ключ авторизации (указывается в Web.config). Указывать нужно если не указали в этом файле.

•SiteName — название Вашего сайта.

Кроме этого, обращаем Ваше внимание на то, что Global Search Service нужно развернуть как отдельный сайт в IIS, а не как приложение сайта bpmonline.

Показать все комментарии
Логирование
7.11
sales

Добрый день, коллеги!

Установлен bpm'online на сервере 2012 R2, в папке temp нет папки BPMonline. Вопрос - куда пишутся логи и пишутся ли они?

Нравится

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

Добрый день! По умолчанию путь для Log-файлов следующий:

C:\Windows\Temp\BPMonline\site x, где x - номер сайта в iis.

Обращаю Ваше внимание, что папка [Temp], находится в папке [Windows].

Также можете проверить, включено ли логирование в файле log4net.config в папке приложения. 

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

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

Добрый день!

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

Нравится

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

Марат, добрый день.

Вы можете настроить отображение в дизайнере системы - Настройка рабочих мест.

Добрый день, Марат!

Добрый день!

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

 Это наблюдается из-за того, что для данного раздела нет объекта, и, соответственно не работают права на уровне объектов системы.

И как его скрыть в этом случае?

 В разделе "Настройка рабочих мест" убрать данный раздел для той роли, которая не должна его видеть (в некоторых случаях может понадобиться создать два рабочих  места: 1 - с этим разделом для одной группы пользователей и 2 - без этого раздела).

Показать все комментарии
валидация
ActionsDashboard
обязательные поля
сохранение записи
7.11
sales

Добрый день!



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

И в случае, если всё заполнено, то сохранить карточку продажи с новым статусом, а если не заполнено, то сделать поля обязательными и не давать сохранить, пока они не заполенны?

Нравится

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

Владимир, добрый день.

Для примера рассмотрим реалзиацию для объекта Обращения.

Одним из возможных вариантов реализации будет следующий:

1.На странице [Обращения], открыть мастер раздела и во вкладке [Решение и закрытие], добавить новое текстовое поле типа "Строка"

Например с названием "Причина перехода на следующую стадию" http://prntscr.com/i97vb7

2.Перейдя в мастере раздела на [Бизнес правила], создадим новое БП  http://prntscr.com/i97viu

Это правило говорит, что при изменении состояния обращения с "Новое" на "В работе",

поле "Причина перехода на следующую стадию" является обязательным к заполнению.

Обращаем Ваше внимание, что при создании БП в графе [Какое поле делать обязательным] следует указать название требуемой к заполнению строки из БД http://prntscr.com/i97vvk

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

он будет получать уведомление о том, что не заполнено обязательное поле указания причины http://prntscr.com/i97w4x 

При переходе по actiondashboard'у выполняется сохранение записи и валидация заполненных полей.

Спасибо, Андрей!



При реализации возникла проблема в связи с различиями в поведении ActionsDashboard и lookup-поля:



Имеется справочник QualifyStatus, он выведен на страницу LeadPageV2 через ActionDashboard, в разделе attributes страницы указаны дополнительные колонки кроме id и value:

"QualifyStatus": {

    lookupListConfig: {

        columns: ["Name", "StageNumber", "UsrIsTaken", "UsrIsOpportunity", "UsrIsDisqualified"]

    }

}

Но они не доступны в коде страницы работы через this.get("QualifyStatus"). Если же добавить на страницу Lookup с QualifyStatus и работать со справочником через него то данные поля становятся доступны

Кроме того, при неудачной валидации статус на ActionsDashboard перескакивает обратно, что не совсем логично

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

Т.е. this.get("QualifyStatus") возвращает объект в котором нет указанных колонок?

Именно 

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

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

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

Мне нужно в разделе продажи создать деталь "фильтр".

Деталь должна иметь такой же внешний вид, как у группы полей. 

Этими полями будут 4 справочника.  Необходимо отловить события изменения этих справочников.   

 

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

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

1. Хотя создал объект для детали,  поместил в него справочник привязанный к справочнику продаж с автозаполенением на уровне приложения. А также сделал связи по остальным своим 4-ым. справочникам.

2. Создал деталь, наследуя от "Базовая деталь".

3. Зарегистрировал эту деталь, через SQL

4. Добавил ее как обычную деталь, по Продажи и Id

 

 

Нравится

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

Под вторым пунктом Вы имеете в виду, что создали "Схему модели представления детали с реестром" и в ней унаследовались от "Базовая схема детали с реестром ( NUI )"?

Alex Zaslavsky,  "Базовая схема детали с реестром ( NUI )"  нет, посчитал, что это нужно именно для реестра. А мне нужно сделать по внешнему виду деталь аналогично как у группы полей, только, чтобы это была деталь. (Ответил из под второго акк)

atyurin,

А, я Вас неправильно понял. Даже не знаю чем помочь. У меня такое было, когда я однажды неправильно сделал регистрацию детали при помощи SQL запроса. Нужны хоть какие-то скрины схемы, детали, запроса.

Добрый день. Судя по описанию вы выбрали неверного родителя для схемы детали. Попробуйте создать деталь согласно статьи https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-polzov…. Если у вас возникнут затруднения, пожалуйста, напишите на support@terrasoft.ru с предоставлением доступа к вашей среде для проведения отладки.

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

Добрый день.

Подскажите, пожалуйста, где редактируется данное меню http://prntscr.com/i925jy .

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

Нравится

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

Здравствуйте, Станислав

Пользовательскими средствами приложения изменить набор пунктов данного модуля возможности нет, но Вы можете переопределить схему "LeftPanelTopMenuModule" из пакета "NUI" таким образом чтобы отображать необходимые Вам пункцты меню соориентироваться можно по методу loadItemsQuickAddMenu

Denys Diachenko,

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

В версии 7.11 есть такая таблица QuickAddMenuItem в ней и есть список того что выпадает в списке, и не надо переопределять схему LeftPanelTopMenuModule, там уже есть добавленные элементы, на примере них можно добавит свой. Только подтягивается вроде после перелогина в систему

Навроцкий Максим,

Спасибо

Показать все комментарии
Цвет поля
прорисовка
7.11
sales

Есть код типа:

var Offset = Ext.get(OffsetId);

var BackgroundColor = "#FFFFFF";

if (OffsetValue > 10) { BackgroundColor = "orangered"; }

if (OffsetValue >= -10 && OffsetValue <= 10) { BackgroundColor = "Gold"; }

if (OffsetValue < -10) { BackgroundColor = "LimeGreen"; }

Offset.setStyle("background-color", BackgroundColor);

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

Как подписаться на событие прорисовки, или как сделать цвет постоянным? Может можно задать класс и повесить его в атрибут? а его менять уже? Как это можно реализовать?

Нравится

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

Добрый день

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

Есть событие afterrender и afterrerender. Первое срабатывает при первом рендера, а второе при "повторных" (смена активной вкладки на странице)

"operation": "merge",
"name": "ClosureCode",
"values": {
	"afterrender": {"bindTo": "renderComponent"},
	"afterrerender": {"bindTo": "renderComponent"}
}

А в методе renderComponent уже сделать то, что вам нужно

Артем Гура, Работает! Благодарю!

 

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

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

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

Возможно ли изменить при входе пользователя стартовую страницу на объект ИТОГИ?

То есть при входе в систему пользователь автоматически попадает в ИТОГИ.

Или же на главной странице расположить некоторые виджеты?

 

Заранее спасибо

 

Нравится

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

Здравствуйте, Екатерина

Вы можете регулировать данный параметр на странице записи пользователя в поле "Домашняя страница" более подробно о этом описано с татье Академии Террасофт по ссылке https://academy.terrasoft.ru/documents/sales-enterprise/7-11/stranica-p…

Denys Diachenko, спасибо за информацию.

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

Смолина Екатерина Михайловна,

Вы можете в поле "Дмашняя страница" указать раздел Итоги и впосле перелогина пользователя в приложение у него будет открываться соответствующий раздел

Denys Diachenko, спасибо - это из контекста было понятно сразу.



Но вопрос можно ли на главную страницу вывести конкретный график или отчёт? Не менять на другой раздел стартовую страницу. 

 

Екатерина, пользовательскими средствами нельзя отобразить график на главной странице

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

Есть БП, внутри которого в Сценарии на C# вычисляется большая таблица данных. Её нужно один-в-один положить в БД. Все поля известны.

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

Нравится

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

Добрый день

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

  1. Можно попробовать передать по одной записи, но тогда будут потери времени на уровне сетевых устройств + постоянное создание транзакций 
  2. Можно одним запросом реализовав хранимую процедуру

Лучше всего использовать хранимую процедуру, которая может иметь также 2 варианта:

  1. Передаются данные параметром (все записи вместе)
  2. Хранимая процедура берет данные из файла (который уже положен на диск, если есть такая возможность)

Оптимальный вариант №1. Но какой параметр. Варианта опять 2:

  1. Зарегистрировать свой тип на уровне БД 
  2. Передать все в виде xml

Оба варианта не понятны будут для приложения bpmonline, но, тип xml хорошо преобразовуется в nvarchar(max) и обратно.

Поэтому финальный вариант я вижу такой:

  1. На сервере в С# коде готовим XML с данными
  2. На уровне БД пишем хранимую процедуру с входящим параметром nvarchar(max)
  3. Внутри процедуры преобразовуем в xml и начинаем работать с xml на уровне SQL (https://docs.microsoft.com/ru-ru/sql/t-sql/xml/nodes-method-xml-data-type

 

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

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

 

Я создал деталь с редактируемым реестром и страницу для нее.

 

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

https://academy.terrasoft.ru/jscoresdk/source/clearicon.html

По ссылке нашел некоторые методы, но не знаю как их использовать.

Нравится

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

Вооружаемся напильником и в схеме детали прописываем что-то вроде

getDefaultCellControlsConfig: function(columnName, params) {
	var config = {
		itemType: Terrasoft.ViewItemType.MODEL_ITEM,
		name: columnName,
		labelConfig: {visible: false}
	};
	//columnName - название колонки из объекта
	if (columnName === 'ContainerType') {
		config.hasClearIcon=false;
	}
	return this.Ext.apply(config, params);
},

 

 Добрый день.

Если вы хотите поставить свой обработчик, то в таком случае нужно заместить модуль ConfigurationGrid, в нем переопределить метод renderRowControls. В этом методе происходит генерация моделей полей. Вам нужно в модели нужного поля подписаться на событие “cleariconclick “. Например viewModel.on(“cleariconclick “, myHandler).

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