Вопрос

Коллеги, всем привет! Подскажите, пожалуйста, может кто сталкивался с такой задачей/проблемой.

Нужно изменить OpportunityConfigurationConstants, точнее дополнить. Но данный модуль находится не в пользовательском пакете. Нужно сделать замещающий, а заменить не получается, потому что  в новых версиях данное действие запретили. Ошибка выскакивает "Замещение модулей запрещено". Что делать? Создавать новый модуль и копировать всё-всё из родительского, но при этом не замещать родительский. Или добавлять туда только то, что я хочу дописать. Или вообще что-то другое?

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

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

Можно создать свой модуль и  внести нужные правки (новые константы) и использовать там где вам нужно.

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

О компании

Book Box — сервис чтения для компаний с ежедневной доставкой книг в офисы. Компания была основана в 2015 году как сервис личного подбора литературы. После прохождения швейцарского бизнес-акселератора MassChallenge компания изменила бизнес-модель, и с 2017 года Book Box начал работу как сервис чтения по подписке в сегменте B2B. Пользователи на сайте оформляют заказ на книгу и уже на следующий день могут забрать ее на специальном стеллаже в офисе. Для того, чтобы вернуть прочитанную книгу, достаточно положить ее на стеллаж обратно.

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

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

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

  • Адаптировать раздел [Продукты] для ведение всех книг и экземпляров. Настроить автоматическое присвоение идентификаторов для новых книг и экземпляров.
  • Автоматизировать процесс создания доставок на основании заказов. Настроить синхронизацию с сайтом.
  • Интегрировать печать штрих-кодов на стикеры по собранным заказам с минимальным участием оператора.
  • Построить процесс учета активности пользователей в рамках календарного месяца.
  • Разработать логику, которая позволит индивидуально настроить по каждому контрагенту условия дней доставки, количество книг на руках, активность читателей.
  • Автоматизировать просчет биллинга клиентов по уникальным договоренностям.
  • Настроить аналитику, которая отображала бы популярность книг, время чтения, предпочтения читателей по рейтингу книги, среднее время чтения книги.

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

Для ведения книг и экземпляров в bpm`online используется раздел [Продукты], переименованный в [Книги]. В записях книг были добавлены новые поля, в которых фиксируется вся необходимая информация (рис.1).

(рис.1)

 

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

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

Для хранения информации об авторах и их книгах создан новый раздел [Авторы].  

После подтверждения заказа клиентом информация о выбранных книгах попадает в раздел [Заказы] в bpmonline. Это событие запускает бизнес-процесс подготовки заказанных книг к отправке. Задачами процесса являются: присвоение уникального идентификатора заказа, который считывается сканером штрихкода и печать стикера с информацией о читателе (рис. 2).

(рис. 2)

Информация о заказах и статусе доставки хранится с специально разработанном разделе [Доставка]. С помощью этого раздела осуществляется автоматическая отправка смс читателям о том, что их книга прибыла в компанию. Эта функция осуществляется с помощью коннектора Turbo SMS connector for bpm’online (рис. 3)

(рис. 3)

 

Кастомизированы разделы [Контакты] и [Контрагенты]. В карточке контакта на первый план выведена деталь с информацией по заказам читателя. Новый бизнес-процесс вычисляет активность читателя на ежемесячной основе с учетом индивидуальных настроек в карточке компании (рис. 4). Это позволяет увидеть количество активных читателей в компании (рис. 5).

(рис. 4)

(рис. 5)

Результат

С помощью bpm`online автоматизированы процессы обработки заказов и доставки книг. Это позволило значительно сократить рутинные процессы по формированию заказов, печати стикеров с штрих-кодом, и логином читателя. После начала работы в системе периодичность поставок увеличилась с 2 раз в неделю до ежедневных заказов. Хранение информации о полном цикле взаимодействия с клиентом позволяет организовать все эти данные в эффективную систему аналитики. Аналитический срез активных читателей непосредственно в карточке контрагента, позволяет максимально эффективно контролировать динамику взаимоотношений с клиентом.

Поделиться

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

Здравствуйте. Возможно ли настраивать количество колонок в реестре раздела? Так как сейчас система не дает возможности установить больше 24 колонок.

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

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

Добрый день.

Для установки большего количества колонок используйте плиточное представление.

Более подробно читайте о реестре раздела и часто задаваемых вопросах по реестру на Академии.

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

Для отладки необходимо получить SQL текст ESQ запроса на front-end

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

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

Насколько мне известно, такой возможности нет.

В случае с фронтендом можно смотреть запрос через SQL профайлер.

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

Добрый день

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

Как получить график количество уникальных пользователей за текущий квартал в группировке по датам. На SQL легко и просто.

SELECT
CAST(DATEADD(HH,3,EPMRequestDate) as date) as [Дата], --дата запроса с учетом часового пояса
COUNT(DISTINCT EPMAuthDataEnergyId) as [Уникальные пользователи],
COUNT(Id) as [Посещения]
FROM EPMAuthDataStatisticEntity
WHERE
EPMAuthDataEnergyId!='9bb71e40-09b4-4352-ba5a-0f55b486f8f0' --Исключение ИД
and EPMTypeRequest = 1 --тип запроса
and EPMRequestDate between DATEADD(M,-3, GETDATE()) and GETDATE() --Текущий квартал
GROUP BY CAST(DATEADD(HH,3,EPMRequestDate) as date)
ORDER BY CAST(DATEADD(HH,3,EPMRequestDate) as date)

