преднастроенная страница
Бизнес-процессы
бизнес-правила

Коллеги, подскажите, как в преднастроенной странице, которая в бизнес-процессах сделать зависимость полей?

Есть два поля "Страны" и "Города" оба поля лукапы. Как при выборе Страны фильтровать значения в поле "Города"?

 

Нравится

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

Евгений, здравствуйте!

Настройка бизнес-правил для преднастроенных страниц реализована в версии 7.12.0. Вы можете настроить бизнес - правила для добавления фильтрации по аналогии с настройкой в мастере раздела.

Для Вашей задачи правило будет выглядеть примерно следующим образом: Если - то.

Показать все комментарии
7.10
bank_customer_journey
преднастроенная страница
Есть атрибут: 

"Amount": {
    dataValueType: Terrasoft.DataValueType.FLOAT,
    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
}

Поле: 

{
    "operation": "insert",
    "name": "Amount",
    "values": {
        "layout": {
            "column": 0,
            "row": 2,
            "colSpan": 12
        },
        "bindTo": "Amount"
    },
    "parentName": "FinApplicationContent",
    "propertyName": "items"
}

Находятся на преднастроенной странице, не привязанной к какому-либо объекту. Страница показывается пользователю в ходе БП. Поля виртуальные,т.е. по результату ввода введенные данные просто попадают в процесс, без записи в какой-либо объект. 

Проблема: нельзя ввести с клавиатуры никакие символы, только ctrl+v.

Примечание: Если установить contentType: Terrasoft.ContentType.TEXT - то можно ввести символы. На странице есть одноименный параметр типа "Дробное число"

Как решить проблему с вводом в данное поле? Что не так?

 

Нравится

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

скорее всего вы обнаружили "дефект", надо бы отписать о нем в ТП

Тем временем, в вашем случае,:

1) попробуйте использовать

Terrasoft.DataValueType.MONEY

в сути то же самое FLOAT (может прокатить laugh)

2) попробуйте не задавать у атрибута явно тип

Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN

 

PS: Если что-то из этого Вам поможет, отпишитесь пожалуйста что именно.



 

 

Первое помогло! Огромная вам благодарность! Все еще стоит писать об этом в ТП?

Рад что удалось помочь.

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

"Amount": {
    dataValueType: Terrasoft.DataValueType.FLOAT,
    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
    precision: 2,
    size: 18
}

говорим спасибо вот этому куску в генераторе

if (column) {
	Ext.apply(floatEdit, {
		decimalPrecision: column.precision
	});
}

В очередной раз ломаем ноги о код террасофта и его "универсальность" и идем дальше

Показать все комментарии
преднастроенная страница
Технические вопросы
7.x

