Вопрос

Ошибка "Cannot read property 'attribute' of undefined" при открытии раздела

При открытии раздела в консоли возникает ошибка:

Uncaught TypeError: Cannot read property 'attribute' of undefined
at i.createLink (https:///0/configuration/c2f27049144dee6ad65d0a2cb977b9c2/SectionBundleM...)
at item.(anonymous function) [as onBTNameLinkClick] (https:///0/configuration/c2f27049144dee6ad65d0a2cb977b9c2/SectionBundleM...)
at i.callModelMethod (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)
at i.getBindingValue (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)
at i.getRow (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)
at i. (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)
at i.each (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)
at i.each (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)
at i.prepareCollectionData (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)
at i.onCollectionDataLoaded (https:///core/ef6c69edee78211db08ac073ed147107/combined/all-combined.js:...)

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

Нравится

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

Добрый день, Алла!

Сложно сказать, необходимо отладить Ваш кастомный код чтобы понять в каком именно месте вернулся undefined вместо объекта.

А есть инструкция, как это можно сделать?

У меня схема раздела наследуется от базовой, в которую я не могу вносить изменения и соответственно сделать вызов отладчика.

Схема раздела такая:

define('BTShipmentSection', ['GridUtilitiesV2'],
function() {
return {
entitySchemaName: 'BTShipment',
contextHelpId: '1001',
diff: /**SCHEMA_DIFF*/[
{
"operation": "merge",
"name": "SaveRecordButton",
"parentName": "CombinedModeActionButtonsCardLeftContainer",
"propertyName": "items",
"values": {
"itemType": Terrasoft.ViewItemType.BUTTON,
"caption": {"bindTo": "Resources.Strings.SaveRecordButtonCaption"},
"click": {"bindTo": "onCardAction"},
"style": Terrasoft.controls.ButtonEnums.style.BLUE,
"visible": true,
"classes": {"textClass": ["actions-button-margin-right"]},
"tag": "newSave",
"markerValue": "SaveButton"
}
}
]/**SCHEMA_DIFF*/,
messages: {},
methods: {

}
};
});

"Мотков Илья" написал:в которую я не могу вносить изменения и соответственно сделать вызов отладчика.

Зачем вам вносить изменения, чтобы вызвать отладчик.
Откройте панель разработчика, откройте любой раздел который работает (чтобы инициировать подгрузку исходника схемы BaseSectionV2.js)
Потом при помощи поиска по исходникам найдите ее "Ctrl+P" на вкладке "Sources" в Google Chrome DevTools

откройте и установите точки остановка - там где пожелаете нужным, после чего переходите в Ваш раздел и отлаживайтесь на здоровье.

Илья,

в который раз Вам огромное от меня спасибо за подсказку :wink:

Сейчас попробую.

Не, к сожалению, на on-demand так не получается :confused:

"Алла Савельева" написал:Не, к сожалению, на on-demand так не получается

Это не должно играть принципиальной разницы.
Что конкретно у Вас не получается ?

Не получается выбрать BaseSection, так как его нет в списке.

Скрин прилагаю.

Может отладиться в SectionBundleModule.js?

"Севостьянов Илья Сергеевич" написал:Откройте панель разработчика, откройте любой раздел который работает (чтобы инициировать подгрузку исходника схемы BaseSectionV2.js)

Для того чтобы эта схема подгрузилась, Вам необходимо в окне браузера для которого открыта панель разработчика, предварительно зайти в любой другой раздел (так же основанный на BaseSectionV2, это вызовет его загрузку и он появится в списке), после чего он не будет выгружаться, вы поставите в него Ваши точки останова, далее перейдете в Ваш раздел (который надо отладить) - ранее загруженный BasePageV2 с Вашими точками останова вызовется на исполнение.

Илья, так и делала, но увы...

А что насчет SectionBundleModule.js?

вот вам еще вариант, т.к. у вас возникает ошибка
модно попробовать установить в отладчике опцию "Pause on exeptions"

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

PS: возможно код схемы загружается в SectionBundleModule
тогда найдите в исходной схеме какое либо "уникальное место"
и воспользуйтесь поиском по исходным кодам, чтобы найти где оно загрузилось:

и воткунуть точку останова туда.

Может кому-то будет полезно. Точно такая же ошибка у меня возникла при ручной регистрации раздела на основе уже существующего объекта. Ошибка пропала после того как в Section и в Page, созданного раздела, в Dependencies была добавлена ссылка на объект для которого создавался раздел.

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

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