Здравствуйте, уважаемые коллеги. Возник вопрос по мобильному приложению bpm'online.
Появилась необходимость заметить метод initialize из модуля "Terrasoft.view.BaseGridPage.View".

Сталкивался ли кто-то с подобной задачей? Помогите, пожалуйста. Пробовал создавать модуль, в котором писал extend: "Terrasoft.view.BaseGridPage.View", и подключал его в манифест. Сама схема подгружается, но метод вызывается только из родительской схемы.

Нравится

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

Добрый день! Можете описать свою бизнес-задачу? Для какой цели вы хотите заменить initialize() в Terrasoft.view.BaseGridPage.View? Объясню свой вопрос: для ряда задач нет необходимости в расширении базовых классов или их замещению. Например, для изменения стилей страниц можно воспользоваться утилитным методом Terrasoft.util.writeStyles().

S.Kalishenko,

Мне нужно добавить элемент вроде QR-кода на экран, который будет на постоянной основе находиться на экране в момент открытия любого раздела в целях безопасности, для этого я в div главного окна из JS я добавляю автогенерируемый qr-код. Как применять стили страниц я понимаю.

Федоровский Роман Дмитриевич,

Тогда для этой цели используйте override:

Ext.define("Terrasoft.BaseGridPageViewOverride", {
	override: "Terrasoft.BaseGridPageView",
 
	/**
	 * @protected
	 * @overridden
	 */
	initialize: function() {
		/* Your code */
		this.callParent(arguments);
	}
 
});

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

А как сгенерировать сам QR-код, пример есть здесь.

Большое спасибо! Это решило все мои проблемы. Прошу прощения за столь длительный ответ

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

Здравствуйте. Была необходимость в добавлении дополнительного поля поиска в LookupPage. 

На данный момент решил задачу путем замещения модуля LookupPageViewGenerator и изменения в нем метода getFilteringControlsConfig

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

Вопрос: можно ли как-то заместить или расширить этот модуль не копируя весь код, чтобы просто изменить тот метод, который мне нужен? Если да, то как потом его использовать на странице, например "Обращения"?

Нравится

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

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

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

Кастомное окно можно реализовать не как замещенное, а как наследник от LookupPageViewGenerator и переопределить нужные методы.

Также мне не совсем понятно, если Вы действительно замещали LookupPageViewGenerator, то зачем тогда копировали весь код, ведь могли переопределить только нужные методы?

 

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

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

Кастомное окно можно реализовать не как замещенное, а как наследник от LookupPageViewGenerator и переопределить нужные методы.

Также мне не совсем понятно, если Вы действительно замещали LookupPageViewGenerator, то зачем тогда копировали весь код, ведь могли переопределить только нужные методы?

 

Лучше клиентские модули не замещать

В 7.13.1 добавлен запрет на создание и установку новых замещающих клиентских модулей.

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

В вашем случае лучше унаследовать свой модуль от LookupPageViewGenerator создать свою страницу справочника скопировав LookupPage со всеми зависимястями заменив LookupPageViewGenerator на свой вариант

И дальше на странице Обращения в атрибутах указать lookupListConfig параметр lookupPageName:

"EmployeesNumber": {
                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                        lookupListConfig: {
                            orders: [{columnPath: "Position"}],                            lookupPageName: ВашаСтраницаLookupPage 
                        }
                    },

 

Таким образом ваш вариант будет вызыватся лишь там где вы в атрибутах явно зададите lookupPageName что вы и хотели!

 

 

 

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

Привет всем, такой вопрос
Как можно заместить родительское сообщение в дизайнере процессов ?

Мне нужно заместить сообщение InvoiceSaved так что бы запускалось только моё сообщение без родительского.

(Это мне нужно для того что бы отключить автонумерацию после сохранения счета)

Нравится

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

Примерно так:

Заместить объект  добавить обработку сообщения InvoiceSaved  Добавить необходимую обработку (скопировать из родительского) и не вызывать родительскую обработку (те оборвать провал к родителю)

Чтобы отключить автонумерацию можно просто удалить системные настройки или что еще проще просто спрятать поле номер. Или вам нужно чтобы нумерация осталась но номер присваивался не автоматом?

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

Мне нужно в определённых условиях обнулять номер и так что бы он не обновлялся и счетчик не шёл дальше.
Я сделал дочерний процесс который работает в место этого, проблема была в том что после моего процесса начал выполнятся этот (родительский), мне нужно было его как то убрать, мне тут подсказали какой командой это можно сделать:

context.Process.ActivatedEventElements.Remove("InvoiceSaved");

 

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

Есть стандартный бизнес-процесс поиска клиента системой. Поиск осуществляется только среди Контактов и Контрагентов. Как реализовать такой же поиск у Лидов? Есть ли возможность замещения стандартного бизнес-процесса?

Нравится

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

Здравствуйте! Процессы не замещаются, но в версии 770 их можно отключить. Уточните, пожалуйста, название процесса, который Вы хотите заместить?

SysCustomerIdentificationProcess

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

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

От техподдержки как-то была получена следующая инструкция по замене БП:
вариант деактивации БП - выполнение запроса к БД следующего вида:

update SysSchemaProperty set Value = 'False' --для активации заменить False на True
where SysSchemaId = (select id from sysschema where name ='YourProcessName') -- тут название схемы БП
and Name = 'Enabled'

инструкция по копированию и изменению БП
1. В разделе "Конфигурация" экспортируем процесс, который нужно скопировать.
2. С помощью текстового редактора (лучше использовать более "продвинутый", чем стандартный Блокнот в Windows, например, Notepad++) открываем полученный файл.
3. Нам необходимо поменять 3 параметра: UId - по всему файлу, Name - в 2х местах и Caption - в одном месте.
3.1. Меняем UId. Чтобя сгенерировать новый UId можно перейти на сайт http://www.guidgenerator.com/ или аналогичный и сгенерировать идентификатор. Затем меняем по всему файлу существующее значение на новое. Должно быть куча замен.
3.2. Меняем Name. Параметр Name должен представлять собой строку, содержащую только символы латинского алфавита без пробелов, например, CreditCardRegistrationTest. Заменить нужно в 2х местах в строках:
"Name": "CreditCardRegistrationByUserCustom",
и
\n \"A2\"": \""CreditCardRegistrationByUserCustom\""

Это позволило заменить родительский БП на свой с минимальными трудозатратами. Главное, если это в пакет включать, добавлять скрипт на деактивацию БП.
Замечу, что инструкция относится к 7.2, может в более новых версиях как-то поменялось.

Валентин,

Чтобы решить задачу

"Медведев Валентин Николаевич" написал:задача добавить в этот БП поиск и среди Лидов.
Вам необходимо:

1. В БП создать метод, который будет выполнять поиск лидов по средству связи и записывать результат в [CTISearchResult]
В качестве примера реализации используйте SearchAccounts/SearchContacts.

2. В тело БП добавить элемент "Задание-сценарий", в котором вызвать созданный на предыдущем шаге метод поиска лидов. Пример кода следует посмотреть в SearchAccountsStartsWithNumberScriptTask.

Обратите, пожалуйста, внимание, что "Задание-сценарий" нужно добавить в три ветки:

Наталия, так и сделал. Но так как БП системный, создал новую системную настройку, в которой вызываю модифицированный SysCustomerIdentificationProcess. так же заместил CtiCustomerInfoUtilities и подправил код там.

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