Может кто сталкивался с таким.

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

Можно зафильтровать добавив в замещаемом модуле код для атрибута

"Owner": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"lookupListConfig": {
		filter: function() {
			var filterGroup = Ext.create("Terrasoft.FilterGroup");
			filterGroup.add("IsUser",
				Terrasoft.createColumnIsNotNullFilter("[SysAdminUnit:Contact].Id"));
			filterGroup.add("IsActive",
				Terrasoft.createColumnFilterWithParameter(
					Terrasoft.ComparisonType.EQUAL,
					"[SysAdminUnit:Contact].Active",
					true));
			return filterGroup;
		}
}

В продаже это нормально сработало, но в активностях не как не хочет работать фильтр.

Может кто в курсе почему?

Но вообще было бы не плохо сделать это глобально конечно, что бы ответственных можно было добавить только активных пользователей, но я такого не нашел

Нравится

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

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

Попробуйте посмотреть, какой запрос идёт в одном и другом случае. Сначала — запрос от браузера к веб-сервису, его можно увидеть в «Инструментах разработчика». Если не поможет понять и сайт развёрнут локально, можно запустить SQL-профайлер и посмотреть запросы уже на уровне базы.

Зверев Александр,

Проверил все наследования - только в ActivityPageV2 в NUI rfgtnt есть логика через атрибут

"Owner": {
	dataValueType: Terrasoft.DataValueType.LOOKUP,
	lookupListConfig: {filter: BaseFiltersGenerateModule.OwnerFilter}
}

и наследование идет от модуля что наследовался от выше указанного в NUI пакете. У себя в замещенном модуле его и заместил

Теперь попробуйте посмотреть запрос. Если Ваш фильтр идёт одновременно с этим и их условия мешают, это должно быть видно.

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

Добрый день!

Есть реестр объектов O, на странице используется деталь D, в ней несколько записей, связь детали D с объектом O через атрибут A.

Нужно создать сложный фильтр, по которому в реестре объектов X буду выводиться только те записи, в которых в связанной детали нет записи со значением атрибута Z=1. 

Просто вывести фильтр объектов O, где в записях детали D атрибут Z не равен 1, не поможет. Потому что в детали D могут быть и другие строчки, где атрибут Z = 1. Нам такие записи объекта не нужны.

Можно ли это сделать или такой фильтр настроить нереально?
Конкретно на примере.

Нужно вывести договоры, в которых в детали Визы нет строчки со значением визирующего = Петров Петр Петрович.

Спасибо!

Нравится

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

Боже, как просто, совсем глаз замылился, спасибо))))))))

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

Добрый день, Коллеги!

Задача:

На странице продуктового каталога (ProductSelectionSchema) необходимо для справочного поля [Прайс-лист] (PriceList) добавить логику фильтрации значений.

https://www.screencast.com/t/KGWpnt5Ab

 

Что попробовал:

"Классический" вариант, объявленный на замещённой странице ProductSelectionSchema. Попробовал просто скрыть "Базовый" прайс-лист.

https://academy.terrasoft.ru/documents/technic-sdk/7-15/primenenie-filtracii-k-spravochnym-polyam

Не помогло.

 

Подскажите, пожалуйста, как именно можно реализовать дополнительную логику фильтрации?

Возможно свойство filters для атрибута нужно объявить в другой схеме/модуле?

Или подскажите на какие методы обратить внимание?

Заранее спасибо!

 

Нравится

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

Добрый день!
В указанное вами поле попадают записи с детали "Цены" объекта "Продукт" (вкладка "Цены и остатки").
Логика отбора записей реализована в ProductSelectionQueryUtilitiesMixin (метод getProductInBasePriceListEsq), который скорее всего переопределить не получится (модули переопределять нельзя в системе).
Как вариант, удалять записи "Основной" из детали "Цены" продукта. Но это крайне не рекомендуется делать, даже запрещено на уровне системы.

