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

BPM sales 7.11.3

Возможно ли создать следующий виджет:



1. Который мог бы выводить информацию из таблиц, к примеру через esq.

2. Который бы запускался на момент входа в систему с периодическим обновлением выводимой информации.

3. Виджет не был бы прикреплен к определенной схеме и отображался повсюду.



Как такое, или что-то похожее, можно сделать? 

Приветствуется любая помощь!



 

Нравится

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

Информация о разработке своего виджета есть тут. Но это — для панели итогов. 

В Вашем случае, скорее сего, вместо виджета стоит модифицировать код боковой (LeftPanelTopMenuModule) или верхней (MainHeaderModule) панели и добавить туда вывод нужной информации. 

Или же, если значение числовое, делать ещё одну иконку правой коммуникационной панели (CommunicationPanel) и выводить на неё цифру, подобно количеству писем или звонков.

Зверев Александр, Спасибо! Могли бы вы уточнить где именно стоит делать модификацию, что бы вывести нужную мне информацию?

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

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

Есть примеры кода или мануал создание подобного?

Например, так в коммуникационную панель добавляется кнопка.

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

Спасибо за помощь. :)



P.S. Проверьте ЛС.

В версии 7.13 в верхнюю панель добавили надпись с номером версии. Эта логика реализована в схеме MainHeaderSchema, см. упоминания функции _initConfigurationVersion и атрибута ConfigurationVersion.

На init запускается функция, заполняет атрибут. А у надписей caption привязан к его значению.

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

Объект - ContractVisa,

Метод- GetNotificationInfo

Ошибка: При формировании визы по договору получаем значение contract.AccountName и contract.ContactName.

Но если для объекта Account и/или Contact изменить поле для отображения то при получении значения contract.AccountName (contract.ContactName) получаем ошибку Undefined.

Нравится

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

В объекте Contract нет отдельного поля AccountName. Это автоматически созданное поле для первичного поля отображения контрагента:

{
  "UId": "b1b39ef5-5550-41b4-9ad9-77f60c847d89",
  "Name": "Account",
  "CreatedInSchemaUId": "897be3e4-0333-467d-88e2-b7a945c0d810",
  "ModifiedInSchemaUId": "897be3e4-0333-467d-88e2-b7a945c0d810",
  "CreatedInPackageId": "1401a881-7126-4c81-86f8-4e9e355b0669",
  "DataValueTypeUId": "b295071f-7ea9-4e62-8d1a-919bf3732ff2",
  "ReferenceSchemaUId": "25d7c1ab-1de0-4501-b402-02e0e5a72d6e",
  "RequirementType": 1,
  "IsIndexed": true,
  "ColumnValueName": "AccountId",
  "DisplayColumnValueName": "AccountName"
},

Соответственно, при изменении первичного поля в настройках объекта Account поле в Contract тоже изменит название. С ContactName всё аналогично.

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

 

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

Добрый день. Подскажите, есть 163 лицензии, в менеджере лицензий отображаются 160 пользователя и 3 встроенной учетной записи. Проблема в том что отображается только 100 записей списка и нет ни где подгрузки или перехода на другую страницу.

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

Нравится

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

Prime Source,

А раздел Пользователи системы из дизайнера системы доступен? По сути одно и то же. В менеджере лицензий нет возможности исправить набор колонок и отобразить больше 100 записей. Ответ от техподдержки звучал так: "На уровне приложения можно просмотреть только 100 записей. Это действительно так. У нас есть задачи по доработке функционала, однако в ближайшее время они реализованы не будут."

Есть нет раздела Пользователи системы, то выгружать из БД. 

Подобный вопрос был. Я решал через настройку колонок в Студия.Пользователи системы. Вывел колонки Активен, тип подключения, Тип, Лицензия.Количество. 

либо запрос к БД - покажет пользователей без лицензий.

SELECT us.NAME

    ,lic.SysLicPackageId

    ,licp.NAME

    ,lic.Active

    ,lic.SysUserId

FROM SysAdminUnit us

LEFT JOIN SysLicUser lic ON lic.SysUserId = us.id

LEFT JOIN SysLicPackage licp ON lic.SysLicPackageId = licp.id

WHERE us.SysAdminUnitTypeValue = 4 and lic.SysLicPackageId is null.

Алексей Следь,

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

Экспорт выходит можно только через БД сделать?

Prime Source,

