Здравствуйте. Подскажите пожалуйста, ситуация такая: Создал объект для создания нового раздела( родитель базовый объект). В мастере разделов создал раздел "ТС" . Далее была создана деталь, в этой детали есть поле "ТС" (тип справочник) - ссылка на объект раздела. Добавляю деталь во вкладку(не важно куда), нажимаю добавить деталь, открывается форма добавления и поле "ТС" выглядит как справочник, но когда я на него нажимаю, то получаю пустую страницу.
Как я понимаю, то нужно для объекта раздела нужно создать схему или страницу? Я не сильно опытен в этом деле и если можно подскажите как это сделать.
Нравится
Здравствуйте, Павел.
1) Рекомендуем Вам создать раздел через [Мастер разделов]
http://academy.terrasoft.ru/documents/?/docs/product/bpm%27online%20cus…
Далее, создать деталь:
http://academy.terrasoft.ru/documents/docs/product/bpm%27online%20custo…
2) Создать объект в конфигурации, унаследовать базовый объект
3) Через [мастер деталей] -создать деталь, выбрав созданный объект в первом пункте
4) Сохраните, без перехода на редактирование страницы детали
5) Зайдите в раздел [Справочники] , добавьте новый справочник, выбрав Ваш раздел
http://academy.terrasoft.ru/documents/docs/product/bpm'online%20sales/t…
6) Зайдите в созданный раздел, [мастер раздела] , добавьте деталь созданную на шаге № 3
7) Cохраните
8) Зайдите в ваш раздел, найдите деталь и настройте её, добавьте справочник созданный на шаге №5
Спасибо, Александр, что так быстро ответили, но что-то не работает или я не так понял.
Во первых зачем пункт 2?
По 1 пункту - если у меня уже есть созданный раздел и деталь, то нужно снова создать?
5 - создал справочник с объектом раздела "ТС". Когда жму наполнения, то отображает нормально.
мб меня не правильно поняли тк много лишнего)
коротко - нужно что бы в детали, во вкладке или ещё где то все объекты из раздела "ТС" можно вывести справочником. Сейчас если я делаю это, то поле справочника появляется, но при нажатии на него открывается картинка вот штука (snimok2.png), есть раздел продукты и вот у него словарем открывается нормально вот так (snimok.png)
Павел, я Вам предложил выполнить все действия от начала до конца максимально используя стандартные средства , и минимум использовать [Конфигурацию], что бы избежать ошибок при выполнении вашего задания.
попробуйте пройти все эти шаги регистрируя новые разделы, справочники, детали.
Так же, приложите, пожалуйста, скриншот с "пустым" открытым справочником и консолью браузера.
вот с консолькой и кусок кода
[javascript]
var core = require("core");
core.setModuleDescriptor('CardModule', {path: "../../configuration/dd7bd5282557e5e7e4594abe18148617", css: ["CardModule"],
"messages": {
"LoadData": { "direction": "publish", "mode": "broadcast" },
"DetailInfo": { "direction": "subscribe", "mode": "broadcast" },
"GetHistoryState": { "direction": "publish", "mode": "ptp" },
"SaveDetails": { "direction": "publish", "mode": "ptp" },
"LookupInfo": { "direction": "subscribe", "mode": "ptp" },
"ResultSelectedRows": { "direction": "subscribe", "mode": "ptp" },
"OpenLookupPage": { "direction": "subscribe", "mode": "broadcast" },
"GetCardSchemaName": { "direction": "subscribe", "mode": "ptp" },
"ReplaceHistoryState": { "direction": "publish", "mode": "broadcast" },
"PushHistoryState": { "direction": "publish", "mode": "broadcast" },
"BackHistoryState": { "direction": "publish", "mode": "broadcast" },
"SaveRecord": { "direction": "subscribe", "mode": "broadcast" },
"GetRecordInfo": { "direction": "subscribe", "mode": "ptp" },
"RequestDetailItems": { "direction": "publish", "mode": "ptp" },
"GetDetailItems": { "direction": "subscribe", "mode": "ptp" },
"FindDuplicatesResult": { "direction": "subscribe", "mode": "broadcast" },
"GetPredefinedRecords": { "direction": "subscribe", "mode": "ptp" },
"ChangeRemindingsCounts": { "direction": "publish", "mode": "broadcast" },
"GetContextHelpId": { "direction": "subscribe", "mode": "ptp" },
"LookupPageInfo": { "direction": "publish", "mode": "ptp" },
"DoNotUseCommunication": { "direction": "subscribe", "mode": "ptp" },
"ShowLookupPage": { "direction": "subscribe", "mode": "ptp" },
"LookupResultSelected": { "direction": "publish", "mode": "ptp" },
"GetProcessExecData": { "direction": "publish", "mode": "ptp" },
"GetProcessExecDataCollection": { "direction": "publish", "mode": "ptp" },
"GetEntityName": { "direction": "subscribe", "mode": "ptp" },
"CardModuleEntityInfo": { "direction": "publish", "mode": "ptp" },
"OpenCardModule": { "direction": "subscribe", "mode": "ptp" },
"UpdateDetail": { "direction": "publish", "mode": "ptp" },
"OpenGridSettings": { "direction": "subscribe", "mode": "ptp" },
"CardModuleResponse": { "direction": "publish", "mode": "ptp" },
"ProcessExecDataChanged": { "direction": "publish", "mode": "ptp" },
"DetailChanged": { "direction": "subscribe", "mode": "broadcast" },
"LoadCustomModule": { "direction": "subscribe", "mode": "ptp" },
"UpdateCommentCounter": { "direction": "subscribe", "mode": "ptp" },
"GetAdditionalFilterValue": { "direction": "subscribe", "mode": "ptp" },
"DestroyCommentModule": { "direction": "publish", "mode": "ptp" },
"GetParentContainer": { "direction": "publish", "mode": "ptp" },
"IncomingPtp": { "direction": "subscribe", "mode": "ptp" },
"IncomingBroadcast": { "direction": "subscribe", "mode": "broadcast" },
"OutcomingPtp": { "direction": "publish", "mode": "ptp" },
"OutcomingBroadcast": { "direction": "publish", "mode": "broadcast" },
"GetEntityColumnValues": { "direction": "subscribe", "mode": "ptp" },
"ReloadDetail": { "direction": "publish", "mode": "ptp" },
"SetDetailReadOnly": { "direction": "publish", "mode": "ptp" },
"GetProcessEntryPointsData": { "direction": "publish", "mode": "ptp" },
"GetMapsConfig": { "direction": "subscribe", "mode": "ptp" },
"ColumnSelected": { "direction": "subscribe", "mode": "ptp" },
"GetStructureExplorerSchemaName": { "direction": "subscribe", "mode": "ptp" },
"StructureExplorerInfo": { "direction": "subscribe", "mode": "ptp" },
"GetIsDetailReadonly": { "direction": "subscribe", "mode": "ptp" },
"GetCardModuleSandboxId": { "direction": "subscribe", "mode": "ptp" },
"DetailSaved": { "direction": "subscribe", "mode": "ptp" },
"RefreshFiles": { "direction": "publish", "mode": "broadcast" },
"DestroyFilesModule": { "direction": "publish", "mode": "ptp" },
"FileDeleted": { "direction": "subscribe", "mode": "ptp" },
"RefreshWorkplace": { "direction": "publish", "mode": "ptp" },
"GetWidgetParameters": { "direction": "publish", "mode": "ptp" },
"PushWidgetParameters": { "direction": "publish", "mode": "ptp" },
"CardProccessModuleInfo": { "direction": "subscribe", "mode": "ptp" }
}});
core.setModuleDescriptor('ProcessProgressSpinnerImage', {path: "../../configuration/a1fa921decbb5aee03170d3b7bc1e92b"});
core.setModuleDescriptor('RightUtilities', {path: "../../configuration/c10b9dd2b99cd6a574464459291852c5"});
core.setModuleDescriptor('MaskHelper', {path: "../../configuration/27d32cf9403d46187b97829dd8728c00"});
core.setModuleDescriptor('LookupPageViewGenerator', {path: "../../configuration/07929e6cc749d51c88f646c68f210ee8"});
core.setModuleDescriptor('LookupPageViewModelGenerator', {path: "../../configuration/6e41c42262df83b8220fea5c27b8e8fb",
"messages": {
"GetGridSettingsInfo": { "direction": "subscribe", "mode": "ptp" }
}});
core.setModuleDescriptor('LookupPageResources', {path: "../../configuration/6b9d74cc8f03aec01bf47e0892f3c779", css: ["LookupPage"],
"messages": {
"LookupInfo": { "direction": "publish", "mode": "ptp" },
"ResultSelectedRows": { "direction": "publish", "mode": "ptp" },
"GetHistoryState": { "direction": "publish", "mode": "ptp" },
"ReplaceHistoryState": { "direction": "publish", "mode": "broadcast" },
"BackHistoryState": { "direction": "publish", "mode": "broadcast" },
"PushHistoryState": { "direction": "publish", "mode": "broadcast" },
"CardModuleEntityInfo": { "direction": "subscribe", "mode": "ptp" },
"MacrosInfo": { "direction": "subscribe", "mode": "ptp" },
"GridSettingsInfo": { "direction": "subscribe", "mode": "ptp" },
"GridSettingsChanged": { "direction": "subscribe", "mode": "ptp" },
"CardProccessModuleInfo": { "direction": "publish", "mode": "ptp" },
"CardModuleResponse": { "direction": "subscribe", "mode": "ptp" },
"OpenCard": { "direction": "publish", "mode": "ptp" },
"getCardInfo": { "direction": "subscribe", "mode": "ptp" },
"GetGridSettingsInfo": { "direction": "subscribe", "mode": "ptp" },
"UpdateDetail": { "direction": "subscribe", "mode": "ptp" }
}});
define('LookupPageResources', ['terrasoft'], function(Terrasoft) {
var localizableStrings={
SelectButtonCaption: 'абаБбаАбб',
CancelButtonCaption: 'абаМаЕаНаА',
ActionButtonCaption: 'ааЕаЙббаВаИб',
AddButtonCaption: 'ааОаБаАаВаИбб',
DeleteButtonCaption: 'аЃаДаАаЛаИбб',
EditButtonCaption: 'ааЗаМаЕаНаИбб',
CopyButtonCaption: 'ааОаПаИбаОаВаАбб',
SelectedRecordsLabelCaption: 'абаБбаАаНаО аЗаАаПаИбаЕаЙ',
SettingsColumnButtonCaption: 'ааАбббаОаЙаКаА аКаОаЛаОаНаОаК',
SearchButtonCaption: 'ааОаИбаК',
CountSelectedRecord: 'абаБбаАаНаО аЗаАаПаИбаЕаЙ:',
CaptionLookupPage: 'абаБаОб: ',
OnDeleteWarning: 'аб аДаЕаЙббаВаИбаЕаЛбаНаО б
аОбаИбаЕ баДаАаЛаИбб аВбаДаЕаЛаЕаНаНбаЕ баЛаЕаМаЕаНбб?',
DependencyWarningMessage: 'абаБбаАаНаНбаЕ баЛаЕаМаЕаНбб баДаАаЛаИбб аНаЕаВаОаЗаМаОаЖаНаО, баАаК аКаАаК аОаНаИ аИбаПаОаЛбаЗббббб аВ аДббаГаИб
аОаБбаЕаКбаАб
.',
StartProcessButtonCaption: 'ааАаПбббаИбб',
ShowProcessLogButtonCaption: 'аббаНаАаЛ аПбаОбаЕббаОаВ'
};
var localizableImages={
'MenuButtonImage': {source: Terrasoft.ImageSources.SOURCE_CODE_SCHEMA, params: { schemaName: 'LookupPage', resourceItemName: 'MenuButtonImage' }}
};
return {localizableStrings:localizableStrings,localizableImages:localizableImages};
});
define("LookupPage", ["ext-base", "MaskHelper", "LookupPageViewGenerator", "LookupPageViewModelGenerator",
"LookupUtilities"],
function(Ext, MaskHelper, LookupPageViewGenerator, LookupPageViewModelGenerator, LookupUtilities) {
var lookupPage = Ext.define("Terrasoft.configuration.LookupPage", {
extend: "Terrasoft.BaseObject",
alternateClassName: "Terrasoft.LookupPage",
Ext: null,
sandbox: null,
Terrasoft: null,
/**
* абаИаЗаНаАаК баОаГаО, ббаО аМаОаДбаЛб аИаНбаИаАаЛаИаЗаИббаЕббб аАбаИаНб
баОаНаНаО
* @private
* @type {Boolean}
*/
isAsync: true,
/**
* ааОаНбаИаГ Lookup-аА
* @private
* @type {Object}
*/
lookupInfo: null,
/**
* аЁббаЛаКаА аНаА ViewModel LookupPage-аА
* ааНаИбаИаАаЛаИаЗаИббаЕббб аПаЕбаЕаД аОббаИбаОаВаКаОаЙ
* @private
* @type {Object}
*/
viewModel: null,
/**
* аЁббаЛаКаА аНаА аКаОаНбаЕаЙаНаЕб аВ аКаОбаОбаОаМ аБбаДаЕб аОббаИбаОаВаАаН ModalBox.
* ааНаИбаИаАаЛаИаЗаИббаЕббб аПаЕбаЕаД аОббаИбаОаВаКаОаЙ
* @private
* @type {Object}
*/
renderContainer: null,
/**
* аЄаЛаАаГ, аКаОбаОббаЙ аИаМаЕаЕб аЗаНаАбаЕаНаИаЕ аЕбаЛаИ аМаОаДбаЛб аБбаЛ аЗаАаГббаЖаЕаНаИ аИаЗ CardProcessModule
* @private
* @type {Boolean}
*/
processModuleFlag: false,
/**
* ааНаИбаАаЛаИаЗаИббаЕб аНаАбаАаЛбаНбаЕ аЗаНаАбаЕаНаИб аМаОаДбаЛб,
* аВ аЗаАаВаИбаИаМаОббаИ аОб баЕаЗбаЛббаАбаА аПбаБаЛаИаКаАбаИаИ баОаОаБбаЕаНаИб 'CardProccessModuleInfo'
* аМаОаДбаЛб аИаНаИбаИаАаЛаИаЗаИббаЕбббб аДаЛб баАаБаОбб аВ аМаОаДаАаЛбаНаОаМ аОаКаНаЕ аИаЛаИ аВ centerPanel
* @private
*/
init: function(callback, scope) {
callback = callback || function() {};
if (this.viewModel) {
callback.call(scope);
return;
}
this.lookupInfo = this.sandbox.publish("LookupInfo", null, [this.sandbox.id]);
this.processModuleFlag = this.sandbox.publish("CardProccessModuleInfo", null, [this.sandbox.id]);
this.initHistoryState();
this.getSchemaAndProfile(function(entitySchema, profile) {
if (this.isDestroyed) {
return;
}
this.lookupInfo.searchColumn = {
value: entitySchema.primaryDisplayColumn.name,
displayValue: entitySchema.primaryDisplayColumn.caption
};
this.lookupInfo.entitySchema = entitySchema;
this.lookupInfo.gridProfile = profile;
var viewModel = this.viewModel = this.generateViewModel();
viewModel.init();
if (this.lookupInfo.selectedValues) {
viewModel.set("RestoreSelectedData", this.lookupInfo.selectedValues);
}
if (profile &&
!((profile.captionsConfig && profile.listedColumnsConfig) || profile.tiledColumnsConfig)) {
var newProfile = viewModel.getDefaultProfile();
Terrasoft.utils.saveUserProfile(newProfile.key, newProfile, true, function(response) {
if (!response.success) {
return;
}
this.lookupInfo.gridProfile = newProfile;
viewModel.set("gridProfile", newProfile);
viewModel.updateSortColumnsCaptions();
viewModel.load();
callback.call(scope);
}, this);
} else {
viewModel.updateSortColumnsCaptions();
viewModel.load();
callback.call(scope);
}
});
},
/**
* абаПаОаЛаНбаЕб аОббаИбаОаВаКб аМаОаДбаЛб аВ аКаОаНбаЕаЙаНаЕб
* @protected
* @param {Object} renderTo аКаОаНбаЕаЙаНаЕб аВ аКаОбаОббаЙ аБбаДаЕб аОббаИбаОаВаАаН аМаОаДбаЛб
*/
render: function(renderTo) {
this.renderContainer = renderTo.id;
this.renderLookupView(this.lookupInfo.entitySchema, this.lookupInfo.gridProfile);
},
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;
}
var viewModel = 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 (!Ext.isEmpty(this.lookupInfo.filterObjectPath)) {
viewModel.updateFilterByFilterObjectPath(this.lookupInfo.filters, this.lookupInfo.filterObjectPath);
}
if (this.lookupInfo.hideActions) {
viewModel.set("hasActions", false);
}
return viewModel;
},
initHistoryState: function() {
if (!this.processModuleFlag) {
return;
}
var state = this.sandbox.publish("GetHistoryState");
var currentHash = state.hash;
var currentState = state.state || {};
if (currentState.moduleId === this.sandbox.id) {
return;
}
this.sandbox.publish("ReplaceHistoryState", {
stateObj: {
moduleId: this.sandbox.id
},
pageTitle: null,
hash: currentHash.historyState,
silent: true
});
},
/**
* ааОаЛббаАаЕб бб
аЕаМб аИ аНаАбббаОаЙаКаИ аПбаОбаИаЛб аДаЛб баПбаАаВаОбаНаИаКаА
* @private
* @param {Function} callback ббаНаКбаИб аКаОбаОбаАб аБбаДаЕб аВбаПаОаЛаНаЕаНаА аПаО аОаКаОаНбаАаНаИаИ аЗаАаГббаЗаКаИ аВ аКаОаНбаЕаКббаЕ баАаМаОаГаО аМаОаДбаЛб
*/
getSchemaAndProfile: function(callback) {
var entitySchemaName = this.lookupInfo.entitySchemaName;
this.sandbox.requireModuleDescriptors([entitySchemaName], function() {
var columnsSettingsProfileKey = "GridSettings_" + this.lookupInfo.entitySchemaName;
var me = this;
require([entitySchemaName, "profile!" + columnsSettingsProfileKey], function(entitySchema, profile) {
var fixedProfile = me.actualizeProfile(entitySchema, profile);
callback.call(me, entitySchema, fixedProfile);
});
}, this);
},
/**
* абаПаОаЛаНбаЕб аОббаИбаОаВаКб Lookup-аА аВ баОаОбаВаЕбббаВаИаИ баО бб
аЕаМаОаЙ аИ аНаАбббаОаЙаКаОаЙ аПбаОбаИаЛб
* ааЛб аПбаОбаЕбаОаВ аОббаИбаОаВбаВаАаЕббб аНаА аВбаЕ аОаКаНаО, аДаЛб баПбаАаВаОбаНаИаКаОаВ аВ modalBox
* @private
* @param {Object} schema EntitySchema аОаБбаЕаКбаА
* @param {Object} profile аНаАбббаОаЙаКаА аПбаОбаИаЛб
*/
renderLookupView: function(schema, profile) {
var configArgs = {};
configArgs.actionsMenuConfig = LookupPageViewGenerator.getActionsMenuConfig(schema.name);
configArgs.captionConfig = schema.columns[schema.primaryDisplayColumnName].caption;
configArgs.entitySchema = schema;
configArgs.isRunProcessPage = this.lookupInfo.isRunProcessPage;
configArgs.columnsSettingsProfile = profile;
Ext.apply(configArgs, this.lookupInfo);
var fixedViewConfig = LookupPageViewGenerator.generateFixed(configArgs);
var fixedView = Ext.create(fixedViewConfig.className || "Terrasoft.Container", fixedViewConfig);
fixedView.bind(this.viewModel);
fixedView.render(LookupUtilities.GetFixedHeaderContainer());
var gridViewConfig = LookupPageViewGenerator.generateGrid(configArgs);
var gridView = Ext.create(gridViewConfig.className || "Terrasoft.Container", gridViewConfig);
gridView.bind(this.viewModel);
gridView.render(LookupUtilities.GetGridContainer());
if (this.processModuleFlag) {
this.loadCommandLine();
}
MaskHelper.HideBodyMask();
},
/**
* аЃббаАаНаАаВаЛаИаВаАаЕб баОаКбб аНаА бббаОаКаЕ аПаОаИбаКаА аПаОбаЛаЕ аОббаИбаОаВаКаИ
* @private
*/
loadCommandLine: function() {
var commandLineContainer = Ext.get("module-command-line");
if (!this.lookupInfo.commandLineEnabled || Ext.isEmpty(commandLineContainer)) {
return;
}
this.sandbox.loadModule("CommandLineModule", {
renderTo: commandLineContainer
});
},
actualizeProfile: function(entitySchema, profile) {
if (profile.listedConfig) {
var viewGenerator = Ext.create("Terrasoft.ViewGenerator");
viewGenerator.viewModelClass = this;
this.entitySchema = entitySchema;
this.columns = entitySchema.columns;
var newProfile = {
listedConfig: Ext.decode(profile.listedConfig),
tiledConfig: Ext.decode(profile.tiledConfig),
isTiled: profile.type === "tiled",
type: profile.type,
key: profile.key
};
viewGenerator.actualizeGridConfig(newProfile);
this.clearLinks(newProfile);
return {
isTiled: newProfile.isTiled,
key: newProfile.key,
listedColumnsConfig: Ext.encode(newProfile.listedConfig.columnsConfig),
captionsConfig: Ext.encode(newProfile.listedConfig.captionsConfig),
tiledColumnsConfig: Ext.encode(newProfile.tiledConfig.columnsConfig),
type: newProfile.type
};
}
return profile;
},
clearLinks: function(profile) {
Terrasoft.each(profile.listedConfig.columnsConfig, function(item) {
if (item.hasOwnProperty("link")) {
delete item.link;
}
}, this);
Terrasoft.each(profile.tiledConfig.columnsConfig, function(rowItem) {
Terrasoft.each(rowItem, function(item) {
if (item.hasOwnProperty("link")) {
delete item.link;
}
}, this);
}, this);
}
});
return lookupPage;
});
[/javascript]
Судя по ошибке в консоли- Вы по-прежнему используете вручную созданный объект раздела.
ошибка нам сообщает: primaryDisplayColumn is undefined.- не определена первичная колонка в объекте для отображения.
В таком случае, откройте Ваш объект- и заполните значение: "Отображаемое значение" на любую текстовую колонку существующую в объекте. Не забудьте отобразить "все" свойства объекта.
"Александр Зубков" написал:Судя по ошибке в консоли- Вы по-прежнему используете вручную созданный объект раздела.
ошибка нам сообщает: primaryDisplayColumn is undefined.- не определена первичная колонка в объекте для отображения.В таком случае, откройте Ваш объект- и заполните значение: "Отображаемое значение" на любую текстовую колонку существующую в объекте. Не забудьте отобразить "все" свойства объекта.
Спасибо огромное. Это видать я сам накосячил тк удалил поле которое создалось по умолчанию когда объект создался (я вспомнил , что объект создался при создании раздела через конструктор).