Спасибо за "Наводку", Александр! Думаю можно поработать с методом initCurrencies в ProductSelectionSchema. Хотя тоже не лучший вариант. Попробую всё же разобраться, как именно можно навесить обработчик с фильтром на справочную колонку, так как отключение логики пересчёта, при наличии пункта меню справочника, как вы отметили, не лучшая идея..

Титаев Александр Николаевич,

Покопался еще в коде. Именно получение запроса на выборку списка прайс-листов осуществляется в методе applyProductPriceItemsEsq (ProductSelectionQueryUtilitiesMixin).
Этот метод глобально вызывается в методе getLookupQuery (модуль

ProductSelectionSchema) по клику по лукапному полю (берется обработчик заполнения списка лукапного поля в методе getLookupColumnHandlers).
Что можно сделать:
1) Реализовать свой метод applyProductPriceItemsEsq с нужной вам фильтрацией в ProductSelectionSchema
2) Указать новый метод в getLookupColumnHandlers
3) Указать новый метод в getGridRecordByItemValues

 

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

Задача такая.

Есть деталь с редактир.реестром. На ней поле Продукт. Продукты в справочнике с разными категориями.

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

Ну например.. возьмем стандартные компьютеры..Продукты с категорией "Ноубуки" фильтровать по совпадению параметра объем памяти и диагональ экрана в заявке, а продукты с категорией "Доп. товары" показывать для выбора в реестре детали всегда все.

 

 

Нравится

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

Посмотрите это обсуждение. По фильтрации записей в реестре на форуме очень много обсуждений!

Посмотрите это обсуждение. По фильтрации записей в реестре на форуме очень много обсуждений!

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

Добрый день. Подскажите как можно отфильтровать справочник контактов по группе? Смысл в том что при выборе из справочника в списке должны быть сотрудники только определенной группы (у нас тебе группа "телефермеры")

Нравится

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

Александр Тыра,

1. Можно сделать эту группу не функциональной, а организационной ролью.

2. Можно попробовать написать свое представление и для фильтрации нужных контактов завязаться на это представление.

Доброе утро.

Ваша группа 'Телефермеры' - это группа администрирования или какая-то другая?

Телефермеры — это как телепузики?smiley

Если это группа администрировования, см. тут. Если группа контактов, то условие фильтра будет даже проще, только по полю FolderId в таблице ContactInFolder. 

Алла Савельева,

"Организационные роли"

Александр Тыра,

Посмотрите решение по ссылке выше, которое привел Александр Зверев.

Алла Савельева,

"Организационные роли" работают, а вот "Функциональные роли" нет

Зверев Александр,

Спасибо, решение отличное, но только работают так только 

"Организационные роли", а вот "Функциональные роли" нет

Для функциональной должно быть похоже, только другой набор полей с квадратными скобками. В таблице SysAdminUnitInRole хранятся и те, и те роли.

Зверев Александр, 

я видел что и те и те, но только при фильтре "Функциональные роли" фильтруются, я так понял, не люди а группы, а люди входят в "Организационные роли", потому такой способ и не работает

Если есть доступ к базе, напишите SQL-запрос, обращающийся к Contact, SysAdminUnit, SysUserInRole и SysAdminUnitInRole и получающий нужную Вам выборку контактов, а затем адаптируйте его под синтаксис с квадратными скобками.

Зверев Александр,

спасибо за совет, попробую

Зверев Александр,

Select * from "Contact" INNER JOIN "SysAdminUnit" ON "Contact"."Id" = "SysAdminUnit"."ContactId"
where "SysAdminUnit"."Id" IN (Select "SysAdminUnitId" from "SysAdminUnitInRole" where "SysAdminUnitRoleId" = '{C7C2A8E0-C54A-485B-A7A7-6FE3590E769B}')

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

 

filterGroup.add("IsGroupAccess",
    Terrasoft.createColumnFilterWithParameter(
    Terrasoft.ComparisonType.EQUAL,
    "[SysAdminUnit:Contact].[SysAdminUnitInRole:SysAdminUnit].SysAdminUnitRole.Id",
    "{C7C2A8E0-C54A-485B-A7A7-6FE3590E769B}"));

так пробую - не работает

Александр Тыра,

1. Посмотрите sql-профайлером, какой запрос формируется в базу данных при вызове Ввшего кода.

2. Также посмотрите статьи по принципам построения путей к колонкам вот эту и эту.

 

Алла Савельева,

тут как раз пишут что к таблице этой не добраться такими запросами

https://community.terrasoft.ua/questions/esq-sintaksis-zaprosa-pri-cepo…

Александр Тыра,

1. Можно сделать эту группу не функциональной, а организационной ролью.

2. Можно попробовать написать свое представление и для фильтрации нужных контактов завязаться на это представление.

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

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

В разделе создал пользовательские фильтры Улица, Дом , Квартира. Значения в фильтре Дом зависят от Улицы, а значения в фильтре Квартира от значения Дом.

Если нажимать на "лупу" то фильтрация успешно отрабатывает. Но если вводить значения в поле - фильтр в выпадающем списке не срабатывает.

Как реализовать фильтрацию выпадающего списка в разделе?

Код схемы раздела:

define("VcApartments1Section", ["BaseFiltersGenerateModule", "css!VcMyFilterStyle"], 
function(BaseFiltersGenerateModule) {
	return {
		entitySchemaName: "VcApartments",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "MyFilterGroupContainer",
				"parentName": "LeftGridUtilsContainer",
				"propertyName": "items",
				"index": 0,
				"values": {
					"id": "MyFilterGroupContainer",
					"itemType": this.Terrasoft.ViewItemType.CONTAINER,
					"items": []
				}
			},
			{
				"operation": "insert",
				"name": "MyFilterContainer",
				"parentName": "MyFilterGroupContainer",
				"propertyName": "items",
				"index": 0,
				"values": {
					"id": "MyFilterContainer",
					"itemType": this.Terrasoft.ViewItemType.CONTAINER,
					"items": []
				}
			},
			{
				"operation": "insert",
				"parentName": "MyFilterContainer",
				"propertyName": "items",
				"name": "VcStreetFilter",
				"values": {
					"bindTo": "VcStreetFilter",
					"caption": "Улица"
				}
			},
			{
				"operation": "insert",
				"name": "MyFilterContainer2",
				"parentName": "MyFilterGroupContainer",
				"propertyName": "items",
				"index": 1,
				"values": {
					"id": "MyFilterContainer2",
					"itemType": this.Terrasoft.ViewItemType.CONTAINER,
					"items": []
				}
			},
				{
				"operation": "insert",
				"parentName": "MyFilterContainer2",
				"propertyName": "items",
				"name": "VcHouseFilter",
				"values": {
					"bindTo": "VcHouseFilter",
					"caption": "Дом"
					// "controlConfig": {
					// 	"prepareList": {
	    //                         "bindTo": "VcHouseFilter"
	    //                     }
					// // "contentType": Terrasoft.ContentType.ENUM
					// }
				}
			},
			{
				"operation": "insert",
				"name": "MyFilterContainer3",
				"parentName": "MyFilterGroupContainer",
				"propertyName": "items",
				"index": 2,
				"values": {
					"id": "MyFilterContainer3",
					"itemType": this.Terrasoft.ViewItemType.CONTAINER,
					"items": []
				}
			},
			{
				"operation": "insert",
				"parentName": "MyFilterContainer3",
				"propertyName": "items",
				"name": "VcNameFilter",
				"values": {
					"bindTo": "VcNameFilter",
					"caption": "Квартира"
				}
			}
			]/**SCHEMA_DIFF*/,
		attributes: {
			"VcStreetFilter": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP,
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				isLookup: true,
				caption: "VcStreet",
				referenceSchemaName: "VcStreet"
			},
			"VcHouseFilter": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP,
				"lookupListConfig": {
					// Массив фильтров, применяемых к запросу для формирования данных поля-справочника.
					"filters": [
						function() {
							var filterGroup = Ext.create("Terrasoft.FilterGroup");
							var VcStreetFilter = this.get("VcStreetFilter");
							if (VcStreetFilter && VcStreetFilter.value) {
							filterGroup.add("VcStreetFilter",Terrasoft.createColumnFilterWithParameter
							(Terrasoft.ComparisonType.EQUAL, "[VcHouses:Id].VcStreet", VcStreetFilter.value));
							} else {
								filterGroup.removeByKey("VcStreetFilter");
							}
							return filterGroup;
						}
					]
				},
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				isLookup: true,
				caption: "VcHouse",
				referenceSchemaName: "VcHouses"
			},
			"VcNameFilter": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP,
				"lookupListConfig": {
					// Массив фильтров, применяемых к запросу для формирования данных поля-справочника.
					"filters": [
						function() {
							var filterGroup = Ext.create("Terrasoft.FilterGroup");
							var VcHouseFilter = this.get("VcHouseFilter");
							if (VcHouseFilter && VcHouseFilter.value) {
							filterGroup.add("VcHouseFilter",Terrasoft.createColumnFilterWithParameter
							(Terrasoft.ComparisonType.EQUAL, "[VcApartments:Id].VcHouse", VcHouseFilter.value));
							} else {
								filterGroup.removeByKey("VcHouseFilter");
							}
							return filterGroup;
							
						}
					]
				},
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				isLookup: true,
				caption: "VcName",
				referenceSchemaName: "VcApartments"
			}
		},
		mixins: {
			LookupQuickAddMixin: "Terrasoft.LookupQuickAddMixin"
		},
		methods: {
			onLookupChange: function(newValue, columnName) {
				this.callParent(arguments);
				if (columnName === "VcStreetFilter") {
					this.set("VcStreetFilter", newValue);
					this.onVcStreetFilterChanged();
				}
				if (columnName === "VcHouseFilter") {
					this.set("VcHouseFilter", newValue);
					this.onVcHouseFilterChanged();
				}
				if (columnName === "VcNameFilter") {
					this.set("VcNameFilter", newValue);
					this.onVcNameFilterChanged();
				}
			},
 			// Обновляет грид
			onVcStreetFilterChanged: function() {
				this.reloadGridData();
			},
 
			onVcHouseFilterChanged: function() {
				this.reloadGridData();
			},
 
 			onVcNameFilterChanged: function() {
				this.reloadGridData();
			},
			// Инициализирует фиксированные фильтры
			initQueryFilters: function(esq) {
				this.callParent(arguments);
			// Фильтр по Улице
				var VcStreetFilter = this.get("VcStreetFilter");
 
				if (VcStreetFilter && VcStreetFilter.value) {
					esq.filters.add("VcStreetFilter", this.Terrasoft.createColumnFilterWithParameter(
						this.Terrasoft.ComparisonType.EQUAL, "[VcApartments:Id].VcStreet", VcStreetFilter.value));
				} else {
					esq.filters.removeByKey("VcStreetFilter");
				}
			// Фильтр по Дому
				var VcHouseFilter = this.get("VcHouseFilter");
 
				if (VcHouseFilter && VcHouseFilter.value) {
					esq.filters.add("VcHouseFilter", this.Terrasoft.createColumnFilterWithParameter(
						this.Terrasoft.ComparisonType.EQUAL, "[VcApartments:Id].VcHouse", VcHouseFilter.value));
				} else {
					esq.filters.removeByKey("VcHouseFilter");
				}
			// Фильтр по названию
				var VcNameFilter = this.get("VcNameFilter");
 
				if (VcNameFilter && VcNameFilter.value) {
					esq.filters.add("VcNameFilter", this.Terrasoft.createColumnFilterWithParameter(
						this.Terrasoft.ComparisonType.EQUAL, "[VcApartments:Id].Id", VcNameFilter.value));
				} else {
					esq.filters.removeByKey("VcNameFilter");
				}
			}
		}
	};
});

 