Добрый вечер.
Каким образом передавать параметры из БП в преднастроенную страницу? Требуется передавать, как значение справочника, так и какие-то текстовые/логические данные.
Видео, на которое постоянно ссылаются (https://community.terrasoft.ru/img/video/lms/28/story.html) по-моему уже не является актуальным. По-крайней мере я, повторив все шаги, результата не получил. Есть ли ещё материал, тема на форуме (не нашёл) с более подробным рассмотрением данного вопроса?

Нравится

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

Добрый день!

В структуре преднастроенной страницы определяете параметры в ветке "Параметры", потом в элементе бп присваиваете им значения из парамеров процесса.

Также рекомендую ознакомиться с следующей темой http://www.community.terrasoft.ru/forum/topic/25237

Показать все комментарии
преднастроенная страница
Технические вопросы
7.x

Добрый день!

Подскажите, как передавать параметры в преднастроенную страницу в БП и как потом получить значения заполненных полей на этой странице, для дальнейшего использования в БП.

Сейчас показывается, что у страницы нет параметров:

http://shot.qip.ru/00SkLf-415RJco7V2/

Заранее спасибо за совет.

Нравится

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

Насколько я помню в схеме страницы, справа (где localizableStrings), есть пункт Parameters. Накидайте туда переменных, сохраните страницу и попробуйте заново добавить её в бп

Здравствуйте! Инструкция по использованию элемента и созданию страницы: https://academy.terrasoft.ru/documents/technic-sdk/7-10/sozdanie-detali…

Показать все комментарии
преднастроенная страница
Технические вопросы
7.x

В бизнес процессе вызываю преднастроенную страницу со своей логикой. Но после ее вызова в БП висит "Выполняется" на преднастроенной страницы. Как сделать чтобы преднастроенная страница считалась "Выполненной" и продолжить выполнение бизнес процесса?

Нравится

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

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

Для того, чтобы элемент [Преднастроенная страница] считался выполненным и процесс перешел к выполнению следующего элемента необходимо – в схеме страницы вызывать метод completeExecution().
Пример можно найти схеме страницы распределения лида - LeadManagementDistributionPageV2

Показать все комментарии
Активность
преднастроенная страница
Технические вопросы
7.x

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

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

БП работает корректно, но когда мы идем по ветке с преднастроенной страницей, то она не отображается в разделе активности. В журнале процессов она отображается.
Как сделать так, чтобы преднастроенные и автогенерируемые страницы отображались в разделе Активности?
При этом открытие страницы редактирования отображается в активностях корректно.

Версия 7.10.0.1742

Нравится

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

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

Базовая логика приложения - элемент "Страница редактирования" создает в системе техническую активность. Элемент "Преднастроенная страница"/"Автогененрируемая страница" активность не создает. По этой причине при выполнении этих элементов активность создана не будет.

"Демьяник Алексей" написал:Базовая логика приложения - элемент "Страница редактирования" создает в системе техническую активность. Элемент "Преднастроенная страница"/"Автогененрируемая страница" активность не создает. По этой причине при выполнении этих элементов активность создана не будет.

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

"Демьяник Алексей" написал:

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

Базовая логика приложения - элемент "Страница редактирования" создает в системе техническую активность. Элемент "Преднастроенная страница"/"Автогененрируемая страница" активность не создает. По этой причине при выполнении этих элементов активность создана не будет.


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

"Zaitova Liubov" написал:а нет никакой возможности сделать так, чтобы активность все таки появлялась?

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

"Максим Шевченко" написал:Нет, но можете не использовать преднастроенная\автогенерируемая,

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

"Владимир Соколов" написал:Да, иногда необходимо ввести дату. Или выбрать сотрудника из списка. Или ввести число. Для каждой такой страницы создавать свой раздел?

Можете сделать один универсальный, с множеством страниц редактирования. В любом случае зарегистрируем проблему, что пользователям хочется видеть служебную активность и для "преднастроенная\автогенерируемая" возможно реализуем её в следующих версиях, но технической необходимости в этом нет.

С другой стороны, вы так же можете создать обычную активность в рамках вашего БП, а открываемую "преднастроенная\автогенерируемая" страницу, привязать к ней, тогда в самой записи будет кнопка продолжения процесса:

И далее по процессу данную активность можно будет завершить. Как вариант.

Проблему зарегистрировали.

"Максим Шевченко" написал:

С другой стороны, вы так же можете создать обычную активность в рамках вашего БП, а открываемую "преднастроенная\автогенерируемая" страницу, привязать к ней, тогда в самой записи будет кнопка продолжения процесса:


а как страницу можно привязать к активности?

"Максим Шевченко" написал:В любом случае зарегистрируем проблему, что пользователям хочется видеть служебную активность

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

"Владимир Соколов" написал:И любой может взять и заполнить данные в этой странице

В любом из вышеописанных обходных путей, будь-то с созданием активности, либо кастомного объекта, на данную активность или объект можно раздать права.
Если вопрос только в правах на использование "преднастроенная\автогенерируемая" страницы, то указывайте конкретного пользователя в "Кому отобразить страницу?".

Показать все комментарии
бизнес-процесс
преднастроенная страница
Технические вопросы
7.x

Добрый день, подскажите пожалуйста как передать параметры в преднастроенную страницу в бизнеспроцессе, и как их потом прочитать дальше в БП?

Нравится

1 комментарий
преднастроенная страница
Технические вопросы
7.x

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

Возникла следующая проблема: создали преднастроенную страницу (добавили нужные поля и кнопки). На странице должно быть 4 LOOKUP поля и 1 TEXT. Лукап поля должны заполняться автоматически и быть недоступными для редактирования. Заполнение полей должно происходить в процессе из объекта Юр. Лиц, но не получается заполнить эти поля (не отображаются на странице).

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

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

С уважением,
Дмитрий

 

define("RefillManagerPageV2", ["CustomProcessPageV2Utilities", "ConfigurationEnums"],
        function(ProcessPageUtilities, Enums) {
                return {
                        mixins: {
                                BaseProcessViewModel: "Terrasoft.CustomProcessPageV2Utilities"
                        },
                        attributes: {
                                "Account": {
                                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                                        referenceSchemaName: "Account"
                                },
                                "Category": {
                                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                                        referenceSchemaName: "AccountCategory"
                                },
                                "CurrentManager": {
                                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                                        referenceSchemaName: "Contact"
                                },
                                "NewManager": {
                                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                                        referenceSchemaName: "Contact"
                                },
                                "RefillReason": {
                                        name: "Reason",
                                        dataValueType: Terrasoft.DataValueType.TEXT
                                }
                        },
                        methods: {
        /*                      onEntityInitialized: function() {
                                        this.callParent(arguments);
                                        var processData = this.get("ProcessData");
                                        var processParameters = processData.parameters;
                                        if (processParameters) {
                                                this.set("CurrentManager", processParameters.CurrentManager);
                                                this.set("NewManager", processParameters.NewManager);
                                                this.set("Account", processParameters.Account);
                                                this.set("Category", processParameters.Category);
                                                this.set("RefillReason", processParameters.RefillReason);
                                        }
                                },*/

                               
                                getHeader: function() {
                                        return this.get("Resources.Strings.HeaderLcz");
                                },
                                initHeaderCaption: Ext.emptyFn,
                               
                                onNextButtonClick: function() {
                                        this.acceptProcessElement("NextCode");
                                },
                                onDiscardChangesClick: function() {
                                        this.cancelProcessElement("CancelCode");
                                },
                                loadVocabulary: function(args, tag) {
                                        var column = this.getColumnByName(tag);
                                        args.schemaName = column.referenceSchemaName;
                                        this.callParent(arguments);
                                }
                        },
                        diff: /**SCHEMA_DIFF*/[
                                {
                                        "operation": "remove",
                                        "name": "CloseButton"
                                },
                                {
                                        "operation": "remove",
                                        "name": "actions"
                                },
                                {
                                        "operation": "remove",
                                        "name": "SaveButton"
                                },
                                {
                                        "operation": "remove",
                                        "name": "DelayExecutionButton"
                                },
                                {
                                        "operation": "remove",
                                        "name": "ViewOptionButton"
                                },
                                {
                                        "operation": "insert",
                                        "parentName": "LeftContainer",
                                        "propertyName": "items",
                                        "name": "SendToApproveButton",
                                        "values": {
                                                caption: { bindTo: "Resources.Strings.SendToApproveButtonCaption" },
                                                itemType: Terrasoft.ViewItemType.BUTTON,
                                                classes: {textClass: "actions-button-margin-right"},
                                                style: Terrasoft.controls.ButtonEnums.style.GREEN,
                                                click: {bindTo: "onNextButtonClick"}
                                        }
                                },
/*                              {
                                        "operation": "insert",
                                        "parentName": "LeftContainer",
                                        "propertyName": "items",
                                        "name": "NotSendToApproveButton",
                                        "values": {
                                                caption: { bindTo: "Resources.Strings.NotSendToApproveButtonCaption" },
                                                itemType: Terrasoft.ViewItemType.BUTTON,
                                                classes: {textClass: "actions-button-margin-right"},
                                                style: Terrasoft.controls.ButtonEnums.style.RED,
                                                click: {bindTo: "onDiscardChangesClick"}
                                        }
                                },*/

                                {
                                        "operation": "insert",
                                        "parentName": "Header",
                                        "propertyName": "items",
                                        "name": "CurrentManager",
                                        "values": {
                                                "caption": { "bindTo": "Resources.Strings.CurrentManagerLcz" },
                                                "contentType": Terrasoft.ContentType.LOOKUP,
                                                "bindTo": "CurrentManager",
                                                "layout": { "column": 0, "row": 2, "colSpan": 12 },
                                                "enabled": true
                                        }
                                },
                                {
                                        "operation": "insert",
                                        "parentName": "Header",
                                        "propertyName": "items",
                                        "name": "NewManager",
                                        "values": {
                                                "caption": { "bindTo": "Resources.Strings.NewManagerLcz" },
                                                "contentType": Terrasoft.ContentType.LOOKUP,
                                                "bindTo": "NewManager",
                                                "layout": { "column": 0, "row": 3, "colSpan": 12 },
                                                "enabled": true
                                        }
                                },
                                {
                                        "operation": "insert",
                                        "parentName": "Header",
                                        "propertyName": "items",
                                        "name": "Account",
                                        "values": {
                                                "caption": { "bindTo": "Resources.Strings.AccountLcz" },
                                                "contentType": Terrasoft.ContentType.LOOKUP,
                                                "bindTo": "Account",
                                                "layout": { "column": 0, "row": 0, "colSpan": 12 },
                                                "enabled": true
                                        }
                                },
                                {
                                        "operation": "insert",
                                        "parentName": "Header",
                                        "propertyName": "items",
                                        "name": "Category",
                                        "values": {
                                                "caption": { "bindTo": "Resources.Strings.CategoryLcz" },
                                                "contentType": Terrasoft.ContentType.LOOKUP,
                                                "bindTo": "Category",
                                                "layout": { "column": 0, "row": 1, "colSpan": 12 },
                                                "enabled": true
                                        }
                                },
                                {
                                        "operation": "insert",
                                        "parentName": "Header",
                                        "propertyName": "items",
                                        "name": "RefillReason",
                                        "values": {
                                                "caption": { "bindTo": "Resources.Strings.RefillReasonLcz" },
                                                "contentType": Terrasoft.ContentType.LOOKUP,
                                                "bindTo": "RefillReason",
                                                "layout": { "column": 0, "row": 4, "colSpan": 12 },
                                                "enabled": true
                                        }
                                }
                        ]/**SCHEMA_DIFF*/,
                        userCode: {}
                };
        });

 

Нравится

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

Добрый день.

Для решения Вашей задачи необходимо:

1) Заполнить свойство Parameters в структуре схеме необходимыми Вам атрибутами.
2) Добавить элемент "Преднастроенная страница" в БП.
3) Убедиться, что у элемента появились необходимые параметры.
3) Заполнять в БП параметры элемента (пункт 2).

