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

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

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

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

Нравится

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

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

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

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

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

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

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

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

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

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



 

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

Коллеги всем доброго времени суток!

Стоит задача создавать новый заказ по нажатию кнопки из другого раздела.

Реализовал следующим образом

loadOrderPage: function(contact) {
				debugger;
				var requestUrl = "CardModuleV2/OrderPageV2/edit/" + Terrasoft.generateGUID();
				var params = this.sandbox.publish("GetHistoryState");
					var parameters = {
						viewModelConfig: {
							Contact: contact
						}
					};
					var stateObj = {
						operation: enums.CardStateV2.ADD,
						parameters: parameters
					};
 
					this.sandbox.publish("PushHistoryState", {
						hash: requestUrl,
						stateObj: stateObj
					});
			}

Но параметры не передаются. и не заполняются поля. Подскажите как реализовать данный кейс?

Благодарю!

Нравится

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

Алексей,

Если нужно создать сущность из карточки другой сущности, почему нельзя просто сделать esq-запрос в БД или дернуть БП/Сервис, который это сделает на бэке? Наверное, у Вас есть какие-то особые условия созданий этой сущности? 

Возможно, ему надо именно визуальное открытие карточки для ввода данных. В таком случае лучше реализовать БП c шагом открытия нужной карточки и в настройках элемента преднастроить заполнение полей.

Коллеги благодарю за помощь. Задача была без использования БП. Реализовал следующим образом. 

loadOrderPage: function(contact) {
				var openCardConfig = {
					hash: this.sandbox.id,
					id: "Id",
					operation: enums.CardStateV2.ADD,
					schemaName:"OrderPageV2",
					moduleId: this.sandbox.id + "_AddOrderSuccessAction",
					defaultValues: [
						{ name: "Contact", value: contact.value },
						{ name: "uphType", value: "1AC347DB-DC55-4BA9-AC59-EF23041E891B" }, //"B2B"
						{ name: "WaOrderType", value: "79BF282E-87CC-42CD-8A2A-E1147ECC4CB8" }, //"Физю лицо"
						{ name: "Owner", value: Terrasoft.core.enums.SysValue.CURRENT_USER_CONTACT.value },
						{ name: "CreatedOn", value: new Date() }
					]
				};
				this.sandbox.publish("OpenCard", openCardConfig, [this.sandbox.id]);
			}

 

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

Добрый день.



Есть ситуация: две группы разработчиков работают над одним bpm-проектом решая при этом разные задачи.



Подскажите, как можно организовать процесс разработки в этом случае? Получится ли использовать несколько SVN-репозиториев (branches у каждой команды разработки и trunk-ветка)? Какие еще можно использовать подходы и программы для групповой разработки bpm'online?

Нравится

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

1) Если товарищи в одной комнате и работают в разных схемах, то в принципе можно создать 1 ветку и в ней работать. Будут, конечно, ситуации вида "Ваня! Отпусти схему, мне надо метод перенести!". Но в целом для небольшой группы сойдет.

2) По поводу разных веток - да. Делаете trunk, в bpm привязываете trunk-ветку, в ней создаёте пакет. Далее в svn копируете пакет по разным веткам, ведёте разработку, сливаете всё снова в trunk, в bpm обновляете пакет. Ну это в общих словах.

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

1) Если товарищи в одной комнате и работают в разных схемах, то в принципе можно создать 1 ветку и в ней работать. Будут, конечно, ситуации вида "Ваня! Отпусти схему, мне надо метод перенести!". Но в целом для небольшой группы сойдет.

2) По поводу разных веток - да. Делаете trunk, в bpm привязываете trunk-ветку, в ней создаёте пакет. Далее в svn копируете пакет по разным веткам, ведёте разработку, сливаете всё снова в trunk, в bpm обновляете пакет. Ну это в общих словах.

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

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

В обзоре пакета обновление https://academy.terrasoft.ru/documents/obzor-paketa-obnovleniy-bpmonlin… написано что есть появилась возможность как-то настроить выполнение бизнес-процесса в фоновом режиме, но на академии не нашла описание того, как это сделать.

Каким же образом все-таки это сделать?

Нравится

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

