Еще новичок в разработке. Нужно создать замещающий клиентский модуль.
Вот родительская схема:
define('CityPage', ['ext-base', 'terrasoft', 'sandbox',
'City', 'CityPageStructure', 'CityPageResources', 'GeneralDetails', 'LookupUtilities', 'BusinessRuleModule'],
function(Ext, Terrasoft, sandbox, entitySchema, structure, resources, GeneralDetails, LookupUtilities,
BusinessRuleModule) {
structure.userCode = function() {
this.entitySchema = entitySchema;
this.name = 'CityCardViewModel';
this.schema.leftPanel = LookupUtilities.GetBaseLookupPageStructure();
};
structure.finalizeStructure = function() {
var baseElementsControlGroup = this.find('baseElementsControlGroup');
if (baseElementsControlGroup) {
var items = baseElementsControlGroup.items;
items.splice(2, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'Country',
columnPath: 'Country',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true
});
items.splice(3, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'Region',
columnPath: 'Region',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true,
rules: [{
ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
autocomplete: true,
baseAttributePatch: 'Country',
comparisonType: Terrasoft.ComparisonType.EQUAL,
type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
attribute: 'Country',
attributePath: '',
value: ''
}]
});
items.splice(4, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'TimeZone',
columnPath: 'TimeZone',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true
});
baseElementsControlGroup.items = items;
}
};
return structure;
});
Вот моя схема, которая должна замещать родительскую (выше). Что не так в коде замещающей схемы:
define("CityPage", ['ext-base', 'terrasoft', 'sandbox',
'City', 'CityPageStructure', 'CityPageResources', 'GeneralDetails', 'LookupUtilities', 'BusinessRuleModule'],
function(Ext, Terrasoft, sandbox, entitySchema, structure, resources, GeneralDetails, LookupUtilities,
BusinessRuleModule) {
return {
structure: "City",
items.splice(4, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'UsrRayon',
columnPath: 'UsrRayon',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true
});
};
});
Нравится
Здравствуйте, Анастасия.
"Злыднева Анастасия Сергеевна" написал:Что не так в коде замещающей схемы:
Все зависит от задачи, которую вы себе поставили
Во первых, вы должны создать замещающий модуль так, как указано с статье https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/sozdanie-polzo… (если вдруг вы не знали этого, т.к.
"Злыднева Анастасия Сергеевна" написал:Еще новичок в разработке.
Во вторых, судя по исходному коду базового модуля, он является моделью представления в связке MVVM. Подробнее смотрите здесь https://academy.terrasoft.ru/documents/technic-sdk/7-7-0/shablon-mvvm-e…
В третьих. В базовой схеме функция, обявленная в модуле, возвращает модифицированный объект structure, дополненный двумя свойствами-методами. Вы же возвращаете новый объект с новыми свойствами.
Примерное решение будет выглядеть так (нужно проверить, т.к. набирал в блокноте без проверки)
define("CityPage", ['ext-base', 'terrasoft', 'sandbox','City', 'CityPageStructure', 'CityPageResources', 'GeneralDetails', 'LookupUtilities', 'BusinessRuleModule'], function(Ext, Terrasoft, sandbox, entitySchema, structure, resources, GeneralDetails, LookupUtilities, BusinessRuleModule) { return { //Запомнить свойство-метод в локальную переменную var s = structure.finalizeStructure; //Переопределить свойство-метод базового модуля в замещающем structure.finalizeStructure = function() { //вызвать свойство-метод базового модуля s(); // получить группу контролов var baseElementsControlGroup = this.find('baseElementsControlGroup'); //если найдена if (baseElementsControlGroup) { //получить ее элементы var items = baseElementsControlGroup.items; // добавить атрибут в элемент items.splice(4, 0, { type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE, name: 'UsrRayon', columnPath: 'UsrRayon', dataValueType: Terrasoft.DataValueType.LOOKUP, visible: true }); }; }; }; });