15.08.2021, 18:45 | #11 |
Участник
|
На счет стандарта ничего сказать не могу, модель и формат делал сам "от корня" и все конструкции тоже придумывал сам.
Данные разные т.к. формат (отчет) выполнялся на разных средах. Делал так - в маппинге модели из GeneralJournalEntry отбираю записи по номеру ваучера, затем из GeneralJournalAccountEntry сами проводки; из структуры LedgerDimension выбираю аналитики, имеющие непустые значения $GeneralJournalLines:Вычисляемое поле = FILTER(GeneralJournalEntry, GeneralJournalEntry.SubledgerVoucher='$LedgerTransLines'.Voucher): Список записей $GeneralJournalAccountLines:Вычисляемое поле = FILTER(GeneralJournalAccountEntry, VALUEIN(GeneralJournalAccountEntry.GeneralJournalEntry, '$LedgerTransLines'.'$GeneralJournalLines', '$LedgerTransLines'.'$GeneralJournalLines'.RecId)): Список записей Финансовые аналитики LedgerDimension.Dimension(Счет ГК.Dimension):Запись Вычисляемые поля $GeneralJournalLine:Вычисляемое поле = FIRSTORNULL(WHERE('$LedgerTransLines'.'$GeneralJournalLines', '$LedgerTransLines'.'$GeneralJournalLines'.RecId=@.GeneralJournalEntry)): Запись $LedgerDimension:Вычисляемое поле = WHERE(@.'LedgerDimension.Dimension'.'Main account and dimensions', @.'LedgerDimension.Dimension'.'Main account and dimensions'.Value.Code<>""): Список записей Затем маппинг на модель Transactions(Проводки):Список записей = @.'$GeneralJournalAccountLines' AccountingDate(Дата учета):Дата = @.'$GeneralJournalLine'.AccountingDate AmountAccounting(Сумма в валюте учета):Вещественный = @.AccountingCurrencyAmount AmountReporting(Сумма в валюте отчетности):Вещественный = @.ReportingCurrencyAmount AmountTransaction(Сумма в валюте транзакции):Вещественный = @.TransactionCurrencyAmount Currency(Валюта):Строка = @.TransactionCurrencyCode JournalNumber(Номер журнала):Строка = @.'$GeneralJournalLine'.JournalNumber LedgerDimension(Аналитики):Список записей = @.'$LedgerDimension' Definition:Запись = @.Definition Name:Строка = @.Definition.Name Type:Строка = @.Definition.Type Value:Запись = @.Value Code:Строка = @.Value.Code Description:Строка = @.Value.Description LedgerDimensionValue(Аналитики значение):Строка = @.LedgerAccount MainAccountName(Счет ГК название):Строка = @.'>Relations'.MainAccount.Name MainAccountValue(Счет ГК):Строка = @.'>Relations'.MainAccount.MainAccountId Text(Описание):Строка = @.Text Voucher(Ваучер):Строка = @.'$GeneralJournalLine'.SubledgerVoucher В формате параметрами определяются счета ГК ($ReportAccounts) и набор аналитик ($DimensionSet) для фильтрации данных из модели Входные параметры пользователя $DimensionSet(Набор финансовых аналитик):Входной параметр пользователя: DimensionSetName $ReportAccounts(Счета ГК):Входной параметр пользователя: Список записей Value:MainAccountNum В сопоставлении вычисляются Вычисляемые поля $AnalyticsCount:Вычисляемое поле = COUNT('$AnalyticsList'): Целочисленный $AnalyticsList:Вычисляемое поле = DimensionHierarchy.'findByTypeAndName()'(DimensionHierarchyType.Focus, '$DimensionSet').'<Relations'.DimensionHierarchyLevel: Список записей $AnalyticsListOrdered:Вычисляемое поле = ORDERBY('$AnalyticsList', '$AnalyticsList'.Level): Список записей Вычисляемые поля $AnalyticName:Вычисляемое поле = @.'>Relations'.DimensionAttribute.Name: Строка $FilteredLines:Вычисляемое поле = WHERE(model.JournalLines, AND(model.JournalLines.AccountType=ACType.Vend, model.JournalLines.OffsetAccountType=ACType.Ledger, model.JournalLines.Journal.Posted, VALUEIN(model.JournalLines.OffsetLedgerMainAccount, '$ReportAccounts', '$ReportAccounts'.Value))): Список записей $ReportLines:Вычисляемое поле = ORDERBY('$FilteredLines', '$FilteredLines'.TransDate): Список записей $Transactions:Вычисляемое поле = ALLITEMS('$ReportLines'.Transactions): Список записей Вычисляемые поля $Analytics:Вычисляемое поле = '$AnalyticsListOrdered': Список записей Вычисляемые поля $AnalyticInfo:Вычисляемое поле = FIRSTORNULL(WHERE('$ReportLines'.'$Transactions'.LedgerDimension, '$ReportLines'.'$Transactions'.LedgerDimension.Definition.Name=@.'$AnalyticName')): Запись $AnalyticName:Вычисляемое поле = '$AnalyticsListOrdered'.'>Relations'.DimensionAttribute.Name: Строка $Visible:Вычисляемое поле = VALUEIN(@.MainAccountValue, '$ReportAccounts', '$ReportAccounts'.Value): Логический и маппятся на ячейки отчета Диапазон<TransLine>: Vertical? = @.'$Transactions' Ячейка<Trans_Month> = DateTimeUtil.month(DATETODATETIME(@.AccountingDate)) Ячейка<Trans_Date> = @.AccountingDate Ячейка<Trans_Supplier> = ('$ReportLines'.Vendor.AccountNum&"-")&'$ReportLines'.Vendor.Name Ячейка<Trans_Description> = @.Text Analytics: Диапазон<Trans_Analytics>: Horizontal = @.'$Analytics' Ячейка<Trans_Analytics> = @.'$AnalyticInfo'.Value.Code Ячейка<Trans_Creator> = '$ReportLines'.Approver.Name Ячейка<Trans_Created> = '$ReportLines'.modifiedDateTime |
|
Теги |
generic electronic reporting, ger |
|
|