Ксения, видимо, речь об этом:

[Выполнять следующие элементы в фоновом режиме] — признак определяет, как будут выполняться все следующие за текущим элементом шаги процесса — автоматически в фоновом режиме или с участием пользователя.

  • Если для элемента процесса снят признак [Выполнять следующие элементы в фоновом режиме], то при переходе процесса на следующие шаги, предполагающие участие пользователя (например, заполнение страницы записи), будут открыты соответствующие страницы редактирования. Например, если элемент [Открыть страницу редактирования] расположен на диаграмме процесса после элемента, для которого снят признак [Выполнять следующие элементы в фоновом режиме], то для пользователя сразу же откроется соответствующая страница редактирования.

  • Если для элемента процесса установлен признак [Выполнять следующие элементы в фоновом режиме], то все следующие шаги, требующие участия пользователя, отобразятся на вкладке [Задачи по бизнес-процессам] коммуникационной панели. Такие задачи (например, открытие страниц) не начнут выполняться, пока пользователь не кликнет по ним на вкладке [Задачи по бизнес-процессам]. При этом все действия системы будут выполнены в фоновом режиме без отображения маски загрузки, чтобы пользователь не ожидал завершения процесса. Например, если элемент [Открыть страницу редактирования] расположен на диаграмме процесса после элемента, для которого установлен признак [Выполнять следующие элементы в фоновом режиме], то новая задача по бизнес-процессам отобразится на коммуникационной панели пользователя. Если на диаграмме процесса после такого элемента следуют требующие сложных и длительных расчетов элементы из группы [Действия системы], то такие расчеты будут выполнены в фоновом режиме, а маска загрузки отображаться не будет. Такой вариант может вызвать задержку выполнения процесса, если пользователь, ответственный за выполнение действия по процессу, в момент создания задач по бизнес-процессу не вошел в систему.

Признак [Выполнять следующие элементы в фоновом режиме] может быть установлен:

  • Для всех элементов из группы [Действия пользователя].

  • Для всех элементов из группы [Начальные события], кроме элемента [Стартовый таймер]. По умолчанию признак установлен для начального события [Сигнал].

  • Признак установлен и недоступен для редактирования для элементов [Обработка сигнала] и [Обработка таймера] группы [Промежуточные события].

 

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

Коллеги, подскажите.

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

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

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

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

Нравится

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

как вариант заместить BasePageV2, код

define("BasePageV2", [],
	function() {
		return {
			messages: {},
			mixins: {},
			attributes: {},
			modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
			methods: {
				onLookupDataLoaded: function(config) {
					config.collection.each(function (item) {
						var key = item.get("value");
						config.objects[key] = item.model.attributes;
					}, this);
				}
			},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	});

 

В своё время получили ответ, что убрать невозможно.

В итоге сделали в карточках (не в справочниках) хоть одно обязательное поле кроме главного. Тогда хотя бы не "по-тихому" создается новая запись, а пользователь осознанно и ответственно нажимает Save

Варфоломеев Данила пишет:

как вариант заместить BasePageV2, код

А это можно сделать для конкретных  lookup'ов?

Владимир Соколов пишет:

А это можно сделать для конкретных lookup'ов?

В config.columnName приходит название колонки, так что в теории - да.

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

 Большое спасибо, все получилось

 

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

Есть кастомный раздел "Каталог услуг".

Есть БП, в котором ставится Активность "Согласовать Каталог услуг" как в этой Активности указать связь с "Каталогом услуг" по аналогии с "контактами" "контрагентами" и т.д.

Какие объекты нужно заместить?

В какие из замещенных объектов нужно изменить?

и что нужно изменить?

Нравится

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

Евгений, здравствуйте.

Необходимо добавить с помощью мастера раздела на страницу Активности справочное поле, которое будет указывать на объект Каталог Услуг. Поскольку в элементе Выполнить задачу в качестве параметров можно указывать предопределенный набор полей, для решения задачи необходимо использовать такой подход:

- добавить элемент Добавить данные, объект = Активность, для созданного поля заполнить Каталог услуг

- с помощью элемента Открыть страницу редактирования для существующей записи открыть созданную запись.

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

Логвин Андрей Витальевич,

Спасибо, понимаю, что решение рабочее.

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

Евгений.,

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

Информацию можно по работе с миникарточкой можно найти на Академии.

По второму вопросу - исходящие потоки с условием на результат Активности можно добавить только в рамках элемента Выполнить задачу.

Для того, чтобы в этом элементе отображалась колонка (в блоке Связи), необходимо в БД явно указать связь. Реализация рассматривалась на community.

Запись связи вносится в таблицу entityConnection, где SysEntitySchemaUid - uid объекта Активности (можно определить в sysschema по колонке name),

ColumnUid - uid кастомной колонки в объекта Активности (например, можно найти в метаданных объекта).

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

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

Коллеги, а вы знаете о том, что на Академии Terrasoft есть запись вебинара для разработчиков приложений marketplace?

Информация о том, с чего начать разработку приложений, собрана в удобном формате в 2-часовом ролике:

  • Общие сведения о bpm'online marketplace
  • Настройка профиля для разработчика
  • Заказ сайта для разработки
  • Рекомендации по созданию приложений
  • Выполнение разработки приложения
  • Проверка на тестовом сайте
  • Регистрация решения в Личном кабинете
  • Публикация приложения в marketplace

Надеемся, он будет вам полезен!

Нравится

Поделиться

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

Друзья, коллеги-разработчики Marketplace обратились c вопросом. Подскажите, кто-нибудь, куда копать? :)

 

