Создание новой детали

подскажите, не получается вызывать форму редактирования у новой детали

//-----------------------------------------------------------------------------
// 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

добавляю скрипты для инициализации...

function InitializeOppTransfInfoDetail() {
        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');

}

Нравится

17 комментариев

Попробуйте вот эту строку

        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;

Спасибо, Дмитрий.
Немного перепутал.:redface:

вроде при использовании мастера не получится сделать отдельно форму редактирования для детали (wnd_....Edit), да и были некоторые трудности при использовании мастера.
Может всё таки подскажите куда посмотреть... (мастером тоже попробую)

"Лаптинов Андрей Игоревич" написал:Может всё таки подскажите куда посмотреть...

Используйте функцию RefreshCommonDetail (ее реализация описана в scr_WorkspaceUtils).
Вызывать RefreshCommonDetail с соответствующими параметрами нужно в функции RefreshDetails() скрипта окна раздела (в Вашем случае в wnd_OpportunitiesWorkspaceScript).
Не забудьте убрать вызов ваших функций InitializeOppTransfInfoDetail и RefreshOppTransfInfoDetail.

вопрос всплыл опять....

Попытка создания с помощью мастера создания разделов новой детали...

есть два поля... Заголовок- это понятно... а вот что надо пропиcать в поле Код....?

"Лаптинов Андрей Игоревич" написал:вот что надо пропиcать в поле Код

Слово латиницей, по которому будут созданы все сервисы детали (таблица, сервис запроса и набора данных, окно редактирования, окно детали в разделе ...).
Например, для детали "Адреса" раздела "Контрагенты" код равен AccountAddress.

понятно... название группы сервисов.

"Лаптинов Андрей Игоревич" написал:понятно... название группы сервисов.

Можно и так сказать... главное во всем этом - что Вы в код впишите, так всю жизнь и будет :smile:

:wink:

Тогда второй вопрос: у меня в деталях создалась группа сервисов, и если я правлю раздел "Продажи", то вроде дополнительно обновилось Wnd_OpportunitiesWorkspace и скрипт этого окна... ?? для переноса в боевую базу надо обновить группу сервисов и + эти два сервиса...

"Лаптинов Андрей Игоревич" написал:для переноса в боевую базу надо обновить группу сервисов и + эти два сервиса...

да, выгрузить все новые сервисы и окно раздела+скрипт окна раздела.

Показать все комментарии