Технические вопросы
7.x

Доброго дня! При розробці стикнувсь з наступною проблемою. Є базовий процес в ньому я дописав свою логіку на JS. Код виконується і все працює коректно. Але як видно на рис. 1 в "Журналі процесів" процес не завершує своє виконання. Підкажіть, будь ласка, чи можна якось програмно заставити процес завершуватись.

Нравится

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

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

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

Процес "Создание обращения через CTI панель (по входящему звонку)". Замісітив схему "ContactSearchDetail". При натиску на кнопку "Выбрать" спрацьовує моя логіка. Прикріпив файл з кодом.

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

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

this.sandbox.publish("DetailChanged", this.get("ActiveRow"), [this.sandbox.id]);

нужно раскомментировать.

Показать все комментарии
7.2
замещение класса
Технические вопросы
7.x

Возможно кто-то сталкивался с такой проблемой в BPMOnline 7.2:
Есть класс Service, определенной в пакете Package поставляемой от Terrasoft. Требуется изменить логику работу в нем метода Send. Но, тут возникала проблема, что в пакете Package метод Send вызывается следующим образом:

new Service(UserConnection).Send();

В результате механизм замещения классов не работает через атрибут Override и IOC:
ClassFactory.GetService>(new ConstructorArgument("userConnection", UserConnection));

И мест, где сервис создается напрямую много. Соответственно заместить схемы, где вызывается сервис не представляется возможным.

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

Нравится

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

Здравствуйте.
Нужно определить какого типа эта схема. Если это SourceCodeSchema, то отключить или заместить не получится.

"Александр Зубков" написал:

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

Нужно определить какого типа эта схема. Если это SourceCodeSchema, то отключить или заместить не получится.


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

"Александр Красноперов" написал:Как-то поменять код в самой базе?

Разблокируйте схему да поправьте, времени кучу сэкономите...
Про то, что будет с поддержкой конфигурации в этом случае, вам расскажет сам Terrasoft, хотя с версией 7.2 я бы не задумывался уже :)

"Александр Кудряшов" написал:
Александр Красноперов пишет:

Как-то поменять код в самой базе?

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

Про то, что будет с поддержкой конфигурации в этом случае, вам расскажет сам Terrasoft, хотя с версией 7.2 я бы не задумывался уже :)


Спасибо за ответ.

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

Здравствуйте.
Для SourceCodeSchema можно попробовать заместить её и полностью переписать код:
1. Заместить схему.
2. Скопировать контент базовой схемы
3. Переписать код нужного метода.

"Котенко Александр" написал:

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

Для SourceCodeSchema можно попробовать заместить её и полностью переписать код:

1. Заместить схему.

2. Скопировать контент базовой схемы

3. Переписать код нужного метода.

С уважением, Котенко Александр.


А как это можно сделать?
В 7.2 я не вижу возможности заместить схему типа "Исходный код", для клиентских схем - такая возможность есть, а вот для исходного кода - нет

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

"Александр Зубков" написал:

Добрый день.

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