При открытии карточки атрибуты уже будут присутствовать.

"Мотков Илья" написал:

1) Заполнить свойство Parameters в структуре схеме необходимыми Вам атрибутами.


Илья, не совсем понятно о каких Parameters идет речь.
Подскажите, пожалуйста, где и что нужно прописать, чтобы иметь возможность передавать параметры в преднастроенную страницу из других элементов БП и как обрабатывать результаты, полученные в преднастроенной странице дальше в других элементах БП??

Добрый день, Дмитрий.

Наглядно показал на скриншоте.

Примеры работы с параметрами в js коде, Вы можете посмотреть в схеме LeadManagementDistributionPageV2

Тёскин Дмитрий Валерьевич,

Вы прикалываетесь? серьезно? в 

LeadManagementDistributionPageV2 нет параметров.

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

Показать все комментарии
7.5
преднастроенная страница
Технические вопросы
7.x

Добрый день.
Прошу помочь в решении следующей задачи.
Есть преднастроенная страница, в которой необходимо реализовать заполнение виртуального поля по условию.
При выполнении скрипта, указанного в dependencies, атрибут "OwnersString" заполняется , но в поле карточки значение не отображается.

Предоставляю упрощённый пример моего кода:

define("SxAssignmentPreconfiguredPageV2", ["CustomProcessPageV2Utilities"],
    function() {
        return {
            messages: {},
            mixins: {
                BaseProcessViewModel: "Terrasoft.CustomProcessPageV2Utilities"
            },
            attributes: {
                "IsAssignment": {
                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                    dataValueType: Terrasoft.DataValueType.BOOLEAN,
                    caption: { bindTo: "Resources.Strings.IsAssignmentCaption" }
                },
               "OwnersString": {
                   type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                   dataValueType: Terrasoft.DataValueType.String,
                   dependencies: [{
                       columns: ["IsAssignment"],
                       methodName: "onIsAssignmentChanged"
                   }]
               }

            },
            methods: {
                onIsAssignmentChanged: function(){
                    debugger;
                  if(this.get("IsAssignment"))
                      this.set("OwnersString", "Поле заполнено");
                },
                                        /**
                                 * @overridden
                                 * @returns {string}
                                 */
                                getHeader: function() {
                                        return "PreconfiguredPageV2";
                                },
                                /**
                                 * @overridden
                                 */
                                onEntityInitialized: function() {
                                        this.callParent();
                                },
                                /**
                                 * @overridden
                                 */
                                initHeaderCaption: Ext.emptyFn,
                                /**
                                 * @protected
                                 * @overridden
                                 */
                                initPrintButtonMenu: Ext.emptyFn,
                                /**
                                 * @overridden
                                 * @param {Object} args Параметры
                                 * @param {Object} tag Тег
                                 */
                                loadVocabulary: function(args, tag) {
                                        args.schemaName = this.model.attributes[tag].referenceSchemaName;
                                        this.callParent(arguments);
                                },
                                /**
                                 * @overridden
                                 */
                                onCloseCardButtonClick: function() {
                                        this.sandbox.publish("BackHistoryState");
                                },
                                /**
                                 * @protected
                                 */
                                onNextButtonClick: function() {
                                        this.acceptProcessElement("NextButton");
                                }
            },
            diff:[
                {
                    "operation": "remove",
                    "name": "CloseButton"
                },
                {
                    "operation": "remove",
                    "name": "actions"
                },
                {
                    "operation": "remove",
                    "name": "SaveButton"
                },
                {
                    "operation": "remove",
                    "name": "DelayExecutionButton"
                },
                {
                    "operation": "remove",
                    "name": "ViewOptionsButton"
                },
                {
                    "operation": "insert",
                    "parentName": "Header",
                    "propertyName": "items",
                    "name": "HeaderLabel",
                    "values": {
                        layout: {column: 0, row: 0, colSpan: 12},
                        "itemType": Terrasoft.ViewItemType.LABEL,
                        "caption": { "bindTo": "Resources.Strings.HeaderLabelCaption" },
                        "labelClass": ["new-record-header-caption-label"]

                        /*"classes": {
                            "labelClass": [
                                "t-label "
                            ],
                            "wrapClass": [
                                "label-wrap"
                            ]
                        }*/

                    }
                },
                {
                    // Метаданные для добавления кнопки [Следующий]
                    "operation": "insert",
                    "parentName": "LeftContainer",
                    "propertyName": "items",
                    "name": "NextButton",
                    "values": {
                        caption: {bindTo: "Resources.Strings.NextButtonCaption"},
                        itemType: Terrasoft.ViewItemType.BUTTON,
                        classes: {textClass: "actions-button-margin-right"},
                        style: Terrasoft.controls.ButtonEnums.style.GREEN,
                        click: {bindTo: "onNextButtonClick"}
                    }
                },
                {
                    "operation": "insert",
                    "name": "IsAssignment",
                    "parentName": "Header",
                    "propertyName": "items",
                    "values":{
                        bindTo: "IsAssignment",
                        caption : {bindTo: "Resources.Strings.IsAssignmentCaption"},
                        layout: {column: 0, row: 1, colSpan: 6}
                    },
                    "index": 0
                },
                {
                    "operation": "insert",
                    "name": "OwnersString",
                    "parentName": "Header",
                    "propertyName": "items",
                    "values":{
                        bindTo: "OwnersString",
                        caption :  {
                            "bindTo": "Resources.Strings.OwnersStringCaption"
                        },
                        layout: {column: 0, row: 2, colSpan: 6},
                        "contentType": 0,
                        "controlConfig": {
                            "className": "Terrasoft.TextEdit"
                        }
                    }
                }


            ]
        };
    });

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

