Не работает lookup-поле на странице.

В BPMonline 7.6 Bank Sales в модуле страницы нужно сделать lookup-поле по справочнику "Страна" (Country) Я определяю lookup-поле следующим образом. В секции attributes пишу:

"Country": {
        name: "Country",
        caption: "Страна",
        dataValueType: Terrasoft.DataValueType.LOOKUP
}

В секции diff пишу:
{
        "operation": "insert",
        "parentName": "Header", // Здесь по-моему правильно.
        "propertyName": "items",
        "name": "Country",
        "values": {
                            "bindTo": "Country",
                            "layout": { "column": 1, "row": 1, "colSpan": 12 },
                            "caption": { "bindTo": "Resources.Strings.CountryFieldCaption" },
                            "contentType": Terrasoft.ContentType.ENUM,
                            "enabled": true
                      }
}

Опытному человеку такой код может показаться безграмотным. Но я до сегодняшнего дня не занимался описанием lookup-полей на javascript в модулях страниц. При запуске процесса, визуализирующего страницу, которая содержит это lookup-поле, в окне консоли отладчика браузера выводится следующая ошибка: Uncaught TypeError: Cannot set property 'resources' of undefined в строке 227 в модуле SchemaBuilderV2.js . Когда я перехожу к этому месту, то там в коде:
function(next) {
      this.getSchemaResources(schemaName, function(resources) {
             schema.resources = resources;
             next();
      }, this, isParent);
}

строка schema.resources = resources; подчёркнута красным - знак ошибки. Модуль SchemaBuilderV2.js - это, разумеется, не мой, а библиотечный - разработки Terrasoft. Мой, в котором я пытаюсь определить lookup, называется по другому. Напишите, пожалуйста, что мне нужно поправить в моём коде описания lookup-поля для того, чтобы это lookup-поле заработало?

Нравится

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

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

на странице редактирования, через Админку, вы создали Локализированную строку? в коде "Resources.Strings.CountryFieldCaption" данная строка, при выполнения биндинга, ищет Локализированную строку, и если не находит, выдет ошибку. Ключ "caption" нужно использовать если к примеру в схеме таблицы поле названо "Страна", а вы желаете его назвать по иному. в секцию "attributes" необязательно добавлять и описывать поле, если над данным полем ничего дополнительно не требуется делать, накладывать к примеру фильтры, выбирать из справочника дополнительные поля и т.д.

Евгений, вы не добавили стринг "CountryFieldCaption"

Да, добавил в самом начале перед первой публикацией модуля в раздел LocalizableStrings.

Евгений, ошибка пропала или есть до сих пор? если есть до сих пор, прошу пожалуйста во вложение прикрепить код схемы страницы редактирования. Чтобы проанализировать и сказать где могла быть допущена синтаксическая ошибка. Спасибо!!!

Ошибка не пропала. Исходник в текстовом файле ContactPersonInfoModule.txt. Модуль унаследован от Базовой схемы карточки из пакета NUI.

Скриншот открытой страницы "RIBContactPersonsInfoModule" из Админки еще скиньте. Чтобы увидеть глазами ее. Спасибо!!!

Вот она:

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

я просил у вас совсем другое. я просил зайти под правами Администратора "Дизайнер системы" --> "Управление конфигурацией" --> "Конфигурация", открыть на экране замещенную схему "RIBContactPersonsInfoModule", спозиционировать курсор на Локализированной строке "CountryFieldCaption" и сделать скриншот. Далее выложить на форум. Это все требуется сделать в BPMOnline 7.6.

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

Михаил, извините, пожалуйста. "RIBContactPersonsInfoModule" это не замещённый модуль, а один из моих прикладных модулей и в define модуля страницы, о котором мы говорим в этом посте, его название попало случайно. Сейчас я в define поменял это название на то, которое должно быть - "RIBRegistrationAddressByPassportPage" и поле "Страна" начало выводиться. НО выводится оно всё равно не так как мне нужно. Оно выводится, как поле- выпадающий список, в правой части которого присутствует значок "стрелка вниз", а мне нужно, чтобы оно выводилось как поле-выпадающий список, в правой части которого присутствует значок "лупа". Если возможно, то помогите мне разобраться с этим. Буду вам очень благодарен.

Евгений, я вам все верно описал. Если вы желаете иметь поле Выбора, а не выпадающий список, тогда удаляете  "contentType": Terrasoft.ContentType.ENUM, и будет у вас поле с возможностью открыть форму выбора.

Спасибо большое, Михаил. Получилось. Пока вопрос закрыт. Ещё раз благодарю.

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