А раздел Пользователи системы из дизайнера системы доступен? По сути одно и то же. В менеджере лицензий нет возможности исправить набор колонок и отобразить больше 100 записей. Ответ от техподдержки звучал так: "На уровне приложения можно просмотреть только 100 записей. Это действительно так. У нас есть задачи по доработке функционала, однако в ближайшее время они реализованы не будут."

Есть нет раздела Пользователи системы, то выгружать из БД. 

Алексей Следь,

 

Пользователи есть, спасибо, попробую там

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

Добрый день!

 

Необходимо для окна справочного поля переопределить логику кнопки Добавить. Для этого я создала замещающий клиентский модуль LookupPageViewModelGenerator и изменила метод defaultModeActionButtonClick. Но возникла проблема в получении Id текущей записи (из которой происходит открытие справочного поля). Как можно получить Id?

Нравится

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

this.getSelectedRecords();

Id ТЕКУЩЕЙ карточки (из которой был открыт lookup)

С замещением модуля не всё просто.

Возможно, как-то можно получать Id записи из стека прошлых открытых страниц системы, с которым работают при помощи GetHistoryState, ReplaceHistoryState и PushHistoryState.

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

Добрый день!

Перевел платформу в режим разработки в файловой системе, после авторизации отобразилось окно конфигурации с сообщением "Сборка конфигурации "Default" не инициализирована". Запустил компиляцию и получил ошибку: "Зависимость 'UsrGetProductPrice' пакета 'Custom' не найдена. Путь поиска: C:\inetpub\BPMdevelopment\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Custom\Schemas\UsrGetProductPrice\UsrGetProductPrice.cs". Посмотрел что это, оказался конфигурационный сервис. Почему появляется эта ошибка? Как это повлияет в дальнейшем на разработку в файловом режиме? Можно ли что то сделать, кроме удаления этого сервиса, чтобы ошибка пропала?

Спасибо.

Нравится

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

Здравствуйте, Руслан.

Приложению требуется перекомпиляция конфигурации.

Для решения вопроса необходимо экспортировать эту схему в файл, затем удалить ее из конфигурации и выполнить "Компилировать все".

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

Спасибо, Илья, за консультацию. Не дождавшись ответа, я уже успел выгрузить пакеты в файл. И теперь у меня появился другой вопрос: "Компилировать приложение я могу и в Visual Studio и через Конфигуратор, или только в одном из них? 

Руслан, ограничения при включении режима разработки в файловой ситеме описаны в красных  блоках в статьях  "Разработка в файловой системе" и " Настройка Visual Studio для разработки в файловой системе".

В общем, попробовал скомпилировать проект из Visual Studio -  вышла ошибка: "Error: System login error. Error has been recorded in system log of the server. Please contact your system administrator. Utility finished working." Затем попробовал скомпилировать из приложения - все хорошо (даже ошибка, которая указана в инициирующем сообщении данного обсуждения исчезла). Затем опять в студии - та же ошибка. Опять вопросы:

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

2. Почему из студии компиляция не проходит?

Видимо, что-то не было настроено согласно этим статьям.

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

На самом деле я забыл про настройку соединение с базой данных для WorkspaceConsole. Точнее не обратил внимание на то что их нужно выполнить. Исправил, компиляция запустилась. Буду ждать окончания процесса. Спасибо, Илья, за помощь! 

Все таки остался один вопрос: Где искать логи к утилите WorkspaceConsole? По пути "C:\inetpub\BPMdevelopment\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Log\ " нет свежих логов, только старые месячной давности. В будущем может пригодится.

В сообщении может быть речь о логах на стороне сервера.

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

Добрый день! 

Пытаюсь настроить CRM локально для разработок. IIS развернул, сайт поднял. Выполнил (подступившись через DEV) генерацию исходного кода, затем компиляцию - оба процесса завершились без ошибок. Надеялся что проблема исчезнет. Но, нет...

При попытке открыть конфигурацию штатным способом открывается страница с ошибкой:

Exception Message: Данный ключ отсутствует в словаре.
Exception Type: System.Collections.Generic.KeyNotFoundException
Exception Source: mscorlib

