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

Возможно кто-то сталкивался с кейсом интеграции bpm и power bi? Нужно получить доступ к данным bpm для сравнительного анализа в power bi.

Нравится

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

Сталкивались.

Используем oData, в мануале по разработке есть указания по использованию протокола. Необходимо подключаться по адресу

http://[адрес сайта]/0/ServiceModel/EntityDataService.svc

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

Сталкивался:

Настройка аналитики выполнена не только базовыми возможностями раздела [Итоги], а и с помощью интеграции bpm’online с MS Power BI. Настройка интеграции достаточна проста, а возможности для составления аналитики значительные.

Говорят, что в настройке Сервис Групп справились сами и там всё было очень просто.

Как именно делать, зависит от механизма интеграции на стороне Power BI: это может быть прямой доступ в базу MS SQL (если система развёрнута on site) или доступ к данным по OData.

Сталкивались.

Используем oData, в мануале по разработке есть указания по использованию протокола. Необходимо подключаться по адресу

http://[адрес сайта]/0/ServiceModel/EntityDataService.svc

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

Плотников Денис пишет:

Сталкивались.

Используем oData, в мануале по разработке есть указания по использованию протокола. Необходимо подключаться по адресу

http://[адрес сайта]/0/ServiceModel/EntityDataService.svc

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

Огромное спасибо, Денис и Александр! 

Добрый день. 

 

Заранее прошу прощения за ап старой темы, но нельзя ли поподробнее описать или дать ссылку на описание интеграции по oData? 

В настоящий момент проблема в том, что при обновлении запросов через oData, PI сильно загружает систему (CRM развернута на сайте).

Возможно кто то сталкивался с подобной проблемой и имеет решение?

Алексей Заворотный пишет:

В настоящий момент проблема в том, что при обновлении запросов через oData, PI сильно загружает систему (CRM развернута на сайте).

Нужно смотреть, на что конкретно нагрузка, какие запросы идут в базу. Если у вас развёрнуто локально,  можно увидеть в SQL-профайлере.

 

Например, многие интеграции (в том числе Excel и Power BI,) не умеют правильно авторизироваться и затем хранить сессии, логинясь заново для каждого обращения к OData, в результате происходит много запросов на вставку в SysUserSession, которые могут проходить тяжело, если в таблице и так много записей или вызвать deadlock-и.

 

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

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

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

 При подключении из Power BI по oData3 согласно инструкции

подключение происходит по ссылке типа

 http://[адрес сайта]/0/ServiceModel/EntityDataService.svc

 

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

Это нужно настраивать на стороне сторонней системы. 

Не встречали ли Вы кейс по настройке подключения Power BI к Creatio?

См. верхние 2 комментария.

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

Добрый день, 

В продолжении этой темы хотела спросить как настроить такой вид подключения о котором вы писали "это может быть прямой доступ в базу MS SQL (если система развёрнута on site)"  где можно про это почитать? Как понять что это можно у себя настроить?

Диана, речь о том, что когда сайт установлен на локальном сервере, то есть доступ к базе (чаще всего MS SQL), где данные каждой схемы (Contact, Account и др.) находятся в таблицах с такими же названиями, их можно считывать или добавлять и изменять. Нужно только учесть, что при изменении через базу не отработает логика на объекте и в БП, если она есть, её аналоги нужно разрабатывать самостоятельно. Но при использовании данных в базе только для чтения это не играет роли.

 

Можно ли использовать это конкретно при работе из Power BI, лучше уточнить у работающих с этой системой. Поскольку она, как и БД, разработана Microsoft — скорее всего, можно. См., например, туттут и тут.

Hi,  We would like to use PowerBI to develop reports, based on data stored in Creatio. Do have instructions for a CLOUD version of Creatio? This thread seems to be focus on on-premise.  Thank you.

Hello Frédéric,

Here are the examples of integration. You can use oData protocol to connect from Power BI to Creatio Cloud.

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

Добрый день!

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

Прикрепленные файлы

Нравится

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

