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

Например, нам нужно вывести график в итогах с ответственными за лиды, в которых последнее письмо - входящее:

Строим график по объекту Лид, колонка Ответственный. В фильтрах указываем Лид.Активность (по колонке Лид).Дата создания максимум = Текущий год 

и Тип = Email, Тип сообщения = Входящее.

Как взять просто последнюю запись в детали по Дата создания.Максимум без этого "= <Текущий год>"?

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

 

Дополнительно к этому вопросу еще как вывести в отчет текстовое поле из последней записи в детали, например, комментарий к последней активности по лиду?

Нравится

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

Добрый день!
Вы корректно описали взятие самой "молодой" записи из детали. Когда выбираете максимум в дате создания. Почему вы думаете, что фильтр выдает лиды, где входящее письмо не последнее. Если график вывел записи, значит в списке есть письмо с максимальной датой.  Если письма не будет за этот год в лиде, то в график для отображения запись не попадет. Может есть скриншоты примеров, где некорректно выводит и почему?

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

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

Добрый день!

Работаю в разделе Обращения. Необходимо: в случае добавления Подчиненных обращений, отображались только обращения которые соответствуют определенному условию (Категория == Инцидент и т.п.).

Подскажите куда вносить изменения и пример кода.

Нравится

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

Добрый день.

 

Посмотрите эту статью по множественному добавлению записей в деталь.

 

Обратите внимание на функцию openLookupWithMultiSelect в миксине LookupMultiAddMixin.

 

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

 

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

 

Также на Академии есть пост, в котором подробно рассматривается этот вопрос.

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

Разобрался. Спасибо!

Pavel Litvinovich,

 

Рада была помочь)

Все-таки возникла проблема.

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

Работаю в Обращениях. Данную логику применяю в случае добавления на деталь Подчиненные обращения новой записи. Деталь Подчиненные обращения читает данные из объекта Обращения.

Вот мой код:

define("CaseChildCaseDetail", ["LookupMultiAddMixin"], function() {
	return {
		entitySchemaName: "Case",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		mixins: {			
			// Подключение миксина к схеме.
			LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
		},
		methods: {
			init: function() {
                this.callParent(arguments);
				this.mixins.LookupMultiAddMixin.init.call(this);
            },
			getAddRecordButtonVisible: function() {
                //Отображать кнопку добавления если деталь развернута, даже если для детали не реализована страница записи.
                return this.getToolsVisible();
            },
			// Переопределение базового метода.
            // Обработчик события сохранения страницы редактирования детали.
            onCardSaved: function() {
                // Открывает справочное окно с множественным выбором записей.
                this.openLookupWithMultiSelect();
            },
			// Переопределение базового метода добавления записи на деталь.
			addRecord: function() {
				// Открывает справочное окно с множественным выбором записей.
				this.openLookupWithMultiSelect(true);
			},
			// Метод, возвращающий конфигурационный объект для справочного окна.
			getMultiSelectLookupConfig: function() {
				return {
					rootEntitySchemaName: "Case",
					rootColumnName: "Id",
					relatedEntitySchemaName: "Case",
					relatedColumnName: "Id"
				};
			},
			getAdditionalLookupFilters: function() {
				//Отображать только записи Инцидент И НЕ массовый инцидент
				var idCategoryIncident = "1b0bc159-150a-e111-a31b-00155d04c01d";//Категория Инцидент
				var filterGroup = new this.Terrasoft.createFilterGroup();
				filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
				filterGroup.add("OneFilter", this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "OmnMassIncident", false));//Инцидент НЕ массовый
				filterGroup.add("TwoFilter", this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Category", idCategoryIncident));//Категория Инцидент
				return filterGroup;
			},
		}
	};
});

Подскажите что я делаю не правильно.

Pavel Litvinovich,

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

getMultiSelectLookupConfig, стоит проверить, корректно ли указаны значения rootColumnName и relatedColumnName. В вашем случае обращения связаны колонкой ParentCase, но у вас в двух значениях id.

Спасибо! Сделал немного по-другому.

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

Добрый день!

Установила приложение "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.

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