Доброго времени суток.
Столкнулся со следующей задачей:
При копировании операции в разделе продажи, чтобы менялась "дата От:" на текущую, а также копировались права доступа.
У меня совсем нет опыта в работе с Terrasoft, поэтому прошу помощи профессионалов.

Нравится

3 комментария

Здравствуйте, Дмитрий!

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 копированием дат разобрался :)
В свойствах датасета убрал галочку "копирование поля"

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