Установите значение class для вашей детали в значение class="ts-controlgroup detail grid-detail ts-controlgroup-collapsed", можно сделать через DOM

Установите значение class для вашей детали в значение class="ts-controlgroup detail grid-detail ts-controlgroup-collapsed", можно сделать через DOM

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

Добрый день!



Каким образом можно выгрузить все документы из CRM (Cloud) прикрепленные во вложениях, детали "Файлы и ссылки"?

Нравится

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

Здравствуйте! Вы можете воспользоваться готовым решением  External File Storage, чтобы выгрузить файлы на Google Drive или One Drive. Подробнее ознакомиться с функционалом вы можете на нашем сайте https://samarasoft.com/docs/external-file-storage/sending-files-to-ftp/

Как мне кажется самый простой способ - запросить бд, развернуть у себя, на С# написать скрипт, который присоединяется к бд, ходит по ****File схемам и сохраняет файлы на диск

Либо поднять у себя FTP сервер и выгрузить с облака на него аналогичным скриптом. Так можно исключить запрос бэкапа.

Написать свою страничку которая сделает запрос к нужной детали (Например файлы и примечания контрагента) получит список id записей с типом файл, пройтись по полученной коллекции и скачать (выгрузить со странички клиенту файлы) в автоматическом режиме все файлы используя FileApiService. Вроде ничего сложного и не нужен доступ к БД. 

Здравствуйте! Вы можете воспользоваться готовым решением  External File Storage, чтобы выгрузить файлы на Google Drive или One Drive. Подробнее ознакомиться с функционалом вы можете на нашем сайте https://samarasoft.com/docs/external-file-storage/sending-files-to-ftp/

Да, забыл добавить: также можно настроить интеграцию с FTP

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

Добрый день!

Каким образом можно построить конверсионную воронку продаж с указанием количества продаж прошедших через каждую из стадий?



Пример:

- У нас есть 100 созданных продаж на стадии Квалификация. В системе существует 5 стандартных стадий: Квалификация, Презентация, Коммерческое предложение, Контрактация, Завершена с победой.

- Менеджер начинает работу по созданным продажам. Соответственно через первую стадию пройдут 100 продаж;

- На стадию "Презентация" перешли 90 продаж (10 - завершились с поражением) и т.д. Т.е. с каждой новой стадией идет отсев продаж. По итогу менеджер завершил успешно 40 продаж. При этом эти 40 продаж прошли через все стадии.

- Итоговая воронка должна выглядеть как - Квалификация - 100, Презентация - 90, Коммерческое предложение - 70, Контрактация - 40, Завершена с победой - 40.

Нравится

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

См документацию по воронке продаж тут

См документацию по воронке продаж тут

Григорий Чех пишет:

См документацию по воронке продаж тут

Спасибо за совет. Открыл, прочитал, но нужных выводов не сделал. В воронке не отображается то что хочется видеть. Нужен более подробный гайд по построению.

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

Сквозная воронка - это не то что хочется видеть.

1)В моем первоначальном вопросе, речь идет только о продаже.

2)Нужны не процентные, а числовые показатели из которых будет понятна конверсия.

3)Т.к. это воронка, то с каждой последующей стадией идет "сужение". На представленной воронке сужение сугубо графическое. Если посмотреть на числа, то станет ясно, что проценты внезапно увеличиваются, вместо того чтобы последовательно уменьшаться.

Для чисел нужно переключиться на первую вкладку.

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

В такой воронке отображает не конверсию, а количество продаж на каждой из стадий. Т.е. если у меня есть 100 продаж, они будут распределены по стадиям: Квалификация - 30, Презентация - 30, Коммерческое предложение - 15, Контрактация -20, Завершена с победой - 5.

Тогда вторую вкладку, с процентами. 

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

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

О, да! Равномерная воронка - это обман зрения. Графики нужны для того, чтобы не вчитываться в цифры. 



Хотелось, чтобы разработчики сделали более наглядную воронку 

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

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

Владимир, если в гугл-картинках вбить «воронка продаж», то чуть менее, чем все

А если вбить "Sales pipeline", то будет уже поинтереснее.

