подскажите, не получается вызывать форму редактирования у новой детали
// wnd_OppTransfInfoGridAreaScript
//-----------------------------------------------------------------------------
function Initialize(Window) {
SetAttribute(Window, 'DatasetUSI', 'ds_OppTransfInfo');
SetAttribute(Window, 'ParentItemFieldName', 'OpportunityID');
SetAttribute(Window, 'EditWindowUSI', 'wnd_OppTransfInfoEdit');
}
function wnd_OppTransfInfoGridAreaOnCreate(Window) {
Initialize(Window);
//TODO
}
это в скрипте для wnd_OppTransfInfoGridArea
для wnd_OpportunitiesWorkspaceScript
добавляю скрипты для инициализации...
OpportunitiesWorkspace.OppTransfInfoWindow = wndOppTransfInfoDetail.Window;
var DetailWindow = OpportunitiesWorkspace.OppTransfInfoWindow;
SetAttribute(DetailWindow, 'DatasetUSI', 'ds_OppTransfInfo');
SetAttribute(DetailWindow, 'ParentItemFieldName', 'OpportunityID');
SetAttribute(DetailWindow, 'EditWindowUSI', 'wnd_OppTransfInfoEdit');
DetailWindow.Prepare();
OpportunitiesWorkspace.OppTransfInfoDataset =
DetailWindow.ComponentsByName('dlData').Dataset;
function RefreshOppTransfInfoDetail() {
if (OpportunitiesWorkspace.InitializeOppTransfInfoFlag != true) {
InitializeOppTransfInfoDetail();
OpportunitiesWorkspace.InitializeOppTransfInfoFlag = true;
}
var OpportunityID =
BaseWorkspace.GridDataset.ValAsGUID('ID');
if (OpportunityID == OpportunitiesWorkspace.OppTransfInfoOldOpportunityID) {
return;
} else {
OpportunitiesWorkspace.OppTransfInfoOldOpportunityID = OpportunityID;
}
SetAttribute(OpportunitiesWorkspace.OppTransfInfoWindow, 'ParentItemID',
OpportunityID);
RefreshDetailData(BaseWorkspace.GridDataset, 'ID',
OpportunitiesWorkspace.DocumentsDataset, 'OpportunityID');
}
Нравится
Попробуйте вот эту строку
RefreshDetailData(BaseWorkspace.GridDataset, 'ID', OpportunitiesWorkspace.DocumentsDataset, 'OpportunityID');
Заменить на такую:
RefreshDetailData(BaseWorkspace.GridDataset, 'ID', OpportunitiesWorkspace.OppTransfInfoDataset, 'OpportunityID');
У меня так работает:
//----------------------------------------------------------------------------- // wnd_AccountAvtoparkGridAreaScript //----------------------------------------------------------------------------- function Initialize(Window) { Window.Attributes('EditWindowUSI') = 'wnd_AccountAvtoparkEdit'; } function wnd_AccountAvtoparkGridAreaOnPrepare(Window) { Initialize(Window); wnd_BaseGridAreaOnPrepare(Window); }
сделал так
//----------------------------------------------------------------------------- // wnd_OppTransfInfoGridAreaScript //----------------------------------------------------------------------------- function Initialize(Window) { SetAttribute(Window, 'DatasetUSI', 'ds_OppTransfInfo'); SetAttribute(Window, 'ParentItemFieldName', 'OpportunityID'); SetAttribute(Window, 'EditWindowUSI', 'wnd_OppTransfInfoEdit'); } //function wnd_OppTransfInfoGridAreaOnCreate(Window) { // Initialize(Window); //TODO //} function wnd_OppTransfInfoGridAreaOnPrepare(Window) { Initialize(Window); wnd_BaseGridAreaOnPrepare(Window); //TODO }
плюс подключил в скрипты
scr_BaseGridArea
Scr-BaseGridAreautils
они наверняка понядобятся.... без них тоже не открывается окно редактирования!
выдаёт такую ошибку:
[09.11.02 20.43.01.359] (E) Ошибка выполнения метода 'btnAddOnClick'. Дублируется значение свойства 'ScriptUSI'. Значение 'scr_BaseGridArea' уже существует «Call Stack»
//----------------------------------------------------------------------------- // wnd_OppTransfInfoGridAreaScript //----------------------------------------------------------------------------- function Initialize(Window) { Window.Attributes('EditWindowUSI') = 'wnd_OppTransfInfoEdit'; // SetAttribute(Window, 'DatasetUSI', 'ds_OppTransfInfo'); // SetAttribute(Window, 'ParentItemFieldName', 'OpportunityID'); // SetAttribute(Window, 'EditWindowUSI', 'wnd_OppTransfInfoEdit'); } //function wnd_OppTransfInfoGridAreaOnCreate(Window) { // Initialize(Window); //TODO //} function wnd_OppTransfInfoGridAreaOnPrepare(Window) { Initialize(Window); wnd_BaseGridAreaOnPrepare(Window); //TODO } так тоже ничего, пупутно возник вопрос: влияет ли регистр в названии tbl ds wnd///
Нужно добавить, что использовать событие OnCreate для инициализации окон не рекомендуется. Для подготовки окна наилучшим образом подходит событие OnPrepare, в обработчике которого можно выполнить всю необходимую настройку окна и выполнить базовый обработчик.
Также можно посоветовать для обновления деталей использовать функцию RefreshCommonDetail вместо громоздких Initialize и Refresh. Примеры использования RefreshCommonDetail можно легко найти в системе, используя GrepSearch.
Ошибка "Дублируется значение свойства 'ScriptUSI'" возникла по причине явного использования в скрипте окна Вашей детали скрипта scr_BaseGridArea. Этого делать нельзя, т.к. данный скрипт используется в качестве скрипта окна родителя, и явное использование (добавление в список используемых) его в наследнике приводит к ошибке.
Может Вам стоит воспользоваться мастером создания/редактирования разделов?
До версии 3.3.1 вызов: TSClient.exe /wnd=wnd_CreateNewWorkSpace;
В 3.3.1: TSCRM.exe /wnd=wnd_CreateNewWorkSpace
Точнее, наоборот:
Для 3.3.1.х: TSClient.exe /wnd=wnd_CreateNewWorkSpace;
Для более ранних версий TSCRM.exe /wnd=wnd_CreateNewWorkSpace;
вроде при использовании мастера не получится сделать отдельно форму редактирования для детали (wnd_....Edit), да и были некоторые трудности при использовании мастера.
Может всё таки подскажите куда посмотреть... (мастером тоже попробую)
"Лаптинов Андрей Игоревич" написал:Может всё таки подскажите куда посмотреть...
Используйте функцию RefreshCommonDetail (ее реализация описана в scr_WorkspaceUtils).
Вызывать RefreshCommonDetail с соответствующими параметрами нужно в функции RefreshDetails() скрипта окна раздела (в Вашем случае в wnd_OpportunitiesWorkspaceScript).
Не забудьте убрать вызов ваших функций InitializeOppTransfInfoDetail и RefreshOppTransfInfoDetail.
вопрос всплыл опять....
Попытка создания с помощью мастера создания разделов новой детали...
есть два поля... Заголовок- это понятно... а вот что надо пропиcать в поле Код....?
"Лаптинов Андрей Игоревич" написал:вот что надо пропиcать в поле Код
Слово латиницей, по которому будут созданы все сервисы детали (таблица, сервис запроса и набора данных, окно редактирования, окно детали в разделе ...).
Например, для детали "Адреса" раздела "Контрагенты" код равен AccountAddress.
"Лаптинов Андрей Игоревич" написал:понятно... название группы сервисов.
Можно и так сказать... главное во всем этом - что Вы в код впишите, так всю жизнь и будет :smile:
:wink:
Тогда второй вопрос: у меня в деталях создалась группа сервисов, и если я правлю раздел "Продажи", то вроде дополнительно обновилось Wnd_OpportunitiesWorkspace и скрипт этого окна... ?? для переноса в боевую базу надо обновить группу сервисов и + эти два сервиса...
"Лаптинов Андрей Игоревич" написал:для переноса в боевую базу надо обновить группу сервисов и + эти два сервиса...
да, выгрузить все новые сервисы и окно раздела+скрипт окна раздела.