Нравится

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

Ошибка в типе атрибута, у системного перечисления DataValueType нет значения "String", но есть значение TEXT.

Спасибо, помогло.

Показать все комментарии
преднастроенная страница
справочник
Технические вопросы
7.x

Здравствуйте!
Пытаюсь создать преднастроенную страницу, содержащую справочники. Поля на странице относятся к разным объектам. Делал аналогично примеру из конфигурации (PreconfiguredPageV2)
При открытии справочник не получает верный конфиг.
При использовании примера из конфигурации ситуация в точности повторяется.
Подскажите пожалуйста, как побороть данную проблему?

Нравится

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

Уже разобрался.
Если кому-то понадобится, то необходимо переопределить 2 метода: LoadVocabulary и getLookupPageConfig

 loadVocabulary: function(args, tag) {
                        var column = this.getColumnByName(tag);
                        args.schemaName = column.referenceSchemaName;
                        this.callParent(arguments);
                    },
 
                    /**
                     * Возвращает настройки страницы выбора из справочника.
                     * @private
                     * @param {Object} args Параметры.
                     * @param {String} columnName Название колонки.
                     * @return {Object} Настройки страницы выбора из справочника.
                     */
                    getLookupPageConfig: function(args, columnName) {
                        var config = {
                            entitySchemaName: args.schemaName,
                            multiSelect: false,
                            columnName: columnName,
                            columnValue: this.get(columnName),
                            searchValue: args.searchValue,
                            filters: this.getLookupQueryFilters(columnName)
                        };
                        this.Ext.apply(config, this.getLookupListConfig(columnName));
                        return config;
                    }