Нравится

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

Сталкивался с подобной проблемой. Пришлось заместить данные методы на странице редактирования (в моем случае) InvoiceSectionV2

			/**
			 * @inheritdoc Terrasoft.BaseViewModel#onLookupDataLoaded
			 * @override
			 */
			onLookupDataLoaded: function(config) {
				this.callParent(arguments);
				this.mixins.LookupQuickAddMixin.onLookupDataLoaded.call(this, config);
			},
			getLookupListConfig: function() {
				return this.mixins.LookupQuickAddMixin.getLookupListConfig.apply(this, arguments);
			},
 
			/**
			 * @inheritdoc Terrasoft.BaseViewModel#getLookupQuery
			 * @override
			 */
			getLookupQuery: function(filterValue, columnName) {
				var esq = this.callParent(arguments);
				this.applyColumnsOrderToLookupQuery(esq, columnName);
				var filterGroup = this.getLookupQueryFilters(columnName);
				esq.filters.addItem(filterGroup);
				return esq;
			},
			/**
			 * Applies order information to lookup entity schema query.
			 * @protected
			 * @param {Terrasoft.EntitySchemaQuery} esq Entity schema query.
			 * @param {String} columnName Lookup column name.
			 */
			applyColumnsOrderToLookupQuery: function(esq, columnName) {
				var lookupColumn = this.getColumnByName(columnName);
				var lookupListConfig = lookupColumn.lookupListConfig;
				if (!lookupListConfig || !lookupListConfig.orders) {
					return;
				}
				var columns = esq.columns;
				this.Terrasoft.each(lookupListConfig.orders, function(order) {
					var orderColumnPath = order.columnPath;
					if (!columns.contains(orderColumnPath)) {
						esq.addColumn(orderColumnPath);
					}
					var sortedColumn = columns.get(orderColumnPath);
					var direction = order.direction;
					sortedColumn.orderDirection = direction ? direction : Terrasoft.OrderDirection.ASC;
					var position = order.position;
					sortedColumn.orderPosition = position ? position : 1;
					this.shiftColumnsOrderPosition(columns, sortedColumn);
				}, this);
			},
			/**
			 * Shift columns order position.
			 * @private
			 * @param {Array} columns Entity columns.
			 * @param {Object} sortedColumn Entity sorting column.
			 */
			shiftColumnsOrderPosition: function(columns, sortedColumn) {
				var sortedColumnOrderPosition = sortedColumn.orderPosition;
				if (Ext.isNumber(sortedColumnOrderPosition)) {
					columns.each(function(column) {
						if (column !== sortedColumn && Ext.isNumber(column.orderPosition) &&
							column.orderPosition >= sortedColumnOrderPosition) {
							column.orderPosition += 1;
						}
					});
				}
			},

 