Начинаю делать в BPM и получаю только количество посещений в день

Насколько понимаю стандартными средствами никак?

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

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

Нужно создать view в БД, на основе view создать объект. И уже делать график основываясь на данных виртуального объекта (view)

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

https://community.terrasoft.ru/questions/sozdanie-obekta-na-osnove-db-view

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

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

В базе данных bpmonline я создал представление dbo.UsrGetStats c нужными мне атрибутами (Contact, MaxTime, MinTime, AvgTime).

Такой вопрос, как создать объект на основе этого DB VIEW (UsrGetStats)? 

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

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

Добрый день.

Создаете так же, как и простую схему объекта. Подробнее об этом почитайте на академии.

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

Также при создании схемы не забудьте указать признак 'Представление в базе данных':

Алла Савельева,

Здравствуйте, спасибо за ответ, помогло!

Примечание: во View не было Id из-за этого выходила ошибка.

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

Проблема заключается в том что в LDAP имя и фамилия латиницей указаны отдельно а в displayName указаны латинице. Пользователи хотят видеть кирилицу.

Можно ли в поле "ФИО" совместить через меню настройки LDAP синхронизации два атрибута или там только один может быть?

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

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

Нет, один атрибут синхронизируется с одним полем.

Если всё же планируете разобраться и что-то переделать в механизме синхронизации с LDAP, см. эту и эту темы.

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

Спасибо. Так и реализовано сейчас, через кастомизацию, и как подметил 

Мотков Илья при каждом обновлении приходится проводить адаптацию кода так как он меняется в этом пакете при каждом обновлении

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

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

Имеем классический трехуровневый ландшафт: Разработка (DEV), Тестирование (TST) и промышленный (PRD). В DEV включен режим разработки в файловой среде. Есть потребность в наполнении DEV данными из PRD. Именно только данные. Пробовал делать бэкап базы PRD и разворачивать его на DEV. Из минусов решения - это то, что все пакеты разработки становятся установленными из вне, теряют связь с хранилищем, заново приходится отключать все настройки синхронизации почты и перенастраивать интеграции на другие базы.

Есть вариант написать SQL скрипт в котором определить перечень некопируемых таблиц и запускать его. Кстати, подобным образом происходит копирование систем у SAP (если уместно данное сравнение).

А как это делаете вы?

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

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

Здравствуйте! Что касается пакетов,  можете разблокировать их выполнив sql скрипт

update SysPackage
set IsChanged = 1, InstallType = 0, IsLocked = 1, Maintainer = 'Customer'
where Name in ('PkgName')
and SysWorkspaceId in (select Id from SysWorkspace where Name = 'Default')

Что касается привязки пакета к хранилищу, то по этому поводу хорошо описано в данной статье- https://academy.terrasoft.ru/documents/technic-sdk/7-14/privyazka-k-svn-ne-svyazannogo-s-hranilishchem-paketa

Нигрескул Алексей,

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

Чтобы на тесте не включались интеграции с прода, можно написать один большой SQL-запрос, который чистит нужные значения системных настроек, справочников и прочего. А затем его запускать после разворачивания теста из бекапа прода вручную или, например, по действию в TeamCity.

Все зависит как часто вам нужно с прода переносить данніе в среду разработки, и нужно ли переносить абсолютно все или например данные нескольких разделов (те отдельные таблиы) если второе то как вариант можно использовать зеркалирование (Database Mirroring) или другие аналогичные мезанизмы синхронизации разных БД

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

Добрый день! 

На системе установлено приложение Excel reports builder for bpm’online, выпущенное terrasoft (отчетность, выгружаемая в эксель). Оно использует библиотеку EPPlus.dll И мы в нашей разработке использовали  эту же библиотеку, но версии этой dll в этих пакетах разные (у нас более новая).

Сейчас при установке решения на систему с Excel reports builder for bpm’online, возникает ошибка из-за разницы в версиях библиотек.

Как можно урегулировать этот конфликт?

Благодарю!

 

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

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

 Решение опубликовано не Terrasoft, а bpmonline labs. Вам нужно уточнить новую версию библиотеки и написать на email поддержки решения — bpmonlinelabs@bpmonline.com

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

Александр, добрый день! Спасибо за отклик. Там смогут предоставить пакеты с новой версией библиотеки?

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

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

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

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

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

Доброе утро.

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

Алла Савельева,

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

Александр Тыра,

Для схемы таблицы 'Средство связи контакта' включаете администрирование по записям.

Если есть потребность корректируете права доступа на записи с помощью настройки специального бизнес-процесса. Например, если Вам нужно скрывать только телефоны сотрудников, а e-mail показывать.

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

Алла Савельева,

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

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

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

Григорий Чех, 

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

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

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

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

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

Александр Тыра,

Пример фильтрации в разделе

getFilters: function () {
    var sectionFilters = this.callParent(arguments);
    this.setCommunicationFilter(sectionFilters);
    return sectionFilters;
},
setCommunicationFilter: function (filterCollection) {
    var testAttr = this.get("TestAttr");
    var isActive = this.get("IsActiveTestAttr");
    if (!isActive) {
         filterCollection.removeByKey("FilterContactCommunication");
    } else {
    filterCollection.add("FilterContactCommunication", 
         this.Terrasoft.createColumnFilterWithParameter(
                this.Terrasoft.ComparisonType.CONTAIN, "[ContactCommunication:Contact:Id].Number", testAttr));
         }
},

 

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