Добрый день!
Скажите, пожалуйста, можно ли каким-то образом отражать во второй вкладке(или первой) окна редактирования карточки какую-либо закладку из этого же раздела. И при этом иметь возможность при этом удалять/добавлять записи на подобную закладку.
Нравится
Здравствуйте Дарья.
Приведем пример, добавим в карточку редактирования 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