При копировании операции в разделе продажи, необходимо устанавливать текущую дату
Доброго времени суток.
Столкнулся со следующей задачей:
При копировании операции в разделе продажи, чтобы менялась "дата От:" на текущую, а также  копировались права доступа.
У меня совсем нет опыта в работе с 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 копированием дат разобрался :)
В свойствах датасета убрал галочку "копирование поля"