Возник еще один вопрос. Как сделать,чтобы в преднастроенной странице работала вся логика справочных полей?
Не работает фильтрация "на лету", когда пишешь в поле справочника и подтягиваются отфильтрованные данные (именно на странице, а не в окне лукапа)

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

Думаю, что по картинке станет понятна задача.
В БП используется преднастроенная страница. Кажется, что в ней не выполнилась подписка на базовые события для полей типа LOOKUP, либо я не подключил какой-то базовый модуль. Не могу понять, что именно. В обычных страницах при нажатии стрелок или начав писать текст в поле справочника мы получаем подсказку по наполнению, а в моем случае такой функционал не работает.

Полный код во вложении
preconfuguredpage.txt

Посмотрите в сторону схемы автогенерируемой страницы (AutoGeneratedPageV2) и ее реализаций loadVocabulary и остальных.
В автогенерируемых страницах фильтрация происходит.
/

И еще одну старую тему попробую оживить...

Может приходилось кому делать преднастроенную страницу с набором кнопок быстрого выбора даты, как в фильтре раздела активности (см аттач)?

"Александр Кудряшов" написал:

И еще одну старую тему попробую оживить...

Может приходилось кому делать преднастроенную страницу с набором кнопок быстрого выбора даты, как в фильтре раздела активности (см аттач)?

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

