Публикация

Создание документа через меню "Действие" в разделе [Договор]

Для того чтобы добавить действие «Создать документ на основании договора» в раздел [Договоры] необходимо придерживаться следующего алгоритма:
1. Запустить Terrasoft Administrator.
2. Открыть сервис wnd_ContractsWorkspace. Перейти на закладку «Невизуальные», выделить компонент amiActions. Добавить новый ActionMenuItem:
o1

Заполнить свойства следующим образом:
o2

Сохранить изменения.
3. Перейти на закладку «События». Для добавленного компонента amiDocumentByContract создать обработчик события OnExecute:
o4

В теле функции обработки события прописать код:

FUNCTION amiDocumentByContractOnExecute(ActionMenuItem, Sender) {
         var ContractIDs = BaseWorkspace.Grid.SelectedIDs;
            var Count = ContractIDs.Count;
            IF (!Count||IsDatasetEmpty(dlContracts.Dataset)) {
                        ShowWarningDialog(GridNotContainsAnyRecords);
                        RETURN;
            }
            IF (Count > 1) {
                        var Message = FormatStr(GridContainsSomeRecords, Count);
                        IF (ShowConfirmationDialog(Message) == mrYes) {
                                   CreateDocumentByContract(ContractIDs);
                        }
            } else {
                        CreateDocumentByContract(ContractIDs);
            }
}

В этом же скрипте (wnd_ContractsWorkspaceScript) реализовать функцию FUNCTION CreateDocumentByContract(ContractIDs)

FUNCTION CreateDocumentByContract(ContractIDs) {
            var ContractDataset = dlContracts.Dataset;
            FOR (var i=0; iContractIDs.Count; i++) {
                        var Dataset = Services.GetSingleItemByUSI(ContractDataset.USI);
                        var ContractID = ContractIDs.Items(i);
                        ApplyDatasetIDFilter(Dataset, ContractID, true);
                        Dataset.DisableEvents();
                        Dataset.Open();
                        var DefaultValues = GetNewDictionary();
                        var NamedArray = GetDatasetFieldsValuesNamedArray(Dataset, new Array(
                                   'OwnerID', 'ContactID', 'CampaignID', 'OpportunityID',                            
                                   /* MODULE PROJECTS */ 'ProjectID'/* ENDMODULE PROJECTS */));
                        AddNamedArrayToDictionary(NamedArray, DefaultValues);
                        var InvoiceDate = GetFieldValueFromDisabledField(Dataset, 'StartDate');
                        var ContractID = GetFieldValueFromDisabledField(Dataset, 'ID');
                        Dataset.Close();
                        Dataset.EnableEvents();
                        DefaultValues.ADD('ContractID', ContractID);
                        DefaultValues.ADD('InvoiceDate', InvoiceDate);
                        var Attributes = GetNewDictionary();
                        Attributes('IsCreatedByContractID') = ContractID;
                        CreateNewWindowEdit(Self, 'wnd_DocumentEdit', DefaultValues, Attributes);
                       
            }
}

Таким образом скрипт будет иметь вид:
o5

4. Сохранить все внесенные изменения. Перезапустить приложение Terrasoft. Проверить работу функционала.

Перед внесением изменений в конфигурацию настоятельно рекомендуем создать резервную копию БД.

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать