Время создания
Фильтры

В разделе Заказ, вкладка Продукты, захожу в Настройки детали и тут хочу создать Бизнес правило. Условие должно ссылаться на поле "Скидка, %" но оно отсутвсует в выборе и много других полей тоже. Объясните пожалуйста почему, и как сделать, что бы оно появилось? Спасибо.

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

Нравится

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

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

 

Действительно при выборе колонки в окне выбора колонки с типом "Валюта" недоступны к выбору. Мы зарегистрировали идею для команды разработки для улучшения этого поведения.

 

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

 

Хорошего дня! 

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

 

Действительно при выборе колонки в окне выбора колонки с типом "Валюта" недоступны к выбору. Мы зарегистрировали идею для команды разработки для улучшения этого поведения.

 

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

 

Хорошего дня! 

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

Добрый день, нужно что бы фильтр работал только по определенным колонкам, нашел это обсуждение у меня аналогичная задача https://community.terrasoft.ua/questions/filtraciya-standartnogo-filtra

но как я понял метод отсюда больше не актуален, в какую сторону копать , что бы сделать данную доработку?

Нравится

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

Добрый день,

 

Проставьте колонкам, что не должны появляться в фильтрации Usage mode = None (в дизайнере объекта) и опубликуйте объект. После этого колонки в фильтре появляться не будут.

Oscar Dylan,

Но тогда эти колонки не будут появляться и настройке колонок, аналитике, бизнес-процессах и т.п.?

Oscar Dylan,

 

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

Можете воспользоваться наследованием  от QuickFilterModule, но в таком случае нужно будет подправить имена в Load в базовой схеме

define("ContactSectionV2", ["ConfigurationEnums"], function(ConfigurationEnums) {
	Ext.define("Terrasoft.ContactSectionV2", {
		alternateClassName: "Terrasoft.ContactSectionV2",
		override: "Terrasoft.configuration.QuickFilterModule",//Название замещенного модуля
 
		/* Замещенная фуния */
		init: function(callback, scope) {
			window.alert("QuickFilterModuleV2: init");
			performanceManager.stop("QuickFilterModuleV2_BeforeLoad");
			performanceManager.start("QuickFilterModuleV2_Init");
			if (this.isInitialized) {
				Ext.callback(callback, scope);
				return;
			}
			this.initConfig();
			this.registerMessages();
			this.subscribeSandboxEvents();
			this.initFiltersViewItemsNames();
			var afterParentInitFn = this._afterParentInit.bind(this, callback, scope);
			var parentInitFn = this.getParentMethod(this, [afterParentInitFn, this]);
			Terrasoft.chain(
				this.initSysSettingsValues,
				this.initFiltersEntitySchemas,
				this.initFiltersModules,
				this._initConfigs,
				parentInitFn,
				this,
 
			);
 
		},
 
 
        render: function(renderTo) {
            this.callParent([renderTo]);
            var customFilterViewModel = this.viewModel.getFilterViewModel("CustomFilters");
            if (customFilterViewModel) {
               // Переопределяем метод getSimpleFilterColumnList для этого объекта
               customFilterViewModel.getSimpleFilterColumnList = function(filters, list) {
                    function filterColumns(schemaInstanceUId, columnNames) {
                        switch(schemaInstanceUId) {
                            case 'c449d832-a4cc-4b01-b9d5-8a12c42a9f89': // Activity
                                return columnNames.filter(function(x) {
                                    return x.name !== 'Color'; 
                                });
                            default:
                                return columnNames;
                        }
                    }
                    list.clear();
                    var columnList = {};
                    var columnNames = [];
                    var columns = this.entitySchema.columns;
                    var excludeColumnsName = ["ФИО", "Адрес"]
                    Terrasoft.each(columns, function(column) {
                        if (column.dataValueType !== Terrasoft.DataValueType.GUID &&
                            column.dataValueType !== Terrasoft.DataValueType.TIME &&
                            column.dataValueType !== Terrasoft.DataValueType.BLOB &&
                            column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &&
                            column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
                            this.console.log(column.caption)
 
                            if (this.isColumnDeprecated(column) || excludeColumnsName.includes(column.caption)) {
                                return;
                            }
                            columnNames.push({
                                name: column.name,
                                caption: column.caption
                            });
                        }
                    }, this);
                    var filteredColumnNames = filterColumns(this.entitySchema.uId, columnNames);
                    var sortedColumnNames = filteredColumnNames.sort((a, b) => a.caption.localeCompare(b.caption));
                    Terrasoft.each(sortedColumnNames, function(item) {
                        var column = columns[item.name];
                        columnList[column.name] = {
                            value: column.name,
                            displayValue: column.caption,
                            dataValueType: column.dataValueType,
                            referenceSchemaName: column.referenceSchemaName
                        };
                    });
                    list.loadAll(columnList);
               };
            }
 
 
        },
 
	});
	//<---------------------------
	return {
		entitySchemaName: "Contact",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
	};
});
//на 7.18 работает(лучше способа как переопределить метод из вьюмодели я не смог придумать) 

 

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