Самое интересное, что есть не доступная галочка в свойствах схемы. Да и выгружается признак в json о родителе.
Эх, добавили проблем на ровном месте :(

Галочку, наверное, просто, не убрали из интерфейса.

Показать все комментарии
NullReferenceException
Технические вопросы
7.x

Подскажите, пожалуйста, куда копать?

При входе:

Exception Message: Object reference not set to an instance of an object.
Exception Type: System.NullReferenceException
Exception Source: Terrasoft.Messaging.Common

Exception Stack Trace:
   at Terrasoft.Messaging.Common.ClientChannelHelper.GetConnectionParamsInitScript(Uri appUrl)
   at Terrasoft.WebApp.Nui.ViewModule.SetupWebSocketConnectionParams()
   at Terrasoft.WebApp.Nui.ViewModule.Page_Load(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Нравится

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

Проблема была тут:

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService, Terrasoft.Messaging.MicrosoftWSService" encrypted="true" portForClientConnection="443" defaultPort="" />

defaultPort=""

был пустой

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

Добрый день!
Как добавить ссылку на поле в элементы "Фигуры" и "Надпись" в печатной форме MS Word?
Система данные подтягивает, но сам элемент не выводит. В итоге данные выводятся в начале листа, фигур и надписей - нет.
Спасибо!

Нравится

1 комментарий
выбор продукта
детали
Технические вопросы
7.x

Необходимо добавить в деталь добавление записей аналогично детали продукт в заказе. Копался в коде продукта в заказе решения не нашёл. Прошу помощи, заранее спасибо!

Нравится

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

Здравствуйте, Олег.

Описание создания детали с редактируемым реестром, Вы можете найти по этой ссылке. Код открытия страницы добавления продуктов описан в методе "loadProductSelectionModule" схемы "ProductDetailV2" из пакета "ProductCatalogue". Сама же логика карточки описана в схеме "OrderProductPageV2".

Добрый день, Илья!

Редактируемый реестр я уже сделал, я имел ввиду страницу добавления продуктов

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

Показать все комментарии
7.5
отчет
серриализация
фильтр
Технические вопросы
7.x

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

В лоб не получилось

ReportService reportService = new ReportService();
EntitySchema schemaDocument = UserConnection.EntitySchemaManager.GetInstanceByName("Document");

Dictionarystring, object> filterParameters = new Dictionarystring, object>();
EntitySchemaQuery esqDocument = new EntitySchemaQuery(schemaDocument);
var f =esqDocument.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", DocumentId);
filterParameters.Add("Filters",f);
var reportParameters = Json.Serialize(filterParameters);

 

Нравится

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

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

Решение данного кейса подробно описано в этом комментарии.

Мотков Илья,

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

Елена Александровна, посмотрите здесь.

Показать все комментарии
пакет
Технические вопросы
7.x

Добрый день.
У нас есть написанный нами пакет. Появилась необходимость его доработать.
Установили его через WorkspaceConsole на новую базу, но редактировать его не можем
так как:
Элемент создан сторонним издателем или установлен из файлового архива. Сохранение изменений для данного элемента будет невозможно.
Можно ли как-то его редактировать?
Можно ли будет подключить его к svn?

Нравится

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

Здравствуйте.
Попробуйте выполнить на базе команду вида:
update SysPackage set InstallType = 0 where Name = 'PackageName'
где PackageName - название пакета.
Что касается подключения к SVN, то он должен быть настроен и подключен до начала разработки.

"Александр Зубков" написал:update SysPackage set InstallType = 0 where Name = 'PackageName'

пробовал. не помогло. возможно где-то есть еще какие то связи

В таблице SysPackage для вашего пакета для колонокм Maintainer установить – Customer, IsChanged - 1, IsLocked - 1, InstallType – 0.
Аналогично для SysSchema если у вас заблокировались еще и ваши модули в пакете, для них колонки IsChanged, IsLocked.
После перезайти в систему.

И почистить кеш сервера сессий (Redis) командой flushall.

Спасибо огромное. Получилось.
Еще вопрос. Возможно ли теперь его связать с хранилищем svn?
так как при попытке сохранить изменения выскакивает ошибка:
Для заданного локального пути не указан путь к хранилищу

Здравствуйте.
Попробуйте так:
update SysSchema set IsChanged = 1, IsLocked = 1 where syspackageid = (select id from syspackage where name = 'Package_Name')

update syspackageschemadata set IsChanged = 1, IsLocked = 1 where syspackageid = (select id from syspackage where name = 'Package_Name')

где Package_Name - название пакета

P.S.: предварительно, обязательно, сделайте бэкап.

Александр Зубков

Спасибо, теперь сохраняется.
Вот только как теперь этот пакет связать с хранилищем svn?

UPDATE SysPackage
SET SysRepositoryId = (SELECT TOP 1 Id FROM SysRepository WHERE Name='YOUR_SVN_Name')
WHERE Name= 'YOUR_Package_Name'

Пащенко Александр Сергеевич

Спасибо, получилось!

Показать все комментарии
изменения
счетчик
уведомления
Технические вопросы
7.x

Добрый день!
itil 7.6
Подскажите, пожалуйста,почему может не работать счетчик уведомлений для уведомлений, связанных с объектом "изменение"
( причем с объектом "обращение" счетчик работает)
Выглядит это так
- на иконке кол-во не отображается, но уведомления есть

Сверяли уведомления в таблице Reminding - заполнены корректно

Нравится

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

Здравствуйте, Дарья!

А подключение по websocket есть?

Добрый день!
А где это проверить необходимо?

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

Давайте по другому - у Вас работают процессы (элементы взаимодействия с пользователем открываются)?

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

Здравствуйте, Дарья!

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

Также, уточните следующие параметры:
1) Часовой пояс на локальной машине пользователя
2) Часовой пояс в профиле пользователя
3) Часовой пояс на сервере, где развернуто приложение.

