Доброго времени суток коллеги. Имею проблемы (очень нужна помощь) пожалуйста кто сможет подскажите. Мне нужно было сделать
1) при открытии справочного окна сделать поле поиска по умолчанию ИНН, я посмотрел тут и создал модуль. (все работает)
2) Нужно сделать неактивной кнопку "Добавить", пока не нажимаем в кнопку "Поиск" и если пусто(то есть нет результатов поиска), то только тогда сделать кнопку "Добавить" активной.
Шаги: Я добавил два метода как указано в этой статье, но не понимаю, куда добавлять:
Я поискал в своем конфиругации и там создана viewModel, которая вызывает сам деталь деталь. И попробовал установить её в методе getLookupPageConfig
define("UsrEmploymentDataRowViewModel", ["EmploymentDataRowViewModel", "LookupUtilitiesV2"],
function(LookupUtilities) {
Ext.define("Terrasoft.configuration.UsrEmploymentDataRowViewModel", {
extend: "Terrasoft.EmploymentDataRowViewModel",
alternateClassName: "Terrasoft.UsrEmploymentDataRowViewModel",
getLookupPageConfig: function() {
this.callParent(arguments);
var config = {
entitySchemaName: "Lead",
columns: ["Id"],
associatedProjectId: this.get("Id"),
multiSelect: true,
actionsButtonVisible: true,
//указываем нашу кастомизированную схему
lookupPageName: "UsrAccountBaseLookupModule"
};
this.openLookup(
config,
function(selected) { window.console.log("selected", selected);},
this);
},
});
return Terrasoft.UsrEmploymentDataRowViewModel;
});
Вот сама деталь:
define("EmploymentDataFieldsDetail", ["UsrAccountBaseLookupModule", "UsrEmploymentDataRowViewModel"],
function() {
return {
entitySchemaName: "ContactCareer",
attributes: {
"Account": {
dataValueType: this.Terrasoft.DataValueType.LOOKUP,
lookupListConfig: {
lookupPageName: "UsrAccountBaseLookupModule", }, }, },
methods: {
getRowViewModelClassName: function() {
return "Terrasoft.UsrEmploymentDataRowViewModel";
} },
diff: /**SCHEMA_DIFF*/ [] /**SCHEMA_DIFF*/ ,
};
});
// схема детали "Данные по занятости"
Ошибка:
Теперь, я вместо openLookup попытался открыть через LookupUtilities, вот код:
define("UsrEmploymentDataRowViewModel", ["EmploymentDataRowViewModel", "LookupUtilitiesV2"],
function(LookupUtilities) {
Ext.define("Terrasoft.configuration.UsrEmploymentDataRowViewModel", {
extend: "Terrasoft.EmploymentDataRowViewModel",
alternateClassName: "Terrasoft.UsrEmploymentDataRowViewModel",
getLookupPageConfig: function() {
this.callParent(arguments);
var config = {
lookupPageName: "UsrAccountBaseLookupModule"
};
LookupUtilities.Open(config, function(selected){ window.console.log(selected);}, this);},
});
return Terrasoft.UsrEmploymentDataRowViewModel;
});
Получаю ошибку:
Весь код, модуля:
define("UsrAccountBaseLookupModule", [
"LookupPage",
"LookupPageViewGenerator",
"LookupPageViewModelGenerator",
"ProcessModuleUtilities",
"LookupUtilities",
"css!LookupPageCSS",
], function(
LookupPage,
LookupPageViewGenerator,
LookupPageViewModelGenerator,
LookupUtilities,
ProcessModuleUtilities
) {
return Ext.define("Terrasoft.configuration.UsrAccountBaseLookupModule", {
alternateClassName: "Terrasoft.UsrEDFDAccountLookupPage",
extend: "Terrasoft.LookupPage",
gridWrapClasses: ["custom-lookup-control"],
init: function(callback, scope) {
callback = callback || Terrasoft.emptyFn;
if (this.viewModel) {
callback.call(scope);
return;
}
var lookupInfo = this.getLookupInfo();
if (this.Ext.isArray(lookupInfo)) {
var configIndex = 0;
var parameters = this.parameters;
if (!this.Ext.isEmpty(parameters)) {
configIndex = parameters.index;
}
this.lookupInfo = lookupInfo[configIndex];
this.lookupsInfo = lookupInfo;
} else {
this.lookupInfo = lookupInfo;
}
this.processModuleFlag = this.sandbox.publish(
"CardProccessModuleInfo",
null, [this.sandbox.id]
);
this.initHistoryState();
this.getSchemaAndProfile(
this.lookupInfo.lookupPostfix,
function(entitySchema, profile) {
if (this.isDestroyed) {
return;
}
entitySchema.primaryDisplayColumn = {
caption: "ИНН",
columnPath: "INN",
dataValueType: 1,
isInherited: false,
isRequired: true,
isValueCloneable: true,
name: "INN",
size: 250,
uId: "4b8aa047-9de8-42b8-ab32-fbf0f9a39479",
usageType: 0,
};
var primaryDisplayColumn = entitySchema.primaryDisplayColumn;
if (primaryDisplayColumn) {
this.lookupInfo.searchColumn = {
value: primaryDisplayColumn.name,
displayValue: primaryDisplayColumn.caption,
};
}
this.lookupInfo.entitySchema = entitySchema;
this.lookupInfo.gridProfile = profile;
var viewModel = (this.viewModel = this.generateViewModel());
viewModel.lookupInfo = this.lookupInfo;
viewModel.load(profile, callback, scope);
}
);
},
renderLookupView: function(schema, profile) {
var config = this.getLookupConfig(schema, profile);
var topPanelConfig = LookupPageViewGenerator.generateFixed(config);
var buttonsConfig, AddButtonConfig;
_.some(topPanelConfig.items, function(target) {
if (target.id === "filteringContainerLookupPage" ||
target.id === "selectionControlsContainerLookupPage") {
_.some(target, function(target) {
if (Array.isArray(target)) {
buttonsConfig = target;
return true;
}
});
return true;
}
});
_.some(topPanelConfig.items, function(item) {
if (item.id === "selectionControlsContainerLookupPage") {
_.some(item, function(item) {
if (Array.isArray(item)) {
AddButtonConfig = item;
return true;
}
});
return true;
}
});
_.some(AddButtonConfig, function(target) {
if (target.caption === "Добавить") {
// delete target.tag;
target.enabled = {
bindTo: "false"
};
return true;
}
});
_.some(buttonsConfig, function(target) {
if (target.caption === "Поиск") {
delete target.tag;
target.click = {
bindTo: "AddRequestButton"
};
target.enabled = {
bindTo: "false"
};
return true;
}
});
this.renderLookupControls(config, topPanelConfig);
},
generateViewModel: function() {
var viewModelConfig = LookupPageViewModelGenerator.generate(this.lookupInfo);
if (!this.lookupInfo.columnValue && this.lookupInfo.searchValue) {
viewModelConfig.values.searchData = this.lookupInfo.searchValue;
viewModelConfig.values.previousSearchData = this.lookupInfo.searchValue;
}
viewModelConfig.methods.AddRequestButton = function() {
var associatedProjectId = this.values.LookupInfo.associatedProjectId;
//Вызываем БП
var args = {
sysProcessName: "UsrCreateNewRequestFromProject",
parameters: {
ProjectId: associatedProjectId
}
};
ProcessModuleUtilities.executeProcess(args);
this.close();
};
var viewModel = this.Ext.create("Terrasoft.BaseViewModel", viewModelConfig);
viewModel.Ext = this.Ext;
viewModel.sandbox = this.sandbox;
viewModel.Terrasoft = this.Terrasoft;
if (this.lookupInfo.updateViewModel) {
this.lookupInfo.updateViewModel.call(viewModel);
}
viewModel.initCaptionLookup();
viewModel.initHasActions();
viewModel.initLoadedColumns();
if (!this.Ext.isEmpty(this.lookupInfo.filterObjectPath)) {
viewModel.updateFilterByFilterObjectPath(this.lookupInfo.filters, this.lookupInfo.filterObjectPath);
}
if (this.lookupInfo.hideActions) {
viewModel.set("hasActions", false);
}
return viewModel;
}
});
});
Пожалуйста, помогите с решением.