Добрый день!

Установила приложение "Custom filter constructor for Creatio" (https://marketplace.terrasoft.ru/app/custom-filter-constructor-creatio) на демо-стенд (версия 7.18.2). Возможности "Открыть настройку фильтров раздела" нет.

В разделе в консоли появляется ошибка (скрин наверху).

 

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

Нравится

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

Елизавета, добрый день!

 

это бесплатное приложение и поддерживается разработчиком только по email. Обратитесь к разработчику напрямую.

Лазоренко Ирина, так может стоит тогда исключить это приложение из маркета, раз оно не работает как надо?

Согласен. Оно не работает уже давно. Думаю если его не исправляют его нужно убирать до исправления ошибка

Я вот тоже не понимаю, почему на маркете вообще лежит нерабочее приложение(

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

Добрый день! в последних версиях Creatio была закрыта работа с замещающими клиентскими модулями, поэтому решение перестало корректно работать начиная с версии 7.18.2. Был добавлен комментарий по совместимости на странице решения.

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

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

 

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

 

Пробую прописать вот так (прилагаю), но фильтр не срабатывает. Скорее всего я не правильно пытаюсь узнать, к какому департаменту относится текущий пользователь, посредством EntitySchemaQuery. Информация о департаменте содержится в объекте Contact.

 

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

Как это более правильно сделать, подскажите, пожалуйста?

 

 

Прикрепленные файлы

Нравится

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

Там идет асинхронный запуск, потому Ваш "return" не попадает в него. Вам необходимо сделать Join в колонке по которой делаете фильтр. Если напишите какие колонки в объекте этого раздела, то могу помочь верно сделать фильтр

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

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

Например позволит просто определить находится ли отметка времени в прошлом или будущем.

 

P.S.
Так же, в этом меню незаслуженно обделены Минуты, их часто не хватает для быстрых процессов.

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

Добрый вечер!

 

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

Разработчики рассмотрят ее в одной из будущих версий.

 

Спасибо, что делаете наш продукт лучше!

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

Добрый день.

Есть необходимость на преднастроенной странице отображать список пользователей (по ФИО) входящих в выбранную организационную роль.

Какие условия бизнес-правила страницы необходимо указать? 

Нравится

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

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

 

Если правильно понимаю задачу, то базовыми элементами не получиться отображать список пользователей с фильтрацией по определенной организационной роли без дополнительных кастомизации логики. По поводу кастомизации есть несколько тем где поднимались подобные вопросы,  надеюсь Вам это будет полезно. https://community.terrasoft.ru/questions/spravochniki-v-prednastroennoy… и https://community.terrasoft.ua/questions/neskolko-voprosov-po-prednastr…

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

Подскажите какой метод (название метода и файла) отвечает за нажатие этой кнопки? 

Нравится

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

Добрый день.

При нажатии этой кнопки срабатывает метод applySimpleFilter из файла CustomFilterViewModelV2.

Показать все комментарии
  updateFilters: function (filter) {
 
                    var esq = this.getGridDataESQ();
                    switch(filter) {
                        case "TsOwner":
                            var user = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value;
                           	esq.filters.add("CurrentUser", this.Terrasoft.createColumnFilterWithParameter(
                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 
                            break;
                        case "TsOt": 
                            esq.filters.add("NotCurrentUser", this.Terrasoft.createColumnFilterWithParameter(
                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 
                            break;   
                    }
                },

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

Нравится

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

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

Mykhailo Storozhuk,

 {

                    "operation": "insert",

                    "name": "SearchQueryButton",

                    "parentName": "ActionButtonsContainer",

                    "propertyName": "items",

                    "values": {

                        "caption": "Все клиенты филиала",

                        "itemType": Terrasoft.ViewItemType.BUTTON,

                        "style": Terrasoft.controls.ButtonEnums.style.GREEN,

                        "click": {"bindTo": "TsOwnerQueryFilter"},

                        "layout": {

                            "column": 6,

                            "row": 0,

                            // "colSpan": 9,

                            // "rowSpan": 1,

                        },

                    },

                    "index": 2

                },

 

 

  TsOwnerQueryFilter: function () {

                    this.updateFilters("TsOwner");

                },

После того как Вы добавили фильтр нужно получить данные с новым фильтром и перезагрузить страничку реестра через метод this.refreshGridData().

sad

Не помогло. 

Предоставьте код в методе, пожалуйста

Mykhailo Storozhuk, 

initQueryFilters: function (filter) {

                    var esq = this.getGridDataESQ();

                    if (filter == "TsOwner") {

                        var user = '{218A312F-C5FB-4E8F-E053-223E1EAC50CA}'; 

                        esq.filters.add("CurrentUser",

                        this.Terrasoft.createColumnFilterWithParameter(

                            this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user));

                    }

 

                    else if (filter == "TsNotOwner") {

                        var people = '{B1B7A389-130F-6EDB-E040-007F01000437}';

                        esq.filters.add("CurrenNottUser",

                            this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", people));

                    }

                },

 

                updateFilters: function (filter) {

 

                    var esq = this.getGridDataESQ();

                    switch(filter) {

                        case "TsOwner":

                            var user = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value;

                            esq.filters.add("CurrentUser", this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 

                            break;

                        case "TsNotOwner": 

                            esq.filters.add("NotCurrentUser", this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 

                            break;   

                    }

 

                    this.reloadGridData();

 

                },

 

 

2 метода, ни один не работает. привязаны к кнопке на странице. 

По логике в разделе должен обновлить и применить фильтр 

Прошу прощения, правильнее будет переопределить метод initQueryFilters и потом вызывать метод reloadGridData. Пример кода:
define("ContactSectionV2", [], function() {
    return {
        entitySchemaName: "Contact",
          attributes: {
            "UsrTest": {
                "dataValueType": Terrasoft.DataValueType.BOOLEAN
         }
        },
        methods: {
            onTestClick: function() {
                this.set("UsrTest", true);
                this.reloadGridData();
            },
              initQueryFilters: function(esq) {
                this.callParent(arguments);
                //номер в пп
                var usrTestFilter = this.get("UsrTest");
                if (usrTestFilter) {
                    esq.filters.add("UsrTestFiltertest", 
                      esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Name", "111"));
                }
            }
        },
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "parentName": "ActionButtonsContainer",
                "propertyName": "items",
                "name": "MainContactSectionButton",
                "values": {
                    itemType: Terrasoft.ViewItemType.BUTTON,
                    caption: "Button test",
                    click: { bindTo: "onTestClick" },
                    "layout": {
                        "column": 1,
                        "row": 6,
                        "colSpan": 1
                    }
                }
            }
        ]/**SCHEMA_DIFF*/
    };
});

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

Всем доброго дня! Подскажите можно ли как-то отфитровать список  в "Фильтры/группы" - "Добавить условие" ? Изменение поведения в Объекте на режим "Никогда" не подходит(нужно видеть фильтры в расширенном режиме). 

Нравится

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

Анастасия, в каждом разделе системы отображение первого поля при быстром поиске заложено в параметре PRIMARY_DISPLAY_COLUMN (Отображаемое значение). Например, для раздела Контакты это поле [ФИО].
В быстром фильтре указывать приоритетность отображения полей нет возможности. Перечень заложен на уровне конфигурации приложения и пользовательскими средствами решить задачу нет возможности.
На практике для фиксирования определенных полей для фильтрации используются быстрые фильтры - это фильтр, который внедряется на страницу раздела средствами разработкой и помогает закрепить несколько полей в шапке раздела для удобного указания параметров фильтрации.
Однако данный вариант также предполагает использование средств разработки. Более детальнее описано в статье по ссылке: https://academy.terrasoft.ua/docs/developer/elements_and_components/bas…

Алёна Доля,

Хотелось бы отредактировать значения именно в базовом списке, 

в "Фильтры/группы" - "Добавить условие" и повыкидывать оттуда не нужные поля. 

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

Есть справочник "Стадия", по нему нужно сделать быстрый фильтр по типу как в расширенном фильтре(т.е с множественным выбором). Как это можно реализовать?

 

Нравится

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

Гусейн, судя по одинаковой иконке, Вы добавили логику для справочника стадий по аналогии с выбором ответственного тут же левее. Так там уже есть множественный выбор, только добавлять ответственных нужно по одному:

Если для стадий реализовали аналогично, там тоже должно такое работать.

 

Идея в быстром фильтре добавить возможность множественного выбора значений уже зарегистрирована.

Зверев Александр,
Да, добавил по типу как с ответственным, но если так делать все работает криво(не подстраивается под нужный справочник). Нужен именно множественный выбор с галками и тд.

Атамогланов Гусейн пишет:
все работает криво(не подстраивается под нужный справочник)

Нужно смотреть, как именно доработали в OpportunitySectionV2, что в результате не так отрабатывает для функций из FixedFilterViewV2 и FixedFilterViewModelV2.

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

Добрый день.

Например имеется объект UsrEntity. Хочу открыть справочник для добавления элемента на деталь с возможностью выбора из списка этого объекта. Но, чтобы в списке НЕ БЫЛО тех элементов, которые удовлетворяют условию UsrEntity.UsrA in existedA && UsrEntity.UsrB in existedB && UsrEntity.UsrC in existedC. Пока вижу только один путь это создать представление в SQL и открывать это представление. А возможно ли сделать подобный фильтр на фронте? Может быть есть возможность сделать кастомный фильтр и вставить в конфиг при открытии справочника?

Нравится

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

Решил задачу. Можно же просто UsrEntity.UsrA not in existedA || UsrEntity.UsrB not in existedB || UsrEntity.UsrC not in existedC.

Но так как по колонке A, я уже фильтровал, достаточно было только B и C. А ещё засунул в группу фильтров, другую группу фильтров. Не знал, что так можно

addRecord: function () {
					let activeRowId = this.get("ActiveRow");
					if (!activeRowId) {
						return;
					}
 
					const gridData = this.getGridData();
					let rowData = gridData.get(activeRowId).values;
					if (rowData.IDSBParent){
						activeRowId = rowData.IDSBParent.value;
						rowData = gridData.get(activeRowId).values;
					}
 
					let filterCollection = Terrasoft.createFilterGroup();
					const productFilter = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
						"IDSBProductId", rowData.IDSBProduct.value);
					filterCollection.add("productFilter", productFilter);					
 
					let existed = [];
					gridData.collection.items.forEach(function(item){
						if (!item.values.IDSBParent){
							return;
						}
 
						if (item.values.IDSBParent.value !== activeRowId){
							return;
						}
 
						existed.push(item.values);
					}, this);
 
					let notExistedFilterCollection = Terrasoft.createFilterGroup();
					notExistedFilterCollection.logicalComparisonTypes = Terrasoft.LogicalOperatorType.OR;
 
					let existsWarehouseFilter = Terrasoft.createColumnInFilterWithParameters("IDSBWarehouseId", existed.map(item => item.IDSBWarehouse.value));
					existsWarehouseFilter.comparisonType = Terrasoft.ComparisonType.NOT_EQUAL;
					notExistedFilterCollection.add(existsWarehouseFilter);
 
					let existsPercentFilter = Terrasoft.createColumnInFilterWithParameters("IDSBPercent", existed.map(item => item.IDSBPercent));
					existsPercentFilter.comparisonType = Terrasoft.ComparisonType.NOT_EQUAL;
					notExistedFilterCollection.add(existsPercentFilter);
 
					filterCollection.add("notExistedFilterCollection", notExistedFilterCollection);
 
					const config = {
						entitySchemaName: "IDSBVwExpiredRemaining",
						multiSelect: true,
						columns: ["IDSBWarehouseId", "IDSBProductId", "IDSBPercent"],
						filters: filterCollection
					};
 
					this.openLookup(config, this.IDSBAddSelectedProducts, this);
				},

 

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

Добрый день!

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

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

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

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

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

Спасибо!

Нравится

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

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

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