Копирование операции
Скрипты
Разработка

При копировании операции в разделе продажи, необходимо устанавливать текущую дату

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

}
[/javascript]

scr_BaseGridAreaUtils
[javascript]
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);
}
[/javascript]

C копированием дат разобрался :)
В свойствах датасета убрал галочку "копирование поля"

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