В BPMonline 7.6 Bank Sales в модуле страницы нужно сделать lookup-поле по справочнику "Страна" (Country) Я определяю lookup-поле следующим образом. В секции attributes пишу:
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 . Когда я перехожу к этому месту, то там в коде:
this.getSchemaResources(schemaName, function(resources) {
schema.resources = resources;
next();
}, this, isParent);
}
строка schema.resources = resources; подчёркнута красным - знак ошибки. Модуль SchemaBuilderV2.js - это, разумеется, не мой, а библиотечный - разработки Terrasoft. Мой, в котором я пытаюсь определить lookup, называется по другому. Напишите, пожалуйста, что мне нужно поправить в моём коде описания lookup-поля для того, чтобы это lookup-поле заработало?
Нравится
Добрый день Евгений!!!
на странице редактирования, через Админку, вы создали Локализированную строку? в коде "Resources.Strings.CountryFieldCaption" данная строка, при выполнения биндинга, ищет Локализированную строку, и если не находит, выдет ошибку. Ключ "caption" нужно использовать если к примеру в схеме таблицы поле названо "Страна", а вы желаете его назвать по иному. в секцию "attributes" необязательно добавлять и описывать поле, если над данным полем ничего дополнительно не требуется делать, накладывать к примеру фильтры, выбирать из справочника дополнительные поля и т.д.
Да, добавил в самом начале перед первой публикацией модуля в раздел LocalizableStrings.
Евгений, ошибка пропала или есть до сих пор? если есть до сих пор, прошу пожалуйста во вложение прикрепить код схемы страницы редактирования. Чтобы проанализировать и сказать где могла быть допущена синтаксическая ошибка. Спасибо!!!
Ошибка не пропала. Исходник в текстовом файле ContactPersonInfoModule.txt. Модуль унаследован от Базовой схемы карточки из пакета NUI.
Скриншот открытой страницы "RIBContactPersonsInfoModule" из Админки еще скиньте. Чтобы увидеть глазами ее. Спасибо!!!
Евгений день добрый!!!
я просил у вас совсем другое. я просил зайти под правами Администратора "Дизайнер системы" --> "Управление конфигурацией" --> "Конфигурация", открыть на экране замещенную схему "RIBContactPersonsInfoModule", спозиционировать курсор на Локализированной строке "CountryFieldCaption" и сделать скриншот. Далее выложить на форум. Это все требуется сделать в BPMOnline 7.6.
и еще Евгений, рекомендация, чтобы мы с вами разговаривали на одинаковых языках, я прошу вас записаться на Академии террасофт и пройти обучение по программированию на Платформе. Спасибо!!!
Михаил, извините, пожалуйста. "RIBContactPersonsInfoModule" это не замещённый модуль, а один из моих прикладных модулей и в define модуля страницы, о котором мы говорим в этом посте, его название попало случайно. Сейчас я в define поменял это название на то, которое должно быть - "RIBRegistrationAddressByPassportPage" и поле "Страна" начало выводиться. НО выводится оно всё равно не так как мне нужно. Оно выводится, как поле- выпадающий список, в правой части которого присутствует значок "стрелка вниз", а мне нужно, чтобы оно выводилось как поле-выпадающий список, в правой части которого присутствует значок "лупа". Если возможно, то помогите мне разобраться с этим. Буду вам очень благодарен.
Евгений, я вам все верно описал. Если вы желаете иметь поле Выбора, а не выпадающий список, тогда удаляете "contentType": Terrasoft.ContentType.ENUM,
и будет у вас поле с возможностью открыть форму выбора.
Спасибо большое, Михаил. Получилось. Пока вопрос закрыт. Ещё раз благодарю.