Была создана схема карточки для собственной детали. В нее добавлен следующий код:
"ConfigurationGridUtilities"], function() {
return {
entitySchemaName: "UsrProjectParticipant",
attributes: {
"IsEditable": {
dataValueType: Terrasoft.DataValueType.BOOLEAN,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
value: true
}
},
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[{
"operation": "merge",
"name": "DataGrid",
"values": {
"className": "Terrasoft.ConfigurationGrid",
"generator": "ConfigurationGridGenerator.generatePartial",
"generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
"changeRow": {"bindTo": "changeRow"},
"unSelectRow": {"bindTo": "unSelectRow"},
"onGridClick": {"bindTo": "onGridClick"},
"activeRowActions": [
{
"className": "Terrasoft.Button",
"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
"tag": "save",
"markerValue": "save",
"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
},
{
"className": "Terrasoft.Button",
"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
"tag": "cancel",
"markerValue": "cancel",
"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
},
{
"className": "Terrasoft.Button",
"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
"tag": "remove",
"markerValue": "remove",
"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
}
],
"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
"activeRowAction": {"bindTo": "onActiveRowAction"},
"multiSelect": false
}
}]/**SCHEMA_DIFF*/,
mixins: {
ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
},
methods: {}
};
});
Данный код отрабатывает некорректно, хотя был сделан на основе руководства, по которому можно добавить грид на свою деталь. Его некорректная работа отражается в том, что при попытке добавить запись или редактировать имеющуюся - не отрисовывается строка. Пример на скриншоте.
Как показал отладчик - не работает строка
А сама функция выпадает в ошибку undefined на последней строчке
this.columnsConfig = columnsConfig;
var gridLayoutItems = [];
var currentColumnIndex = 0;
this.Terrasoft.each(columnsConfig, function(columnConfig) {
var columnName = columnConfig.key[0].name.bindTo;
Не подскажите как решить данный вопрос с гридом?
Нравится
Добрый день Александр!!!
после создания детали, нужно в профили Детали добавить колонки. Так как жестко при инициализации детали у вас не указаны колонки. к примеру в 7.8 есть детали от календаря "WorkingWeekDetail" в данной детали колонки задаются жестко при инициализации детали. В вашем случае их нужно задать в профили детали, вызвав Действие --> Настройка колонок.
"Власов Михаил Викторович" написал:Добрый день Александр!!!
после создания детали, нужно в профили Детали добавить колонки. Так как жестко при инициализации детали у вас не указаны колонки. к примеру в 7.8 есть детали от календаря "WorkingWeekDetail" в данной детали колонки задаются жестко при инициализации детали. В вашем случае их нужно задать в профили детали, вызвав Действие --> Настройка колонок.
Колонка контакт ведь добавлена в деталь на скриншоте. Или нужно добавить какие то другие колонки?
Тогда Александр в дебагере найдите точно где вылетает Ошибка "undefined" и я вам подскажу из-за чего она вылетела
"Власов Михаил Викторович" написал:Тогда Александр в дебагере найдите точно где вылетает Ошибка "undefined" и я вам подскажу из-за чего она вылетела
var columnName = columnConfig.key[0].name.bindTo;
Вот эта строчка файла ConfigurationGridUtilities. Функция generateActiveRowControlsConfig. Почему то в 7.7 эта функция возвращает один объект, а в 7.8 массив.
Добрый день Александр!!!
показываю эксперимент чтобы вы понимали. Но сначало поясню еще раз метод "generateActiveRowControlsConfig" класса "Terrasoft.ConfigurationGridUtilities" генерирует конфигурацию элементов редактирования активной строки реестра Детали. в методе отрабатывается цикл
this.Terrasoft.each(columnsConfig, function(columnConfig) { .... }, this);
в данном цикле во входящих значениях "columnsConfig" - это массив колонок Профиля детали. Показываю пример на скриншотах.
вот страница редактирования "Сервисов"
На данной странице редактирования есть деталь "Сервисные инженеры". По умолчанию деталь имеет колонки:
При добавление на детали Сервисные инженеры, строка реестра имеет следующий вид:
Если удалить колонку, через "Действия" --> "Настройка колонок". К примеру удаляем "Уровень поддержки", то строка реестра редактирования будет иметь следующий вид:
И в результате как я говорил выше Система массив колонок берет из Профиля детали, если колонки не заданы жестко программно. Поэтому и вопрос вы в профили детали Добавили колонки?
Еще раз Александр повторюсь, где конкретно вылетает ошибка? у строки
var columnName = columnConfig.key[0].name.bindTo;
метода "generateActiveRowControlsConfig" идет получение массива "columnConfig", далее через точку "key[0]" и так далее где конкретно через точку вылетает ошибка.
Здесь Александр это где? это после key[0], после name, или после bindTo? это первое а второе вы сами ради сравнения разверните стек, что у вас на скриншотах, в 7.7 и в 7.8 и сравните что есть и чего нехватает. вот вам и будет ответ на каком месте выходит ошибка.
После columnConfig. Попытался вызвать команду в консоли columnConfig - все хорошо, попытался вызвать команду columnConfig.key[0] выпадает в ошибку.
Провел одинаковые операции на 7.7 и 7.8. Создал объект, в качестве родительского указал - Базовый справочник. Добавил колонку. Добавил деталь. Добавил деталь в раздел. Произвел настройку колонок. Изменил код схемы полученной детали. В результате на версии 7.7 все работает, а на версии 7.8 нет.
Здравствуйте, Александр!
Данный вопрос будет решен в рамках технической поддержки
"Демьяник Алексей" написал:Здравствуйте, Александр!Данный вопрос будет решен в рамках технической поддержки
День добрый Алексей!!!
так это ошибка 7.8? просто у меня на 7.8 все работает. Уже и с нуля писал данный код, и мой старый код пробовал, все работает.
"Власов Михаил Викторович" написал:День добрый Алексей!!!так это ошибка 7.8? просто у меня на 7.8 все работает. Уже и с нуля писал данный код, и мой старый код пробовал, все работает.
Не покажите пример простого грида, который у Вас на 7.8 работает?
"Бахматов Александр Валерьевич" написал:
Власов Михаил Викторович пишет:
День добрый Алексей!!!
так это ошибка 7.8? просто у меня на 7.8 все работает. Уже и с нуля писал данный код, и мой старый код пробовал, все работает.
Не покажите пример простого грида, который у Вас на 7.8 работает?
Здравствуйте!
Это не ошибка 7.8.0. В версии 7.8.0 можно найта редактируемый реестр, например, в детали OrderProductDetailV2 - он корректно работает.
"Демьяник Алексей" написал:Здравствуйте!Это не ошибка 7.8.0. В версии 7.8.0 можно найта редактируемый реестр, например, в детали OrderProductDetailV2 - он корректно работает.
Может быть попробовать тогда использовать тот код карточки, что в детали OrderProductDetailV2? Или этого недостаточно?
Здравствуйте!
"Бахматов Александр Валерьевич" написал:
Демьяник Алексей пишет:
Здравствуйте!
Это не ошибка 7.8.0. В версии 7.8.0 можно найта редактируемый реестр, например, в детали OrderProductDetailV2 - он корректно работает.
Может быть попробовать тогда использовать тот код карточки, что в детали OrderProductDetailV2? Или этого недостаточно?
Я не пробовал создавать редактируемые реестры, но по опыту общения с системой понял, что нужно экспериментировать. Скажите, пожалуйста, Ваша деталь наследуется от BaseGridDetailV2?
"Демьяник Алексей" написал:Я не пробовал создавать редактируемые реестры, но по опыту общения с системой понял, что нужно экспериментировать. Скажите, пожалуйста, Ваша деталь наследуется от BaseGridDetailV2?
Да, наследуется, пакет NUI