Добрый день, Алексей!
Процесс "Получить кол-во уведомлений" с ошибкой НЕ завершается.
С часовыми поясами тоже все в порядке.
Дело не в конкретном пользователе

Проверяем как на облачной базе, так и на базе он-сайт тестовой.
Смотрите, какая ситуация:
Вообще счетчик уведомлений работает, но он работает только, если уведомление связано с объектом "Обращение"- только их он считает.
Если же уведомление связано с объектом "Проблема" или "Изменение" - то счетчик Не считает такие уведомления, он их не учитывает,хотя они есть - их можно посмотреть.

Есть три аналогичных процесса.
1. Создает уведомление по обращению - такое уведомление попадает в счетчик
2.Создает уведомление по проблеме - такое уведомление НЕ попадает в счетчик
3.Создает уведомление по изменению - такое уведомление НЕ попадает в счетчик

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

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

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

Как тогда включить необходимый провайдер?
В счетчике должны отображаться уведомления по всем объектам, к которым можно создать уведомления - по крайней мере к основным разделам системы уж точно.
Алексей, ну он должен быть заложен в систему.
То, что уведомления создаются, но не считаются в счетчике - это же ошибка(
Причем сами эти уведомления отражаются в панели уведомлений справа

создали UsrProblemNotificationProvider
по аналогии с CaseNotificationProvider

Но ничего не изменилось, видимо где-то этот новый провайдер надо подключить?

Добавили
вот такую строчку в sql
insert into NotificationProvider
(ClassName,Type)
values('Terrasoft.Configuration.UsrProblemNotificationProvider',1)
Уведомления для проблем включены.
По аналогии поступим со остальными разделами.
Но очень странно, конечно, что провайдеров изначально не было
Спасибо)

Показать все комментарии
вкладки
итоги
Технические вопросы
7.x

Я динамически добавляю/удаляю вкладки на итогах (напрямую в базе), но чтоб только что примененные изменения отобразились необходимо обновить страницу, т.к. итоги должны быть зарегистрированы в Terrasoft.DashboardManager. Подскажите, есть ли способ обновлять структуру итогов программно, не обновляя страницу?

Нравится

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

Все оказалось очень сложно. Необходимо опубликовать сообщение с не очевидным названием ReloadDashboard.

Показать все комментарии
ContactCommunication
ContactPage
javascript
Деталь Средства связи
Технические вопросы
7.x

Добрый день.
На ContactPage есть деталь ContactCommunication.
Необходимо при удаления средства связи перемещать его в временную
таблицу, удалив из ContactCommunication

Подскажите как лучше это сделать.
p.s.Думали отловить удаленный элемент(ы) с детали.
Не получилось это сделать. Метод this.get("DeletedItems") в
методе save детали не возвращает values удаленных елементов.

Нравится

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

Вижу два пути
- тяжелый реализация на уровне субд - триггером;
- простой процесс со стартовым сигналом удаление записи

"Александр Кудряшов" написал:

Вижу два пути

- тяжелый реализация на уровне субд - триггером;

- простой процесс со стартовым сигналом удаление записи

- Вес запроса зависит от его реализации:smile:
- Не получится. Необходимо определить процесс на событие "Перед удалением записи" непосредственно в объекте ContactCommunication.

"Демьяник Алексей" написал:Не получится

получится
ставите сигнал, получаете идентификатор, затем чтение данных из СредствСвязиКонтакта с id= идентификатору из первого элемента. А потом делайте с результатом чтения данных что хотите. Проверил на 7.7.0 - создал по факту удаления активность с заголовком = удаленному номеру :)
Для удаления номера использовал действие "удалить" в детали (см скрин)
Просто доверьтесь bpmonline :)

"Демьяник Алексей" написал:Необходимо определить процесс на событие "Перед удалением записи" непосредственно в объекте ContactCommunication.

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

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

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