закладка на карточке редактирования

Добрый день!
Скажите, пожалуйста, можно ли каким-то образом отражать во второй вкладке(или первой) окна редактирования карточки какую-либо закладку из этого же раздела. И при этом иметь возможность при этом удалять/добавлять записи на подобную закладку.

Нравится

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

Здравствуйте Дарья.
Приведем пример, добавим в карточку редактирования wnd_IncidentEdit закладку описание и отобразим в ней содержимое детали [Описание]

Просьба ознакомится с прикрепленным файлом
Процесс создания закладки в карточке инцидента.doc

Добрый вечер!
Спасибо большое, но я имела ввиду немного другое.
В одной из презентаций я видела такой пример ( в прикрепленном файле)
Хотелось бы иметь возможность добавлять, удалять, изменять записи на этой закладке

Добрый день!
Использовала скрипт в карточке на onprepare

var Dataset = dlData.Dataset;
if (TGroup.InitializeInvoicesFlag != true) {

TGroup.InvoicesWindow = wndTravellingGroup.Window;
SetAttribute(TGroup.InvoicesWindow, 'EditWindowUSI', 'wnd_TravellingGroupEdit');
SetAttribute(TGroup.InvoicesWindow, 'ParentItemFieldName', 'ContractID');
TGroup.InvoicesWindow.Prepare();
TGroup.InvoicesDataset =
TGroup.InvoicesWindow.ComponentsByName('dlData').Dataset;
TGroup.InitializeInvoicesFlag = true;

}

var ContractID = Dataset.ValAsGUID('ID');
if (ContractID == TGroup.InvoicesOldContractID) {
return;
} else {
TGroup.InvoicesOldContractID = ContractID;
}
SetAttribute(TGroup.InvoicesWindow, 'ParentItemID', ContractID);
RefreshDetailData(Dataset, 'ID', TGroup.InvoicesDataset, 'ContractID');
ApplyDatasetFilter(TGroup.InvoicesDataset, 'ContractID', Dataset.Values('ID'), true);

Скажите, пожалуйста, как можно сохранить родительскую запись перед созданием дочерней, если она не была сохранена?

Дарья, опишите, пожалуйста, конкретно задачу, которую вы пытаетесь реализовать.

"Татаровская Дарья" написал:Скажите, пожалуйста, как можно сохранить родительскую запись перед созданием дочерней, если она не была сохранена?

Последовать рекомендациям Олега http://www.community.terrasoft.ua/forum/topic/799#comment-21195 не получилось ?

не получилось.
Сделали обходной путь - кнопка Сохранить в карточке контакта, перед тем как использовать кнопки на закладке.

Но хотелось бы именно сохранять родительскую запись перед созданием дочерней ( без дополнительной кнопки)

"Татаровская Дарья" написал:не получилось.

Дарья, а можете показать как вы делали?
В вашем случае просто нужно при нажатии на любую из кнопок в реестре проверять в каком состоянии находится dataset карточки. Если состояние Insert, то автоматически делать сохранение. Но только в этом случае нужно сохранять где-то пометку о том, что карточка была автоматически сохранена. Потому что если пользователь нажмет кнопку Отмена -- нужно удалять созданную запись.

Дарья, вашу задачу можно реализовать следующим образом:
1) в скрипте к окну-гриду создаете свой обработчик нажатия кнопки btnAdd

function btnAddOnClick(Control) { 
	if (Self.Attributes('ParentItemFieldName') == 'ContractID')
	{
		var Dataset = Services.GetNewItemByUSI('ds_Contract'); 
		ApplyDatasetFilter(Dataset, 'ID', Self.Attributes('ParentItemID'), true); 
		Dataset.Open(); 
		if (Dataset.IsEmptyPage) 
	    	    SendNotify(Self, 'SAVE'); 
		else 
	    	    scr_BaseGridArea.btnAddOnClick(btnAdd); 
		Dataset.Close(); 
		return;
	}
 
	scr_BaseGridArea.btnAddOnClick(btnAdd); 
} 

Таким образом проверяете, сохранена ли родительская запись, и если нет - отправляете сообщение SAVE родительскому окну.

2) в том же скрипте создаете обработчик события окна OnNotify

function wnd_BaseGridAreaOnNotify(ScriptableService, Sender, Message, Data) {  
	if (Message == 'SAVED') 
	{ 
		scr_BaseGridArea.btnAddOnClick(btnAdd); 
		return; 
	} 
 
	scr_BaseGridArea.wnd_BaseGridAreaOnNotify(ScriptableService, Sender, Message, Data); 
};

Тут мы "ловим" сообщение SAVED, о том что родительская форма сохранила запись. И вызываем окно добавления записи.

3) и, наконец, в форме редактирования, в котором расположили это окно-грид, также создаете обработчик события OnNotify

function wnd_BaseDBEditOnNotify(ScriptableService, Sender, Message, Data) { 
	if (Message == 'SAVE') 
	{ 
	    if (SaveChangesWithCheck(Self, BaseDBEdit)) 
	    { 
	    	dlData.Dataset.Edit(); 
	        Sender.Notify(Self, 'SAVED', null); 
	    } 
	} 
} 

В нем мы получаем сообщение SAVE, пытаемся сохранить запись, и отправляем в ответ сообщение SAVED

Спасибо, Валерий, за совет

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