filter.jpg10.46 кб

Александр, а то, что на SDK описано не подходит? Если вы хотите не в шапке страницы реализовать, то возможно для примера подходит страница "Отчет о проделанной работе" (раздел "Активности").

"Мотков Илья" написал:то, что на SDK описано

Илья, за ссылку спасибо! Посмотрел, но это не мой вариант, так как у меня не раздел (и соответственно нет базовой логики, способной подцепить предлагаемый модуль). А в преднастроенной странице (наследуемой от страницы редактирования) такой блок просто так не добавится... надо писать именно контролы и именно ручками, а еще обработчики событий на них... либо как то уж очень исхитриться и прицепить готовый модуль, но методика должна быть более изощренная, чем в sdk

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

"Александр Кудряшов" написал:
Мотков Илья пишет:

то, что на SDK описано

Илья, за ссылку спасибо! Посмотрел, но это не мой вариант, так как у меня не раздел (и соответственно нет базовой логики, способной подцепить предлагаемый модуль). А в преднастроенной странице (наследуемой от страницы редактирования) такой блок просто так не добавится... надо писать именно контролы и именно ручками, а еще обработчики событий на них... либо как то уж очень исхитриться и прицепить готовый модуль, но методика должна быть более изощренная, чем в sdk

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

Но фильтры же правильней использовать для раздела или детали :wink:
Если уже для самообразования. то можно попробовать следующий алгоритм:

