Показать сообщение отдельно
Старый 15.08.2021, 18:45   #467  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
На счет стандарта ничего сказать не могу, модель и формат делал сам "от корня" и все конструкции тоже придумывал сам.
Данные разные т.к. формат (отчет) выполнялся на разных средах.
Делал так - в маппинге модели из 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