Нужно получить доступ к ConfigurationConstants

в коде раздела добавили

define("kitmediaCallhelper1Section", ["performancecountermanager", "ConfigurationConstants","jQuery"], function (performanceManager, ConfigurationConstants,$) {

но ConfigurationConstants не доступен, в то же время остальные модули доступны.

В зависимостях пакета Base, Core, Lead, NUI

 

Нравится

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

Алексей, связано это с тем, что если в модуле нигде не используется переменная (в нашем случае ConfigurationConstants), то она и не инициализируется на странице. Если в init прописать использование ConfigurationConstants, то она становится видимой и ее можно использовать.

Однако, обращаю ваше внимание, что в ассинхронных функциях обратного вызова (например, в вашем случае это анонимная функция, которая передается в this.callParent(...)) переменная ConfigurationConstants не будет видна, т.к. выполнение init уже будет завершено без ожидания завершения ассинхронного вызова. В этом случае вы можете использовать код:

var ConfigurationConstants​​​​​​​ = require("ConfigurationConstants"​​​​​​​);

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



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

Подскажите как можно скрыть (не отображать) кнопку определенным ролям?

Нравится

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

Добрый день

Задачу можно решить 2-мя вариантами:

1. Больше кода

  • определить роль текущего пользователя, реализовав запрос в БД;
  • обернуть этот запрос в метод, который должен отрабатывать в методе init вашей карточки (раздела). Если работа метода будет асинхронной, то изначальную инициализацию атрибута нужно будет сделать в false;
  • добавить собственный атрибут в модель, к примеру isButtonVisible
  • в diff прописать операцию merge для этой кнопки, указав visible: {bindTo: "isButtonVisible"}
  • в зависимости от результата запроса устанавливать значение атрибута

2. Меньше кода

  • создаем операцию в разделе "Доступ к операциям", к примеру HaseButton;
  • настраиваем доступ к операции по ролям;
  • gовторяем все, что описано в варианте 1 (кроме написания запроса к БД), но с модификациями:

               - создаем метод, который определяет наличие права             

                  (.../RightsService/GetCanExecuteOperations)

               - по результату заполняем атрибут IsButtonVisible

Спасибо, пока реализовали через процесс.

Который считывает входит пользователь в группу или нет, а дальше ветвление, если входит то процесс по кнопке выполнянется, если не входит не выполняется

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

Нужно сделать фильтрацию фильтра.

В выделенную часть нужно вывести только сотрудников, как это реализовать. 

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

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

Нравится

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

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

Или вооружиться напильником и сломать пару модулей (гуглите "simpleFilter" по конфигурации + можно в quickFilter ещё заглянуть). Ну это прям если совсем надо.

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