Добрый день, Коллеги! Поделитесь пжлст какими  методами получаете отчет с выгрузкой в эксель такого плана:

Продукт -  Постащик -  Счет - и т.д.,

т.е, данные с детали Продукты в счете .

При этом их нужно отфильтровать за период и по Состоянию оплаты счета.

Новый продут excel reports бы решил данную задачку, да не умеет он пока фильтровать данные, если объектом отчета является деталь.

 

Спасибо!!

Нравится

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

Мы создавали сначала раздел, вынесли его в отдельное рабочее место. Потом добавили его в виде детали в счет и всё что туда добавлялось - падало в наш раздел, где мы уже всё фильтровали и только после этого делали выгрузку.

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

Alex Zaslavsky,

Спасибо большое! Думаю подойдет решение! В  карточку в разделе нужно все поля с детали добавить или как связь именно с деталью сделать? 

Елена К,

У нас изначально не было раздела "Счет" (bpm'online sales team), и мы создали этот раздел, потом под него создали раздел "продукт в счете" и, собственно, на основе этого раздела уже прикрепили деталь к разделу Счет. 

Я так понимаю, что у Вас уже рабочая система? Тогда я не знаю как Вам на основе стандартного объекта "продукт в счете" создать раздел, поэтому и дописал, что, возможно, Вам помогут знатоки. Я в этом не силён.

Alex Zaslavsky,

В любом случае большое спасибо!)

 

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

Доброго дня.

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

Сейчас выглядит так: после заполнения полей по кнопке запускается процесс. Если цепочка прошла ок, то выводится автогенерируемая страница "Успешно", далее по цепочке если не открывать страницу редактирования, открывается карточка с незаполненными полями. Поэтому помещаем элемен "открыть станицу редактирования". К сожалению, она генерирует активность, которую надо сохранить. 

То есть мешает это лишнее "Сохранить".

Или есть способ генерировать некий messagebox  не уходя с карточки или способ открыть существующую карточку без создания активности?

Нравится

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

Здравствуйте!

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

Алгоритм такого решения уже рассматривался здесь.

Логвин Андрей Витальевич,

Доброго дня. К сожалению, решение не об этом.

Дело в том, что элемент "открыть страницу редактирования" генерирует таск и выводит на карточке кнопки "Save", "Perform Later", "Cancell". 

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

Даже для кейса возврата в инвойс это выглядит странным: пользователь создал инвойс, сохранил, а БП выводит его на страницу с лишними кнопками.

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

 

ZAN,

В базовой логике пользовательскими средствами поменять кнопки на Октрыть страницу редактирования не удастся (чтобы убрать кнопку Сохранить). И такой подход не совсем корректый, так как представим, что Вы открыли страницу без кнопки, в итоге элемент не сможет завершиться, так как переход дальше по процессу выполняется именно по нажатию на кнопку, и процесс зависнет в состоянии Выполняется.

Я бы решал так:

1. Запускать процесс из необходимой карточки (условно, Счет), например, установив запуск через запуск по записи.  После этого выполнить все необходимые действия по процессу, отправить сигнал на обновление значений всех полей карточки Счет, как описано в предыдущем комментарии и в посте (и добавьте в using процесса Terrasoft.Configuration). Таким образом, Вы сможете обойтись без лишнего открытия страницы редактирования, и поля будут заполнены.

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

Похожий кейс тут: https://community.terrasoft.ru/questions/zaversenie-processa

Будем колхозить...

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

Добрый день!

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

Было бы замечательно, если бы можно было в разделе "Звонки" подписаться на событие от бизнес-процесса (например), который бы следил за окончанием звонков, и своевременно оповещал бы об этом всех подписавшихся клиентов. Есть ли такая возможность?

Нравится

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

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

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

При реализации добавьте в using процесса Terrasoft.Configuration .

Для обновления наполнения реестра можете воспользоваться this.reloadGridData()

Логвин Андрей Витальевич,

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

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

Может есть уже готовая переменная?

Или все таки придется писать код на шарпе и его результат запрашивать на фронтенде...

Нравится

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

Добрый день.

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

 

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

Создал редактируемый реестр согласно документации. 

"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}

Мне нужно сменить иконку корзины на крестик. Не важно как. Готов, даже загрузить свою.

Но не получается ее правильно подключить. Как это сделать правильно?

Нравится

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

Добрый день.

В детали нужно добавить "activeRowActions", в котором переопределить иконку. Реализацию можно посмотреть в ProductDetailV2UIv2.

                        

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

Добрый день!

Помогите справиться с такой задачей:

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

"QualifyStatus":     

            { lookupListConfig:         

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

            }

Но они не доступны в коде страницы работы через this.get("QualifyStatus").

Если же добавить на страницу Lookup с QualifyStatus и работать со справочником через него то данные поля становятся доступны

Нравится

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

Владимир, здравствуйте!

"выведен на страницу LeadPageV2 через ActionsDashboard,"

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

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

Я описал то, как actions dashboard реализован в стандартном функционале лидов 

