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

Нравится

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

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

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

Добрый день.

Версия BPMOnline 7.2

Пытаюсь по пункту меню "Добавить" в детали открыть страницу выбора объектов.

В методе onClick пункта меню "Добавить" детали делаю так:

                        var lookupConfig = {
                                entitySchemaName: "BankingService",
                                columnName: "Name",
                                columns: ["ClientType"],
                                multiSelect: true
                        };
                        LookupUtilities.Open(
                                this.sandbox,
                                lookupConfig,
                                this.addBankingServiceItemsCallback,
                                this,
                                null,
                                false,
                                false
                        );

Однако при нажатии на пункт меню получаю бесконечно крутящийся значок "Загрузка" и ничего не происходит. В чем моя ошибка?

Буду благодарен за консультацию.

Нравится

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

Здравствуйте, Артем.

Предоставте полный листинг кода схемы для анализа.

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

define('SynchronizedProductDetail', ['ext-base', 'terrasoft', 'SynchronizedProduct',
'SynchronizedProductDetailStructure', 'SynchronizedProductDetailResources', 'LookupUtilities'],
function(Ext, Terrasoft, entitySchema,  structure, resources, LookupUtilities) {
	var viewModel;
	structure.userCode = function() {
		this.entitySchema = entitySchema;
		this.name = 'SynchronizedProductDetailViewModel';
		this.editPageName = 'SynchronizedProductPage';
		this.columnsConfig = [
			{
				cols: 10,
				key: [
					{
						name: {
							bindTo: 'BankingService.Name'
						},
						type: 'title'
					}
				]
			}
		];
		this.loadedColumns = [
			{
				columnPath: 'Id'
			}, {
				columnPath: 'BankingService'
			}
		];
		this.modifyUtilsButton = function(utilsButton) {
			var utilsMenuItems = utilsButton.menu.items;
			//NOTE: Change Select button caption
			utilsMenuItems[1].caption = "Выбрать продукты";
			utilsMenuItems[1].enabled = {bindTo: "isProductChooseForSelection"};
			utilsMenuItems[1].click = {bindTo: "selectBankingServiceItems"};
			return utilsButton;
		};
 
		this.methods.setEntitySchema = function() {
			this.entitySchema = entitySchema;
		};
 
		this.methods.getSenderSandboxId = function() {
			return this.sandbox.id.replace('_detail_SynchronizedProduct', '');
		};
 
		this.methods.init = function() {
			viewModel = this;
			this.sandbox.subscribe("UpdateDetail", this.processUpdateDetailMessage, [this.getSenderSandboxId()]);
		};
 
		this.methods.processUpdateDetailMessage = function(arg) {
			viewModel.set('isProductChooseForSelection', arg.param);
		};
 
		this.methods.selectBankingServiceItems = function() {	
			var lookupConfig = {
				entitySchemaName: "BankingService",
				columnName: "Name",
				columns: ["ClientType"],
				multiSelect: true
			};
			LookupUtilities.Open(
				this.sandbox,
				lookupConfig,
				this.addBankingServiceItemsCallback,
				this,
				null,
				false,
				true
			);
		};
 
		this.methods.addBankingServiceItemsCallback = function(args) {
			console.log(args);
		};
	};
	return structure;
});

Здравствуйте, Артем.

Метод "LookupUtilities.Open" пятым параметром принимает контейнер, в который будет производиться рендер. Он не может быть null. Сделайте printscreen ошибки в консоли браузера.

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

Метод "LookupUtilities.Open" должен выглядеть следующим образом:

LookupUtilities.Open(sandbox, lookup.config, this.addBankingServiceItemsCallback, this, this.renderTo);

Сергей, я смотрел значение свойства this.renderTo с помощью

console.log(this.renderTo)

оно равно в этом случае undefined

И я пытался сделать так, как вы написали - ничего не меняется.

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

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

Добрый день, необходимо фильтровать результаты которые выводятся при открытии шаблона email на странице BulkEmailPageV2
Нашел код который собственно открывает окно со справочником, вопрос - как фильтровать то что выводится в этом окне, к примеру по какому нибудь полю в объекте EmailTemplate?

var config = {
        entitySchemaName: "EmailTemplate",
        enableMultiSelect: false,
        columns: ["Subject", "Body"]
};
LookupUtilities.Open(this.sandbox, config, this.insertTemplateFromLookup, this, null, false, false);

Нравится

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

Фильтр добавляется в config.
Вот пример фильтра по создателю:

    var contactFiler = Terrasoft.createFilterGroup();
    contactFiler.name = "contactFiler";
    contactFiler.logicalComparisonTypes = Terrasoft.LogicalOperatorType.AND;
    var filter = Terrasoft.createColumnFilterWithParameter(
        Terrasoft.ComparisonType.EQUAL, "CreatedBy",
        Terrasoft.SysValue.CURRENT_USER_CONTACT.value);
    contactFiler.addItem(filter);
    var config = {
        entitySchemaName: "EmailTemplate",
        enableMultiSelect: false,
        columns: ["Subject", "Body"],
        filters: contactFiler
    };
    LookupUtilities.Open(this.sandbox, config, this.insertTemplateFromLookup, this, null, false, false);

Спасибо, все работает отлично

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