Не получается вывести CheckBox на странице.

Не получается вывести checkbox на странице. Для его вывода написал следующий код.
В секции attributes:

"IsStreetInFIAS": {
        name: "IsStreetInFIAS",
        dataValueType: Terrasoft.DataValueType.BOOLEAN,
        type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
        value: false
}

В секции diff:

{
        "operation": "insert",
        "parentName": "Header",
        "propertyName": "items",
        "name": "IsStreetInFIAS",
        "values": {
                "bindTo": "IsStreetInFIAS",
                "caption": {
                        bindTo: "Resources.Strings.IsStreetInFIAS_checkbox_Caption"
                },
                "layout": {"column": 1, "row": 5, "colSpan": 1},
                "controlConfig": {
                        "className": "Terrasoft.CheckBoxEdit",
                        "checkedchanged": {
                                "bindTo": "OnIsStreetInFIASChanged"
                        }
                "checked": false
        }
}

При запуске процесса вывода страницы, содержащей CheckBoxEdit, в окне консоли отладчика браузера выводится следующее сообщение об ошибке: "Свойство checked Не было определено в классе Terrasoft.controls.Label". Как мне поправить исходник, чтобы чекбокс выводился?

Нравится

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

Евгений добрый день!!!

привожу пример как создать к примеру "Напоминания ответственному", как изображено на картинке ниже:

....
            attributes: {
                /**
                 * Напомнить ответственнному
                 */
                "UpoRemindToOwner": {
                    dataValueType: Terrasoft.DataValueType.BOOLEAN,
                    dependencies: [
                        {
                            columns: ["UpoRemindToOwner"],
                            methodName: "onRemindToOwnerChanged"
                        }
                    ]
                }
            },
....
            methods: {
                /**
                 * Обработчик события изменения поля Напомнить ответсвенному
                 * @protected
                 */
                onRemindToOwnerChanged: function() {
                    var remindToOwner = this.get("UpoRemindToOwner");
                    if (remindToOwner) {
                        var startDate = this.Terrasoft.deepClone(this.get("UpoStartDate"));
                        if (!Ext.isDate(startDate)) {
                            return;
                        }
                        startDate = this.Terrasoft.clearSeconds(startDate);
                        this.set("UpoRemindToOwnerDate", startDate);
                        this.set("UpoRemindToOwnerDateEnabled", true);
                    } else {
                        this.set("UpoRemindToOwnerDate", null);
                        this.set("UpoRemindToOwnerDateEnabled", false);
                    }
                }
            },
....
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "insert",
                    "parentName": "GeneralInfoLeft_Remind",
                    "propertyName": "items",
                    "name": "UpoRemindToOwner",
                    "values": {
                        "bindTo": "UpoRemindToOwner",
                        "layout": { "column": 0, "row": 1, "colSpan": 12 },
                        "labelConfig": {
                            "caption": { "bindTo": "Resources.Strings.RemindToOwnerCaption" }
                        }
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "GeneralInfoLeft_Remind",
                    "propertyName": "items",
                    "name": "UpoRemindToOwnerDate",
                    "values": {
                        "bindTo": "UpoRemindToOwnerDate",
                        "layout": { "column": 12, "row": 1, "colSpan": 12 },
                        "enabled": { "bindTo": "UpoRemindToOwnerDateEnabled" },
                        "labelConfig": {
                            "caption": { "bindTo": "Resources.Strings.RemindDateCaption" }
                        }
                    }
                },
            ]/**SCHEMA_DIFF*/,

если разделить на этапы:
1. В Аттрибутах создаем и описываем атрибут "UpoRemindToOwner" - это и есть CheckBox поле, система при генерации страницы и выводе на экран по типу поля сама определяет, что это CheckBox поле и выводит его на экран.
2. в Методах создаем метод "onRemindToOwnerChanged", который контролирует изменения реквизита на экране
3. Выводим на экран.

Выше привел пример кода.

Михаил, извините, а что это за контейнер GeneralInfoLeft_Remind? Какой-то контейнер, созданный самим разработчиком (в данном случае вами)?
У меня чекбокс так и не выводится ни с

"parentName": "GeneralInfoLeft_Remind"

ни с

"parentName": "Header"

Хотя ошибок ни при публикации модуля страницы, ни при запуске процесса, открывающего эту страницу, не выдаётся ни в первом, ни во втором случае.

Чекбокс появился. Я закомментировал

columns: ["UpoRemindToOwner"]

и он стал визуализироваться.

Большое спасибо за помощь, Михаил.

Евгений мой пример полностью копипастить не нужно, это пример.

"parentName": "GeneralInfoLeft_Remind"

да это мой GRID_LAYOUT. в вашем случае это может быть совсем иной GRID_LAYOUT, но не забываем следующее:
1. Прежде чем вывести информацию на экран требуется схематично, на листе пумаге, в графическом редакторе разрисовать схематично Контейнеры, Назначить им имя Классов (если потребуется верстка, то по имени класса контейнера, мы обращаемся к нему), и далее пишем код. Не забываем, что в BPMOnline используется технология Bootstrap для визуализации и отображении информации на экране.
2. Прошу отдельно изучить и ознакомиться как строятся и формируются страницы Bootstrap. Я это все вам Евгений рекомендую, чтобы вы в будущем, прежде чем писать код для начало рисовали схематично свою страницу. Понимали в каких контейнерах где что будет располагаться, понимали какие стили верстки требуется применить дополнительно, чтобы визуально было все эстетично и красиво.
3. На схематично созданной страницы, описали бы для начала какие поля будут изменяемыми, какие поля будут зависимыми. Какие события будут получены экранной формой, какие события будут переданы и какому адресату.
4. И только после этого приступать к программированию.

как я вам и говорил ранее Евгений. Чтобы мы с вами говорили на одном языке, прошу вас записаться на сайте Академия Террасофт на обучение по программированию на платформе.

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

Спасибо за помощь и поддержку, Михаил. Checkbox воспроизвёлся - отобразился на экране. Ошибок, при этом, не было. У меня сейчас такая ситуация, что приходится работать - рисовать страницы на Jscript и вместе с этим изучать этот язык, т.к. я с ним раньше никогда не сталкивался. Ещё раз благодарю за помощь.

Добрый день Евгений!!!

рекомендую в первую очередь прочесть информацию опубликованную на Академии террасофт. Вот ссылка на SDK по платформе SDK BPMOnline 7.6

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