1. Модуль фильтров можно подключить как обычный модуль. Другой вопрос, что в раздел и деталь это сделать можно легко.
2. Как это примерно сделать – загрузить модуль и поддержать сообщения для работы с ним.

Сперва нужно поддержать сообщения

Потом на них сделать такую логику:

Для добавления фиксированных фильтров нужно сообщение

Его код должен возвращать конфиг, из статьи - http://www.academy.terrasoft.ru/documents/docs/technic/SDK/7.7.0/AddFix…

Загрузка самого модуля фильтров стандартная -

this.sandbox.loadModule("QuickFilterModuleV2", {
               renderTo: "SectionFiltersContainer",// куда рисовать, контейнер в diff
               id: this.getQuickFilterModuleId()// тут уникальный id модуля
});

Для получения фильтров нужно подписаться на сообщение:

На 7.8 необходимо на преднастроенную страницу добавить справочное поле.
Добавляю в attributes:

 "Contact": {
                dataValueType: this.Terrasoft.DataValueType.LOOKUP,
                type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                referenceSchemaName: "Contact",
            },

Добавляю элемент в diff.
Поле появляется, но при нажатии на лупу появляется ошибка:
Ошибка
на строчке:

 args.schemaName = this.model.attributes[tag].referenceSchemaName;

в методе:

loadVocabulary: function(args, tag) {
  args.schemaName = this.model.attributes[tag].referenceSchemaName;
  this.callParent(arguments);
},

Здравствуйте, Игорь.

Попробуйте добавить свойство usLookup к атрибуту Contact:

isLookup: true,

"Мотков Илья" написал:Здравствуйте, Игорь.

Попробуйте добавить свойство usLookup к атрибуту Contact:

isLookup: true,


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

Игорь, для исправления данного поведения, необходимо добавить зависимость от LookupUtilities. А также переопределить метод loadVocabulary аналогично схеме AutoGeneratedPageV2.

Полный листинг кода схемы:

define("UsrSome", ["LookupUtilities", "CustomProcessPageV2Utilities"],
	/**
	 * @class Terrasoft.configuration.PreconfiguredPageV2
	 * Пример преднастроенной страницы без EntitySchema по процессу
	 */
	function(LookupUtilities) {
		return {
			mixins: {},
			attributes: {
				"UsrContact": {
					dataValueType: this.Terrasoft.DataValueType.LOOKUP,
					type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
					isLookup: true,
					referenceSchemaName: "Contact",
				},
			},
			rules: {},
			details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
			methods: {
				findEntityColumn: function(columnName) {
					var column = this.callParent(arguments);
					if (!column) {
						column = this.getColumnByName(columnName);
					}
					return column;
				},
				loadVocabulary: function(args, tag) {
					var column = this.findEntityColumn(tag);
					if (!column || !column.isLookup) {
						return;
					}
					var entitySchemaName = column.referenceSchemaName;
					var config = {
						entitySchemaName: entitySchemaName,
						multiSelect: false,
						columnName: tag,
						columnValue: this.get(tag),
						searchValue: args.searchValue
					};
					var handler = function(args) {
						var columnName = args.columnName;
						var collection = args.selectedRows.collection;
						if (collection.length > 0) {
							this.set(columnName, collection.items[0]);
						}
					};
					LookupUtilities.Open(this.sandbox, config, handler, this, null, false, false);
				},
				init: function(){
					this.callParent(arguments);
					document.scope = this;
				},
			},
			diff: /**SCHEMA_DIFF*/[
				{
					"operation": "remove",
					"name": "TextParameter1"
				},
				{
					"operation": "insert",
					"parentName": "GeneralInfoBlock",
					"propertyName": "items",
					"name": "UsrContact",
					"values": {
						caption: "UsrContact",
						contentType: Terrasoft.ContentType.LOOKUP,
						bindTo: "UsrContact",
						layout: {column: 0, row: 0, colSpan: 12}
					}
				}
			]/**SCHEMA_DIFF*/,
			userCode: {}
		};
	});
Показать все комментарии