Добрый день!

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

Нравится

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

Добрый день,

Всё различие между сохранением новой записи и уже имеющейся в методе onProcessCardSaved схемы BasePageV2.

Для новой записи вызывается _closePage, что и закрывает страницу.

Чтобы уже имеющаяся запись также зарывалась, необходимо на странице [Object]PageV2 переписать метод onProcessCardSaved следующим образом:

onProcessCardSaved: function(needProcessModeToBackHistoryState) {
				if (!this.destroyed) {
					this._closePage(true);
				}
			},

 

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

Доброго времени суток! Возник затык с казалось бы простой задачей.

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

Вопрос: возможно ли реализовать обновление страницы после завершения активности? Используя для этого только клиентскую часть?

Пробовала прикрутить методы this.reloadEntity(), но проблема в том, что не удается "поймать" момент завершения активности. Подскажите, пожалуйста, возможно ли в странице редактирования получить значение состояния активности?

Способ с ActivityEventListener не подходит. 

 

Нравится

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

Добрый день,

 

Я тут вижу два варианта:

 

1) На событии после сохранения активности в DCM

(доступно из расширеных настроек активности

) сделать логику отправки серверного сокет сообщения на клиент, а на клиенте на карточке оформить подписку (и уничтиожение) на определенное сообщение. По получению сообщения обновлять страницу редактирования.

 

2) При отработке метода save из ActivityMiniPage реализовать отправку sandbox сообщения в модуль нужной страницы редактирования и обновлять страницу по получению этого сообщения.

Oscar Dylan,

спасибо за ответ. Выбрала второй способ через сообщения. Реализовала отправку сообщения , но при попытке завершить активность нажатием на кнопку "сохранить" выпадает ошибка: message name_message is not define in MiniPageModule (ViewModule_MiniPageListener_MiniPage_ActivityMiniPage) module.

Не понимаю где ещё  нужно объявить это сообщение, кроме как в activityMiniPage и нужной страницы редактирования ?

Если можно на смену стадии кейса, то можно посылать сообщение из бизнес-процесса, который стартует по изменению стадии заказа

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

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

Схема: GridUtilitiesV2.js

Метод: getEditableGridRowViewModelClassName

        getEditableGridRowViewModelClassName: function(config) {

            if (!config) {

                return null;

            }

            let className = "Terrasoft.BaseConfigurationGridRowViewModel";

            const entitySchemaName = this.getGridEntitySchemaName();

            const entityStructure = Terrasoft.configuration.EntityStructure[entitySchemaName];

            const rawData = config.rawData;

            const typeColumn = this.getTypeColumn(entitySchemaName);

            let schemaName = null;

            let pages = [];

            if (entityStructure) {

                pages = entityStructure.pages;

            } else {

                pages.push({cardSchema: this.getDefaultConfigurationGridItemSchemaName()});

            }

            this.Terrasoft.each(pages, function(page) {

                if (typeColumn) {

                    const path = typeColumn.path;

                    if (rawData.hasOwnProperty(path)) {

                        const typeColumnValue = rawData[path].value;

                        if (page.UId === typeColumnValue) {

                            schemaName = page.cardSchema;

                        }

                    }

                } else {

                    schemaName = page.cardSchema;

                }

            }, this);

            if (schemaName) {

                className = "Terrasoft." + schemaName + "ConfigurationGridRow" + entitySchemaName + "ViewModel";

            }

            return className;

        },





Вот в этой строке

const entityStructure = Terrasoft.configuration.EntityStructure[entitySchemaName];

мы получаем такой результат:

 

  1. attribute: "ProductCategory"
  2. entitySchemaName: "FinApplication"
  3. entitySchemaUId: "cdda1304-e571-42de-9df7-6dfe528ea7b6"
  4. pages: [{…}]
  5. searchRowSchema: ""



    Свойства attribute быть не должно, но я не знаю как его убрать. Возможно кто-то может объяснить что оно значит и как с ним работать при вызове Terrasoft.configuration.EntityStructure[entitySchemaName];

Нравится

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

Добрый день,

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

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