Например, в одной крупной системе виден источник, очень напоминающий воронку в TS 3.x (которая наглядно отражала план и факт в виде заполнения каждой стадии)



В другой крупной системе высота стадии зависит от числового показателя (не так наглядно, но всё же) 



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

Да, в 3.Х была неказистее, но нагляднее:

1

2

В 7.X высота элемента воронки отображает количество продаж на соответствующей стадии.

1_Анализ.png (1215×683)

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

Коллеги всем доброго времени суток! Столкнулся со следующей проблемой, у нас CRM интегрируется со сторонней системой в БД которой Id представлены как long.

Реализовали БП  создания заказа из звонка. На уровне объекта Order перед сохранение уходит запрос во внешнюю систему тянет последний id в БД, полученный ответ инкрементируем  на 1 и переводим в GUID получаем "00000000-0000-0000-0000-000000000001";  полученный Id подставляем PrimaryColumnValue

http://prntscr.com/m7t797

 

var origin = HttpContext.Current.Request.Headers["Origin"];
IntegrationAutobookingClient client = new IntegrationAutobookingClient(UserConnection);
if (!string.IsNullOrEmpty(origin))
{
	var lastOrerIdInPlatform = client.GetRequest("/v1/orders/last_id");
	var abOrderId = Convert.ToInt64(lastOrerIdInPlatform);
	var newOrderId = abOrderId + 1;
	var bpmOrderId = client.ChangeId(newOrderId);
	Entity.PrimaryColumnValue = bpmOrderId;
}
return true;

Далее идет обработчик после сохранения записи, уходит запрос во внешнюю систему создания Заказа.

Открытие карточки редактирования заказа осуществляется через БП - http://prntscr.com/m7t97l

При сохранении заказ создается, но карточка(эл-т процесса) остается не выполненным - http://prntscr.com/m7taim и дальше по процессу не идет

В консоли наблюдаю следующее - http://prntscr.com/m7tb5u

Подскажите как с этим бороться? Подозреваю что дело в изменении PK.

Нравится

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

Видимо, элемент открытия карточки новой записи в БП уже подразумевает какой-то сгенерированный Id, который затем во встроенном БП объекта на Inserting заменяется нужным, что и приводит к некорректной работе.

Можно попробовать переделать логику: в БП генерировать Id и сохранять новую запись, а уже потом уже открывать её на редактирование в карточке.

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

Добрый день!

Суть такова. В системе есть справочник в который занесены номера недель и соответствующие им календарные даты. (Например: Номер недели: 3; Дата: 14.01.2019 - 18.01.2019). 



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

Нравится

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

Возможность есть 

1 БП запускайте по расписанию

2 С помощью элемента формула можно получить номер текущей неделе дальше обновить или что вам нужно сделать с этой записью

По работе в формуле с датами более подробно смотри тут

Возможность есть 

1 БП запускайте по расписанию

2 С помощью элемента формула можно получить номер текущей неделе дальше обновить или что вам нужно сделать с этой записью

По работе в формуле с датами более подробно смотри тут

Накидал на C# скрипт, который выдает список с данными (неделя, начало, конец, год). осталось вызывать раз в год

var data = WeekWorker.GetYearWeekData(2019);

и данные парсить в справочник

using System;
using System.Collections.Generic;
using System.Globalization;
 
namespace TestApp
{
    public class WeekData
    {
        public int year { get; set; }
        public int week { get; set; }
        public DateTime weekStart { get; set; }
        public DateTime weekEnd { get; set; }
    }
 