Exception Stack Trace:
   в System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.CreateItemTabHeader(Dictionary`2 node, Boolean isSysModuleFolder)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.BuildWorkspaces(Dictionary`2 node, TabHeaderCollection tabHeaders)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.BuildWorkspaces(Dictionary`2 node, TabHeaderCollection tabHeaders)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.InitScriptTaskExecute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessScriptTask.InternalExecute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessScriptTask.Execute(ProcessExecutingContext context, Func`2 internalExecute)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_UIv2_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.OnExecuted(ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_UIv2_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.OnExecuted(ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessScriptTask.Execute(ProcessExecutingContext context, Func`2 internalExecute)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.OnExecuted(ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
   в Terrasoft.UI.WebControls.PageSchemaUserControl.ThrowEvent(String message)
   в Terrasoft.UI.WebControls.Controls.PageContainer.LoadFromAssembly()
   в Terrasoft.UI.WebControls.Controls.PageContainer.LoadUserControl()
   в Terrasoft.UI.WebControls.Controls.PageContainer.OnInit(EventArgs e)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

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

Нравится

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

Интересно то, что после перезапуска пула и приложения при входе на платформу открывается окно конфигурации с сообщением "Сборка конфигурации "Default" не инициализирована". Хотя непосредственно до перезапуска пула и приложения я выполнял генерацию и компиляцию. Последую совету приведенному в этом обсуждении - https://community.terrasoft.ru/questions/sborka-konfiguracii-default-ne-inicializirovana. Выполненные действия не решили проблему. Ошибка так и возникает.

Руслан Хасанов,

Касаемо ошибки, скопируйте sessionId и найдите его в папке логов, там будет подробное описание ошибки, где сразу все станет понятно)

На самом деле в логах я нашел то же самое что и было выведено на страницу:

2018-12-20 15:54:08
Exception Message: Данный ключ отсутствует в словаре.
Exception Type: System.Collections.Generic.KeyNotFoundException
Exception Source: mscorlib

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

2018-12-20 15:39:07,732 [BPMonlineQuartzScheduler_Worker-1] ERROR IIS APPPOOL\BPMdevelopment Terrasoft.Core.Scheduler.RunAppJob RunJobExecutor - JobFail [className:Terrasoft.Configuration.RemindingJob, Terrasoft.Configuration, Version=7.12.4.924, Culture=neutral, PublicKeyToken=null, Exception:Terrasoft.Core.InstanceActivationException: Ошибка создания экземпляра класса "Terrasoft.Core.IJobExecutor" ---> System.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: type
   в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   в System.Activator.CreateInstance(Type type, Object[] args)
   в Terrasoft.Core.Factories.ClassFactory.GetInstance[T](String fullClassName, ConstructorArgument[] constructorArguments)
   --- Конец трассировки внутреннего стека исключений ---
   в Terrasoft.Core.Factories.ClassFactory.GetInstance[T](String fullClassName, ConstructorArgument[] constructorArguments)
   в Terrasoft.Core.Factories.ClassFactory.ForceGet[T](String fullClassName, ConstructorArgument[] constructorArguments)
   в Terrasoft.Core.Scheduler.RunAppJob.RunJobExecutor(UserConnection userConnection, String className, JobDataMap dataMap, Dictionary`2 predefinedEntries)]]