Просто, необходимо реализовать некоторые бизнес правила в зависимости от параметров стадии Лида  а не привязываться к id стадии.

И с этим как раз возникают проблемы, описанные в вопросе

Владимир, попробуйте реализовать данную проверку при сохранении карточки, в методе save(). С помощью ESQ проверяйте нужные данные у стадии лида, а потом, в зависимости от полученого ответа, Вы сможете выполнить сохранение через базовый метод, или Ваш функционал (сообщение о нарушении валидации и.т.д).

Мотков Илья,

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

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

Здравствуйте. Спасибо за помощь в настройке конфигов (https://community.terrasoft.ru/questions/nastroika-globalnogo-poiska). Теперь столкнулся со следующей проблемой: 

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

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

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

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

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

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

Нравится

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

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

Данная ошибка, скорее всего, возникает из-за того, что Вы не совсем правильно формируете POST запрос.

Данный POST запрос должен идти не к ElasticSearch? а к Global Search Service.

Для исправления перестройте POST запрос и попробуйте выполнить его повторно.

Denys Diachenko,

заменил на адрес 

Global Search Service. В итоге получил такое

До этого при запуске Global Search Service из IIS наблюдалось такое

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

Максим.Паламарчук,

В POST запросе необходимо указывать адрес сервиса который указан на привязках в IIS, не путь к файлам сервиса.

Denys Diachenko,

так я и указал, скопировав из адресной строки браузера "http://localhost/GlobalSearch/0" + /addsite

Максим.Паламарчук,

Судя по ссылке Вы развернули 

Global Search Service как приложение в Вашем сайте bpmonline - это неправильно.

Вам необходимо Global Search Service развернуть как отдельный сайт в IIS.

Также судя по второму скриншоту у Вас некорректно прописан путь к БД Global Search - необходимо прописать верный путь и повторить POST запрос с обновленными атрибутами.

Denys Diachenko,

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

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

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

Shevchenko Andrey,

Добрый день! У меня ошибка "unable to open database file" призапуске приложения глобального поиска из IIS.

В файле web.config указаны такие настройки:

<OnSiteClientSettings>

    <add key="ElasticSearchUrl" value="http://localhost:9200/"/>

    <add key="ConfigDirectory" value="C:\BPMonline_GlobalSearchServices_1.0.0.136_711\GSSConfigs"/>

  </OnSiteClientSettings>

 

 

<appSettings>

    <!--<add key="DbDialectProvider" value="ServiceStack.OrmLite.SqlServerDialect, ServiceStack.OrmLite.SqlServer, Version=4.0.56.0, Culture=neutral, PublicKeyToken=null"/>-->

    <!--Comment DbDialectProvider above and uncomment DbDialectProvider below for on site clients. Vice versa for cloud clients.-->

    <add key="DbDialectProvider" value="ServiceStack.OrmLite.SqliteDialect, ServiceStack.OrmLite.Sqlite.Windows, Version=4.0.56.0, Culture=neutral, PublicKeyToken=null"/>

    <add key="DBConnectionConfigPattern" value="Server={0};Database={1};Uid=Supervisor;Pwd=Supervisor;charset=utf8;Allow User Variables=True" />

    <add key="servicestack:license" value="3802-e1JlZjozODAyLE5hbWU6VGVycmFzb2Z0LFR5cGU6SW5kaWUsSGFzaDpwd0VYdGh0eFByRi90OVpnMmZrZGMxQkNrV0QrSnFZWlRBS3kxSEVZb0dCejRSMnZNVGtFdHNtcVpHd3BGc094bWtsdW1qYTNWV3JTZkJsdTdtU3dMNWZNVDdUQW1pTkIrR2lxN2F4MldiNGs2S0t5Mkp1eG1vbVpHSVNzYWljelNSOHdVTjE1QXhsQ2ZpdHVJNWZiQWlmQUtBeUJ2ajc0UjhCYW5GOVdrRWs9LEV4cGlyeToyMDE3LTA1LTE0fQ==" />

    <add key="AuthApiKeyCacheExpiration" value="300" />

    <add key="MailingAccountCacheExpiration" value="300" />

    <add key="log4net.Config" value="log4net.config" />

    <add key="log4net.Config.Watch" value="True" />

    <add key="ApiKey" value="" />

    <add key="elasticLogin" value="#elasticLogin#" />

    <add key="elasticPassword" value="#elasticPassword#" />

    <add key="RequestTimeOut" value="600000" />

  </appSettings>

 

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

Обращаю Ваше внимание на строку конфига:

<add key="DBConnectionConfigPattern" value="Server={0};Database={1};Uid=Supervisor;Pwd=Supervisor;charset=utf8;Allow User Variables=True" />

Как я вижу, Вы не изменили ни сервер подключения ни имя базы данных, потому у Вас и возникает ошибка подключения к несуществующему северу и БД.

Shevchenko Andrey,

Здесь нужны сервер и БД, которые используются в моем приложении bpm'online?

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

В инструкции указано:

DBConnectionConfigPattern — шаблон строки подключения к БД клиента. Необходимо указать логин и пароль пользователя:

Ринис, так же как Вы вводите для входа на сервер. С указанием домена и логина.

Shevchenko Andrey,

я указываю и так

<add key="DBConnectionConfigPattern" value="Server=имя моего sql-сервера;Database=имя моей БД;Uid=логин;Pwd=пароль;charset=utf8;Allow User Variables=True" />

и так 

<add key="DBConnectionConfigPattern" value="Server={имя моего sql-сервера};Database={имя моей БД};Uid=логин;Pwd=пароль;charset=utf8;Allow User Variables=True" />

и так 

<add key="DBConnectionConfigPattern" value="Server={0};Database={1};Uid=логин;Pwd=пароль;charset=utf8;Allow User Variables=True" />

 

ошибка "unable to open database file" остается

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

Данный параметры необходимо указать как в первом варианте.

Так же при добавлении сайта через пост запрос, выбирается путь к БД который указан в connectionString который Вы настраивали ранее. 

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

Shevchenko Andrey,

Настройка connectionsting такая

<connectionStrings>

    <add name="ConnectionDb" connectionString="Data Source=имя sql сервера;Initial Catalog=имя моей БД;User Id=логин;Password=пароль;"/>

    <add name="RabbitMQ" connectionString="amqp://guest:guest@localhost:5672/" />

</connectionStrings>

 

пост-запрос

$params = @{"ApiKey"= ""; "SiteName"="имя моей БД"}

Invoke-WebRequest -Uri "http://localhost:81/GlobalSearch/0/addsite" -Method POST -Body $params

ошибка та же

Shevchenko Andrey,

добрый день. В connectionString указал путь к файлу SQLite и он сейчас выглядит таким образом:

<connectionStrings>    

    <add name="ConnectionDb" connectionString="C:\BPMonline_GlobalSearchServices_1.0.0.136_711\DB\GlobalSearch.db"/>

    <add name="RabbitMQ" connectionString="amqp://guest:guest@localhost:5672/" />

</connectionStrings>

 

при запуске приложения появилось такое:

При этом по указаному пути появился файл GlobalSearch.db

Далее пытаюсь выполнить такой пост-запрос:

$params = @{"ApiKey"= ""; "SiteName"="C:\BPMonline_GlobalSearchServices_1.0.0.136_711\DB\GlobalSearch.db"}

Invoke-WebRequest -Uri "http://localhost:81/GlobalSearch/0/addsite" -Method POST -Body $params 

 

получаю ошибку

В чем может быть причина?

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

Данная проблема может возникает из-за несовпадения ApiKey. Рекомендуем Вам проверить корректность ApiKey, а так же попробовать выполнить запрос с любым не пустым ApiKey.

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

Коллеги, здравствуйте.

Возник вопрос:

Как при помощи БП или есть ли какие-то другие возможности реализации, после перевода объекта лид на стадию дисквалифицирован (дис)квалификации ЛИДа, сделать карточку объекта ЛИДА нередактируемой.

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

Нравится

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

В такой постановке вопроса, используйте элемент для изменения прав доступа. Т.е. заберите право на изменение у необходимых сотрудников

Роман, здравствуйте!

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

Логвин Андрей Витальевич,

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

Коллеги, спасибо! Но тогда таким образом я заберу права у пользователей и в дальнейшем у них не будет возможности работать с обьектом ЛИДов. 



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

Роман, по этому поводу есть статья на SDK - https://academy.terrasoft.ru/documents/technic-sdk/7-11/kak-polnostyu-z…

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

Добрый день!



Кто-нибудь настраивал получение данных из Google form (по аналогии лидов из Landing page)?



В целом, JS в среде Google Script выполняется (GS это, по сути, несколько доработанный JS). Но так как код выполняется не в браузере, в на сервере Google, то о таких объектах как "document", "window" можно забыть, ибо их просто нет. 

А так как стандартный скрипт BPMOnline расчитан на исполнение именно в браузере, он использует массу таких вот несовместимых с Google Script моментов.



То есть тут либо тот же функционал реализовывать на Google Script (но тогда нужна хотя бы спецификация того, что ожидает BPMOnline, ибо реверс-инженерить хоть и можно, но очень уж долго), либо какой-то корректный workaround





Или есть другие варианты?

Нравится

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

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

GoogleForms пишет ответы пользователей в GoogleSheets, а у GoogleSheets есть api по которому можно считать данные.

https://developers.google.com/sheets/api/guides/values

Показать все комментарии
день добрый!
в процессе работы возник вопрос связан с содержимым таблицы "dayofweek"

В нескольких базах, которие я проверил  неделя начинается с воскресенья (код дня =1).

Документация гласит, что неделя начинается с понедельника и в понедельника код дня должен бить 1.

https://academy.terrasoft.ua/documents/technic-sdk/7-6-0/dayofweek-metod

Вопрос: можно ли самому изменить номера дней в таблице? может ли это изменение (присвоения понедельнику кода 1, вт=2 ... воск=7 )повлиять на базовый функционал?

 

скрин с моей базы

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

 

 

Нравится

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

Здравствуйте, Юрий

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

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