    public class WeekWorker
    {
        public static List<WeekData> GetYearWeekData(int year)
        {
            var weeksdata = new List<WeekData>();
 
            int weeks = GetWeeksInYear(year);
            for (int i = 1; i <= weeks; i++)
            {
                var firstDay = FirstDateOfWeekISO8601(year, i);
                var lastDay = firstDay.AddDays(6);
 
                weeksdata.Add(new WeekData() { year = year, week = i, weekStart = firstDay, weekEnd = lastDay });
            }
 
            return weeksdata;
        }
        public static int GetWeeksInYear(int year)
        {
            DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
            DateTime date1 = new DateTime(year, 12, 31);
            Calendar cal = dfi.Calendar;
            int weeks = cal.GetWeekOfYear(date1, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
            return weeks;
        }
 
        public static DateTime FirstDateOfWeekISO8601(int year, int weekOfYear)
        {
            DateTime jan1 = new DateTime(year, 1, 1);
            int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek;
 
            // Use first Thursday in January to get first week of the year as
            // it will never be in Week 52/53
            DateTime firstThursday = jan1.AddDays(daysOffset);
            var cal = CultureInfo.CurrentCulture.Calendar;
            int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
 
            var weekNum = weekOfYear;
            // As we're adding days to a date in Week 1,
            // we need to subtract 1 in order to get the right date for week #1
            if (firstWeek == 1)
            {
                weekNum -= 1;
            }
 
            // Using the first Thursday as starting week ensures that we are starting in the right year
            // then we add number of weeks multiplied with days
            var result = firstThursday.AddDays(weekNum * 7);
 
            // Subtract 3 days from Thursday to get Monday, which is the first weekday in ISO8601
            return result.AddDays(-3);
        }
    }
 
}

 

Григорий Чех пишет:

Возможность есть 

1 БП запускайте по расписанию

2 С помощью элемента формула можно получить номер текущей неделе дальше обновить или что вам нужно сделать с этой записью

По работе в формуле с датами более подробно смотри тут

Расскажите, пожалуйста, подробнее про то как построить такой БП, а то я не понимаю какие элементы там должны присутствовать.

Все доступные в дизайнере элементы процесса описаны в руководстве.

Если Вы хотите заказать разработку такой логики полностью «под ключ», лучше будет заказать её у одной из компаний, зарегистрированных в маркете в каталоге услуг

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

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

Все доступные в дизайнере элементы процесса описаны в руководстве.

Если Вы хотите заказать разработку такой логики полностью «под ключ», лучше будет заказать её у одной из компаний, зарегистрированных в маркете в каталоге услуг

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

Поделились же, в первом и втором комментарии.

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

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

Добрый день!

Подскажите, пожалуйста, возможно ли внутри CRM создать хранилище данных (сродни сетевому диску) с общим доступом (возможность добавлять и редактировать файлы) для каждого из сотрудников?

Нравится

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

Конечно можно вам нужно переопределить механизм доступа для нужного протокола (ftp http nfs и тд) и дать права на чтение/запись, собственно ничего особо сложного нет.

Те поднять тот же ftp сервер, реализовать или подключить ftp клиента. Реализовать механизм записи получения файлов у клиентов.

Конечно можно вам нужно переопределить механизм доступа для нужного протокола (ftp http nfs и тд) и дать права на чтение/запись, собственно ничего особо сложного нет.

Те поднять тот же ftp сервер, реализовать или подключить ftp клиента. Реализовать механизм записи получения файлов у клиентов.

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

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

Возможно, подойдёт функциональность одного из этих решений. 

 Спасибо за информацию. Расширения посмотрел, но хотелось бы обойтись "малой кровью" без существенных трат. Возможно вы знаете, можно ли создать раздел в CRM, который будет связан с хранилищем, например FTP-сервер? Как это сделать? И самое главное, каким образом туда скопировать или переместить всю необходимую информацию из вложений? 

Очевидно, возможно, раз по ссылкам подобное уже сделали. Первая реализует выгрузку, третья — работу с хранилищем по FTP. Цены там указаны, одна стоит $150 в год, вторая — $43 в год на пользователя или $64 единоразово.

Доброго дня.

Из расширений маркетплейс наиболее приглянулся по функционалу пакет от SamaraSoft (https://marketplace.terrasoft.ru/app/external-file-storage-bpmonline?_g…) - у них и с файловой системой есть работа, и с ФТП и google.disk  - пока тестируем, нашел им парочку недочетов/глюков, продолжаю тестировать дальше:) из минусов - нельзя выносить свои колонки, только преднастроенные (имя, версия, картинка хранилища).

Еще небольшой минус - массовой выгрузки в "Файловую систему" нет, но это легко лечится:) и платеж тоже только разовый...

Владислав, спасибо за оценку. Благодаря вам наш продукт становится лучше!

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

Добрый день!

Внутри CRM есть большое число позиций изделий из сплавов металлов. В сплав может входить от двух до четырех металлов.  

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

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

(Например: АРбуз, АРка, АРгон. Но не: бАРжа, кАРтон, сАРай) 

Нравится

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

Вариантов много я бы посмотрел в сторону

1) Искать начинающиеся на #Арб

