Здравствуйте. Подскажите пожалуйста, ситуация такая: Создал объект для создания нового раздела( родитель базовый объект). В мастере разделов создал раздел "ТС" . Далее была создана деталь, в этой детали есть поле "ТС" (тип справочник) - ссылка на объект раздела. Добавляю деталь во вкладку(не важно куда), нажимаю добавить деталь, открывается форма добавления и поле "ТС" выглядит как справочник, но когда я на него нажимаю, то получаю пустую страницу.
Как я понимаю, то нужно для объекта раздела нужно создать схему или страницу? Я не сильно опытен в этом деле и если можно подскажите как это сделать.
Нравится
Здравствуйте, Павел.
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)
Павел, я Вам предложил выполнить все действия от начала до конца максимально используя стандартные средства , и минимум использовать [Конфигурацию], что бы избежать ошибок при выполнении вашего задания.
попробуйте пройти все эти шаги регистрируя новые разделы, справочники, детали.
Так же, приложите, пожалуйста, скриншот с "пустым" открытым справочником и консолью браузера.
вот с консолькой и кусок кода
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; });
Судя по ошибке в консоли- Вы по-прежнему используете вручную созданный объект раздела.
ошибка нам сообщает: primaryDisplayColumn is undefined.- не определена первичная колонка в объекте для отображения.
В таком случае, откройте Ваш объект- и заполните значение: "Отображаемое значение" на любую текстовую колонку существующую в объекте. Не забудьте отобразить "все" свойства объекта.
"Александр Зубков" написал:Судя по ошибке в консоли- Вы по-прежнему используете вручную созданный объект раздела.
ошибка нам сообщает: primaryDisplayColumn is undefined.- не определена первичная колонка в объекте для отображения.В таком случае, откройте Ваш объект- и заполните значение: "Отображаемое значение" на любую текстовую колонку существующую в объекте. Не забудьте отобразить "все" свойства объекта.
Спасибо огромное. Это видать я сам накосячил тк удалил поле которое создалось по умолчанию когда объект создался (я вспомнил , что объект создался при создании раздела через конструктор).