Сталкивался с подобной проблемой. Пришлось заместить данные методы на странице редактирования (в моем случае) InvoiceSectionV2

			/**
			 * @inheritdoc Terrasoft.BaseViewModel#onLookupDataLoaded
			 * @override
			 */
			onLookupDataLoaded: function(config) {
				this.callParent(arguments);
				this.mixins.LookupQuickAddMixin.onLookupDataLoaded.call(this, config);
			},
			getLookupListConfig: function() {
				return this.mixins.LookupQuickAddMixin.getLookupListConfig.apply(this, arguments);
			},
 
			/**
			 * @inheritdoc Terrasoft.BaseViewModel#getLookupQuery
			 * @override
			 */
			getLookupQuery: function(filterValue, columnName) {
				var esq = this.callParent(arguments);
				this.applyColumnsOrderToLookupQuery(esq, columnName);
				var filterGroup = this.getLookupQueryFilters(columnName);
				esq.filters.addItem(filterGroup);
				return esq;
			},
			/**
			 * Applies order information to lookup entity schema query.
			 * @protected
			 * @param {Terrasoft.EntitySchemaQuery} esq Entity schema query.
			 * @param {String} columnName Lookup column name.
			 */
			applyColumnsOrderToLookupQuery: function(esq, columnName) {
				var lookupColumn = this.getColumnByName(columnName);
				var lookupListConfig = lookupColumn.lookupListConfig;
				if (!lookupListConfig || !lookupListConfig.orders) {
					return;
				}
				var columns = esq.columns;
				this.Terrasoft.each(lookupListConfig.orders, function(order) {
					var orderColumnPath = order.columnPath;
					if (!columns.contains(orderColumnPath)) {
						esq.addColumn(orderColumnPath);
					}
					var sortedColumn = columns.get(orderColumnPath);
					var direction = order.direction;
					sortedColumn.orderDirection = direction ? direction : Terrasoft.OrderDirection.ASC;
					var position = order.position;
					sortedColumn.orderPosition = position ? position : 1;
					this.shiftColumnsOrderPosition(columns, sortedColumn);
				}, this);
			},
			/**
			 * Shift columns order position.
			 * @private
			 * @param {Array} columns Entity columns.
			 * @param {Object} sortedColumn Entity sorting column.
			 */
			shiftColumnsOrderPosition: function(columns, sortedColumn) {
				var sortedColumnOrderPosition = sortedColumn.orderPosition;
				if (Ext.isNumber(sortedColumnOrderPosition)) {
					columns.each(function(column) {
						if (column !== sortedColumn && Ext.isNumber(column.orderPosition) &&
							column.orderPosition >= sortedColumnOrderPosition) {
							column.orderPosition += 1;
						}
					});
				}
			},

 

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

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