Хотя в последней строчке предыдущей ошибки в параметре тоже упоминается словарь -Terrasoft.Core.Scheduler.RunAppJob.RunJobExecutor(UserConnection userConnection, String className, JobDataMap dataMap, Dictionary`2 predefinedEntries).

Я в тупике. В чем проблема понять не могу. Кто нибудь сталкивался с подобным?

Проблема решается перезапуском сервера и очисткой redis'а с помощью команды flushall (подойдет если на сервере запущено одно приложение), а лучше flashdb (для конкретной базы, не забудьте предварительно выбрать базу). Полный перечень команд приведен здесь - https://redis.io/commands. Спасибо команде поддержки Террасофт за оказанную помощь.

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

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

Суть проблемы: 

- поля исчезают если они пустые

- поля нельзя изменять, даже если стоит признак enabled: true. Например меняю значение справочника(всплывающее окно) - жму выбрать - значение остается то что до выбора

-----------------------------------

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

this.openMiniPage({
	recordId: this.get("MasterColumnValue"),
	operation: Terrasoft.ConfigurationEnums.CardOperation.EDIT,
	entitySchemaName: "Contact",
	targetId: "LeadContactProfileSchemaProfileHeaderValueHyperlink"
});

и в консоле 3 ошибки, вот ода из них:

Context for module ViewModule_MiniPageListener_MiniPage_AccountMiniPage is not found, component will not be created.
если развернуть стек ошибок:
writeWarnMessage	@	core-base.js:691
injectedExt.create	@	core-base.js:728
(anonymous)	@	BaseExtendedMenu.js?…9b29238e0fea52c7:30
initExtendedMenuButtonCollections	@	BaseExtendedMenu.js?…9b29238e0fea52c7:28
initEmailExtendedMenuButtonCollections	@	EmailExtendedMenu.js…9b29238e0fea52c7:19
init	@	ContactMiniPage.js?h…9b29238e0fea52c7:7

 

Нравится

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

В профайлере нельзя редактировать данные. Профайлер — это отдельная программа, предназначенная для просмотра SQL-запросов, которые отправляет система в базу данных.

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

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

клиент хочет что бы это было именно слева. Как вариант:

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

Нет ли пути полегче этого?

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

да они хотят прям на странице лида его править.. А какие идеи почему миникарточка редактирования не открывается?

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

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

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

О компании

Компания «Ирбис Моторс» является производителем мототехники. 

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

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

Ранее сотрудники компании «Ирбис Моторс» фиксировали всю полезную информацию о взаимодействии с клиентом в индивидуальных таблицах, которая находилась в учетной системе 1С и личном кабинете клиента (web-площадка b2b для дилеров). Такая ситуация значительно усложняла возможность оперативно проанализировать работу как отдельного сотрудника, так и отдела в целом. Более того, при увольнении сотрудника продолжать работу в его «файле» очень сложно, так как каждый менеджер работал со своими клиентами в удобном для него формате. Важная информация о клиенте могла потеряться.

Для объединения информации в единой системе и автоматизации процессов была выбрана bpm’online.  

 

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

 

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

Первым шагом в адаптации системы стало определение требований к карточкам основных разделов. Далее на страницы разделов [Лиды], [Контакты], [Контрагенты], [Заказы] и [Продукты] через мастер раздела добавлены необходимые поля и справочники. Так, например, на страницу продукта добавлены такие поля: Марка и Тип транспортного средства, Технические характеристики и др.

 

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

 

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

 

Один из процессов работы менеджеров — это создание лидов из уже существующих Контактов/Контрагентов в случае выявления потребности. Второй алгоритм работы состоит из проработки новых потенциальных клиентов. Такие лиды формируются автоматически. Для автоматического создания лидов и регистрации их в системе был настроен лендинг, благодаря которому данные из регистрационной формы на сайте компании автоматически попадают в bpm’online. После получения и обработки информации о потребности   менеджер в один клик создает Контакт и Контрагент и система автоматически устанавливает взаимосвязи.

 

После стандартных коммуникаций с клиентом, в рамках лида, менеджер принимает решение о создании заказа или оставляет клиента на этапе «Взращивание», в крайних случаях — дисквалифицирует лид. Под взращиванием клиента подразумеваются периодические коммуникации с клиентом (телефонные звонки, личные встречи) с целью расположить его к продуктам компании. Кроме этого, контакты, у которых есть лиды на стадии «Взращивание», попадают в аудиторию e-mail рассылок, где происходит оповещение клиентов о специальных предложениях.

 

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

 

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

 

Результат

В результате внедрения bpm’online компания «Ирбис Моторс» получила систему автоматизации процессов взаимодействия с клиентом, в которой можно вести прозрачную работу с клиентом, следить за историей взаимодействия, автоматизировать процессы выполнения заказов и составлять аналитику по ключевым показателям работы менеджеров и отдела в целом. Наличие единого центр коммуникации с клиентами (телефон, электронная почта, чат с площадкой b2b, социальные сети) позволяет сократить время на активности в других системах и уделять это время клиентам. Работа в bpmonline позволила повысить лояльность существующих клиентов к компании и улучшить процессы взаимодействия с новыми клиентами.

Нравится

Поделиться

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

Добрый день!

"Ошибка на транспортном уровне при получении результатов с сервера. (provider: Session Provider, error: 19 - Физическое подключение не используется)"

Так же в логах отображается следующая ошибка:

System.Web.HttpUnhandledException (0x80004005): Выдано исключение типа "System.Web.HttpUnhandledException". ---> System.InvalidOperationException: Недопустимая попытка вызвать IsDBNull при закрытом устройстве чтения.
   в System.Data.SqlClient.SqlDataReader.CheckHeaderIsReady(Int32 columnIndex, Boolean permitAsync, String methodName)
   в System.Data.SqlClient.SqlDataReader.IsDBNull(Int32 i)
   в Terrasoft.Common.DBUtilities.GetColumnValue[T](IDataReader source, String columnName)

Кто нибудь сталкивался с данной ошибкой? Как ее решить?

Нравится

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

Такие ошибки часто связаны с подключением к SQL серверу.

Для решения проверьте:

1) запущена ли служба SQL Server. Если запущена, то можно её перестартовать;

2) перестартовать IIS;

3) перезагрузить компьютер, на котором находится сервер.

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

И ещё посмотрите статью.

Такие ошибки часто связаны с подключением к SQL серверу.

Для решения проверьте:

1) запущена ли служба SQL Server. Если запущена, то можно её перестартовать;

2) перестартовать IIS;

3) перезагрузить компьютер, на котором находится сервер.

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

И ещё посмотрите статью.

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

Добрый день!

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

Нравится

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

Компиляция не является процессом в понимании BPMN и по ней активности не создаются. Она реализована на уровне ядра. Если у Вас on site и не может скомпилироваться или компилируется слишком долго, то сервер может не вполне соответствовать минимальным системным требованиям.

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

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

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

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

Александр, подскажите, пожалуйста, какие таблицы подразумеваются? Или имеется ввиду одна таблица - SysSchema?

SysSchema, а ещё SysSchemaSource с исходниками схем на C#.

Спасибо большое, Александр!

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

Генерация выполняемого кода по C#-исходникам идёт сторонним компилятором, который запущен в отдельном процессе (в Windows) и может быть виден в «Диспетчере задач». Он может успешно доработать, даже если интерфейс в браузере уже заменился на окно логина из-за неактивности пользователя.

Хорошая новость. IIS у меня развернуто на локальном компьютере. Вижу процесс w3wp.exe. Отдельный найти не могу. Подскажите, пожалуйста, как он может называться.

Это процесс IIS. Запустите компиляцию, может, ещё что-то появится.

Используется стандартный класс CSharpCodeProvider.

Да, и хотел добавить (может кому то тоже пригодится). Информацию о генерации исходного кода можно получить из таблицы SysSchemaSource по полю ModifiedOn. Можно по разнице минимального/максимального значения поля узнать общее время генерации (в моем случае 43 минуты). Таблица SysSchema в моем случае не изменилась, т.е. ее можно не смотреть.

Спасибо, Александр, вы очень выручили.

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

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

Согласен. Пишу свои наблюдения чтобы кому-нибудь пригодилось. Спасибо!

К счастью/сожалению история не закончилась. Скорее всего причиной того что процесс VBCSCompiler.exe завершился а на стороне клиента ход загрузки все еще вертелся было то что у меня вышло предупреждение:

Есть вероятность что при отсутствии ошибок и предупреждений загрузка страницы будет проходить быстрее.

Компиляция судя по логам завершилась:

2018-12-20 14:02:45,173 [59] INFO  IIS APPPOOL\BPMdevelopment Build ExecuteBuildStep - Компиляция сборки запущена
2018-12-20 14:02:47,911 [59] INFO  IIS APPPOOL\BPMdevelopment Build ExecuteBuildStep - Компиляция сборки завершена
2018-12-20 14:02:47,911 [59] WARN  IIS APPPOOL\BPMdevelopment Build Build - Компиляция завершена
2018-12-20 14:02:47,912 [59] INFO  IIS APPPOOL\BPMdevelopment Build LogConsoleMessage - workspaceCompiler.Build finished at 00:01:08.6220681
2018-12-20 14:02:47,912 [59] INFO  IIS APPPOOL\BPMdevelopment Build BuildInternal - Сохранение модулей в базу данных
2018-12-20 14:02:49,096 [59] INFO  IIS APPPOOL\BPMdevelopment Build BuildInternal - Сохранение модулей в базу данных завершено
2018-12-20 14:02:49,096 [59] INFO  IIS APPPOOL\BPMdevelopment Build BuildInternal - Время компиляции: 00:01:09.8072646

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

Вопрос уже не по топику: Что значат эти предупреждения и как они влияют на работу CRM?

 

Предупреждения говорят о «шероховатостях» в коде, которые не мешают его компиляции. На время компиляции они не влияют. Названия схем и номера строк в них, к коду которых возникли претензии у компилятора, есть на скриншоте.

На тестовой среде предупреждения повторились, что очень странно. Я надеялся что предупреждения появляются только в среде для разработки из-за неверной ее настройки. К тому же при обновлении версии с 7.12.3 на 7.12.4, точнее после, я делал генерацию+компиляцию и предупреждения не выводились. А теперь появляются. Хм. Вспомнил, я устанавливал утилиту для загрузки курсов валют. Значит с этим связано (других версий нет). Приходится делать столько изменений что все и не запомнишь. Считаю что обсуждение можно закрыть. Надеюсь кому-нибудь принесет пользу. Александру отдельное огромное спасибо за участие!

Судя по названию схемы «TSC_CB_RF_Entity», дело именно в коде утилиты с курсом валют.

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