2) или изменить структуру хранения данных о составе металла

3) а лучше всего, создать свой фильтр в котором вы обработаете вашу строку с указанием сплава. (Например разобьете в массив со списком металлов и его отфильтруете)

В расширенных фильтрах

 

Варфоломеев Данила,

Спасибо за совет, но строка с указанием сплава имеет вид - #Наименование сплава# (#Металл1##Металл2##Металл3##Металл4#) Например: Мельхиор (CuNi)

Вариантов много я бы посмотрел в сторону

1) Искать начинающиеся на #Арб

2) или изменить структуру хранения данных о составе металла

3) а лучше всего, создать свой фильтр в котором вы обработаете вашу строку с указанием сплава. (Например разобьете в массив со списком металлов и его отфильтруете)

А что мешает искать по «(Cu»?

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

Спасибо за совет, хорошая идея!

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

Коллеги всем доброго времени суток. Подскажите, кто нибудь сталкивался с переопределением представления Единого окна?

Суть в следующем, создаем две очереди с типом Контакт, одна для верификации, другая для деактивации, соответственно фильтры разные, в Едином окне создается одна вкладка КОНТАКТЫ куда и попадают записи из этих двух очередей, а необходимо сделать что бы отображалось 2 вкладки например КОНТАКТЫ(Верификация) и КОНТАКТЫ(Деактивация).

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

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

Нравится

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

Алексей, добрый день!

Механизм очередей и Единого Окна необходим для того, чтобы операторы работали с элементами очереди порядке "сверху-вниз", обрабатывать записи в указанном порядке.

При этом Супервизору необходимо корректно настроить сортировку в очередях и приоритеты по очереди - http://prntscr.com/kx20fb

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

Так же для того, чтобы определить базовую схему в которой реализован функционал рекомендую использовать вкладку Network, в запросах SelectQuery обычно указывается из какого объекта выполняется выбора - http://prntscr.com/m7c09g

Как и в адресной строке браузера видно с какой схемой работает система на данный момент - http://prntscr.com/m7c0pt

Таким образом получаем следующее, в пакете OperatorSingleWindow реализован данный функционал. 

В схеме QueueItemSection реализовано отображение реестра. Так же в схеме QueueItemEditPage реализовано отображение страницы.

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



 

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

Приветствую всех!

Подскажите, почему вот так работает:

lookupListConfig: {
  filters: [{
    method: function(columnName){
      return this.getFilterByAccount(columnName);
    },
    argument: "Account"
  }]
}

а вот так 

lookupListConfig: {
  filters: [{
    method: this.getFilterByAccount,
    argument: "Account"
  }]
}

нет!

 

Нравится

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

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

Дело в том, что во втором случае view module (описывает поведение) еще не проинициализирован (секция methods в схеме относится к view module). 

При обращении к lookupListConfig загружается пока только window (https://developer.mozilla.org/ru/docs/Web/API/Window) в котором нет данного метода.

Если посмотрите в консоль при выполнении кода lookupListConfig, то увидите:

1. Ошибку, что метод не найден (будет написано undefined)

2. При написании в консоли "this." будет написано подсказка window.

Вильшанский Дмитрий,

понятно, спасибо.



В качестве пожелания для разработчиков, как вариант, можно было бы добавить в обработчик LookupQuickAddMixin.getLookupQueryFilters проверку не только method, но и methodName, тогда по this[methodName] можно было бы вызывать функцию фильтрации.

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