При копировании операции в разделе продажи, необходимо устанавливать текущую дату
Доброго времени суток.
Столкнулся со следующей задачей:
При копировании операции в разделе продажи, чтобы менялась "дата От:" на текущую, а также копировались права доступа.
У меня совсем нет опыта в работе с Terrasoft, поэтому прошу помощи профессионалов.
Нравится
Здравствуйте, Дмитрий!
1. Для того, чтобы при копировании поменялось значение поля, нужно в обработчике события OnDatasetAfterAppend датасета даталинка прописать такой код:
if (BaseDBEdit.IsCopy) {
//TO DO присвоение нужного значения полю
}
2. Для копирования прав доступа нужно в обработчике кнопки OK прописать вызов функции копирования прав доступа CopyRight:
function btnOKOnClick(Control) {
scr_BaseDBEdit.btnOKOnClick(Control);
if (Self.Attributes('IsCopy')) {
var RecordID = Self.Attributes('RecordID');
CopyRight(Self.Attributes('SourceRecordID'), RecordID);
}
}
function CopyRight(OldRecordID, NewRecordID) {
var InsertSelectQuery = GetSingleItemByCode('isq_CopyRight');
var Columns = InsertSelectQuery.SelectQuery.Columns;
var ConstColumn = Columns.ItemsByAlias('NewRecordID');
ConstColumn.ColumnValue = NewRecordID;
SetParameterValue(InsertSelectQuery.Parameters, 'OldRecordID', OldRecordID);
SetParameterValue(InsertSelectQuery.Parameters, 'MyAdminUnitID',
Connector.CurrentUser.ID);
try {
InsertSelectQuery.Execute();
}
catch(e) {
CatchException(e);
}
}
где isq_CopyRight - сервис InsertSelect Query, который Вы можете реализовать самостоятельно по аналогии с подобным сервисом, структуру которого можно увидеть на скриншоте в прикрепленном к данному посту файлу.
Я не совсем верно задал вопрос, прошу прощения.
При нажатии на кнопку "Копировать", которая находится в CashFlowGridArea.
В обработчике нашел метод, который копирует, но не знаю как реализовать подстановку текущей даты в определенные поля.
wnd_CashflowGridAreaScript
function btnCopyOnClick(Control) { var AdditionalAttributes = GetNewDictionary(); AdditionalAttributes('OldRecordID') = dlData.Dataset.Values('ID'); var WorkspaceDataset = Self.Attributes('WorkspaceDataset'); if (Assigned(WorkspaceDataset)) { AdditionalAttributes('IsDetailCopy') = true; } CopyGridAreaData(Self, BaseGridArea, AdditionalAttributes); }
scr_BaseGridAreaUtils
function CopyGridAreaData(Window, BaseGridArea, AdditionalAttributes) { if (!GetCanCopyData(BaseGridArea.GridDataset)) { return; } CheckAttributes(Window, 'EditWindowUSI'); var Attributes = GetCopyDataAttributes(Window, BaseGridArea); if (Assigned(AdditionalAttributes)) { CopyAttributes(AdditionalAttributes, Attributes); } if (IsAttributeExists(Window, 'EditWindowDatasetUSI')) { Attributes('DatasetUSI') = Window.Attributes('EditWindowDatasetUSI'); } Attributes('WorkspaceDataset') = BaseGridArea.WorkspaceDataset; Attributes('EditWindowCaption') = Window.Attributes('EditWindowCaption'); ShowEditWindowEx(BaseGridArea.EditWindowUSI, Attributes); }
C копированием дат разобрался :)
В свойствах датасета убрал галочку "копирование поля"