Всем привет!

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

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

Нравится

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

Дмитрий, почти любую фильтрацию (даже сложную) справочного поля можно сделать с использованием атрибута filters колонки (подробнее в https://academy.terrasoft.ru/documents/technic-sdk/7-13/primenenie-filt…). Для отладки фильтра рекомендую отследить запросы в SQL Server Profiler

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

Дмитрий, почти любую фильтрацию (даже сложную) справочного поля можно сделать с использованием атрибута filters колонки (подробнее в https://academy.terrasoft.ru/documents/technic-sdk/7-13/primenenie-filt…). Для отладки фильтра рекомендую отследить запросы в SQL Server Profiler

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

День добрый всем, может кто либо сталкивался или знает, суть задачи такова:
Нужно отфильтровать стандартный фильтр, а именно оставить лишь пару колонок из множества в section, что бы в глаза не бросались остальные. Ковырялся в сторону QuickFilterModuleV2, но что-то не разобрался с ним.

Нравится

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

Надо было искать не в QuickFilterModuleV2, а в CustomFilterViewModelV2.

Список колонок получает функция:

function getSimpleFilterColumnList(filters, list) {
	list.clear();
	var columnList = {};
	var columnNames = [];
	var columns = this.entitySchema.columns;
	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) {
	if (this.isColumnDeprecated(column)) {
return;
	}
	columnNames.push({
name: column.name,
caption: column.caption
	});
}
	}, this);
	var sortedColumnNames = columnNames.sort(function(a, b) {
if (a.caption === b.caption) {
	return 0;
} else {
	return a.caption > b.caption ? 1 : -1;
}
	});
	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);
}

 

Я попробовал переопределить этот модуль, просто сделать пустым выпадающий список. Этот модуль в версии 7.13 нельзя заместить обычным способом, я использовал материал . Раскройте пожалуйста подробнее как удалось переопределить эту функцию?

Так это тема 2018 года, тогда в 7.11 ещё было можно.

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

Привет всем !
Кто нибудь знает как убрать обязательное заполнение поля Ответственный в разделе Аналитика при выборе фильтров для построения отчета ?

Нравится

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

Сначала нужно найти схему этой страницы, как описано тут. Затем в ней смотреть, как сделано это поле. У меня такого отчёта по счетам нет, а в отчёте по задачам поле «Ответственный» выглядит так же, но не является обязательным, отчёт строится и с пустым.

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

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

Как вы добиваетесь в английской версии bpm'online того, чтобы в фильтрах Week начинался не с воскресенья, а с понедельника?

Спасибо

Нравится

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

Зверев Александр,

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

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

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

Зверев Александр,

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

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

Да, некоторые вещи в системе непонятно почему захардкодены...

Уже в версии 7.12.3 получили какие-то изменения, но опять привязали Европу к американским стандартам :(

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