|
28.08.2021, 18:35 | #1 |
Участник
|
Выбираю все проводки по одному номеру ваучера
$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<>""): Список записей Поле LedgerDimension представляется веткой Финаналитики. Мапплю этот список на модель 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 Список аналитик в модели заполняется без ошибок |
|
28.08.2021, 18:51 | #2 |
Участник
|
Но если я фильтрую список транзакций - нужны не все, а только по определенным счетам
$GeneralJournalAccountFilter:Вычисляемое поле = WHERE(@.'$GeneralJournalAccountLines', VALUEIN(FIRSTORNULL(@.'$GeneralJournalAccountLines'.'>Relations'.MainAccount).MainAccountId, AccountsList, AccountsList.Value)): Список записей Поля Методы Отношения Финансовые аналитики ---LedgerDimension.Dimension(Счет ГК.Dimension):Запись Вычисляемые поля ---$GeneralJournalLine:Вычисляемое поле = FIRSTORNULL(WHERE('$LedgerTransLines'.'$GeneralJournalLines', '$LedgerTransLines'.'$GeneralJournalLines'.RecId='$LedgerTransLines'.'$GeneralJournalAccountLines'.GeneralJournalEntry)): Запись ---$LedgerDimension:Вычисляемое поле = WHERE('$LedgerTransLines'.'$GeneralJournalAccountLines'.'LedgerDimension.Dimension'.'Main account and dimensions', '$LedgerTransLines'.'$GeneralJournalAccountLines'.'LedgerDimension.Dimension'.'Main account and dimensions'.Value.Code<>""): Список записей И мапплю на модель это список Transactions(Проводки):Список записей = @.'$GeneralJournalAccountFilter' то при проверке ошибок нет, но при выполнении на каждую запись выдается ошибка Вычисление выражения для пути "$LedgerDimension". ---LedgerDimension.Dimension/Main account and dimensions ------Элемент "LedgerDimension.Dimension" конфигурации "1" не найден. Проверял и для других таблиц где есть поле типа LedgerDimension - результат тот же - если список получен функцией FILTER - то структура Финаналитики отрабатывает нормально; но если список получен функцией WHERE - то обращение к элементу Финаналитики приводит к ошибке во время выполнения с ничего не объясняющим сообщением. Может кто-то сталкивался с такой ситуацией и знает возможность ее обойти? |
|
29.08.2021, 09:58 | #3 |
Участник
|
А зачем обходить?
Вроде как ms, если не ошибаюсь, рекомендуется использовать filter вместо where. |
|
29.08.2021, 12:12 | #4 |
Участник
|
например мне нужно выбрать проводки по одному ваучеру и конкретному счету ГК (или нескольким счетам). Из GeneralJournalEntry выбираю записи по номеру ваучера и затем связанные (по полю GeneralJournalEntry) записи из GeneralJournalAccountEntry. Одним FILTER такую выборку сделать нельзя, т.к. LedgerDimension это RefRecId - поле не содержит значение MainAccount по которому надо фильтровать, а FILTER не допускает использование для фильтрации значения из другой таблицы, связанной через Relation. Поэтому приходится FILTER использовать для отбора записей из GeneralJournalAccountEntry, а уже потом WHERE для отбора по полю таблицы DimensionAttributeValueCombination, связанной по полю типа RefRecId с GeneralJournalAccountEntry. Т.е. FILTER позволяет фильтровать только по полю самой таблицы, а WHERE - и по полю связанной таблицы. И проверку выражение FILTER, где в условии используется поле другой таблицы, связанной по Relation, не проходит - выдается сообщение - Используйте WHERE.
|
|
29.08.2021, 22:39 | #5 |
Участник
|
Цитата:
Интересно надо проверить. Пример слишком сложный с проблемой разницы между where и filter, упростить бы как то, тем более как понимаю код разный в силу э предложения выше. Последний раз редактировалось axm2017; 29.08.2021 в 22:42. |
|
30.08.2021, 16:29 | #6 |
Участник
|
Не возьмусь утверждать, но вроде FILTER выполняется на SQL-сервере, а WHERE - в памяти на клиенте. Естественно, в первом случае производительность выше, поэтому там где возможно и рекомендуется использовать FILTER.
|
|
01.09.2021, 23:39 | #7 |
Участник
|
А можно ли как-то фильтровать значения, выводимые в лукапе типа Входные параметры пользователя? Например, объявляю входной параметр Inventory с EDT = InventLocationId. В списке выводится все значения таблицы InventLocation. А надо, чтобы выводились склады только одного сайта, т.е. отфильтрованные по InventLocation.InventSiteId == "Site1". Это возможно?
|
|
02.09.2021, 10:06 | #8 |
Banned
|
Цитата:
Сообщение от Libovs
А можно ли как-то фильтровать значения, выводимые в лукапе типа Входные параметры пользователя? Например, объявляю входной параметр Inventory с EDT = InventLocationId. В списке выводится все значения таблицы InventLocation. А надо, чтобы выводились склады только одного сайта, т.е. отфильтрованные по InventLocation.InventSiteId == "Site1". Это возможно?
|
|
02.09.2021, 23:29 | #9 |
Участник
|
Но тогда надо еще и параметр как-то передавать во View - значение для фильтра InventLocation.InventSiteId == параметр?
|
|
03.09.2021, 11:01 | #10 |
Banned
|
|
|
07.09.2021, 14:16 | #11 |
Участник
|
Можно ли собрать в один список переменное количество списков?
Например "верхний" список записи таблицы InventTransOrigin содержит 2 записи, с каждой из которых связаны 3 записи таблицы InventTrans. $InventTransOrigin=FILTER(InventTransOrigin, InventTransOrigin.InventTransId=Value) ----$InventTrans=ALLITEMS(@.'<Relations'.InventTrans) Нужно получить новый (одноуровневый) список всех транзакций из 6 записей. По смыслу это функция LISTJOIN, но как написать выражение для объединения переменного количества одноименных ($InventTrans) списков - сообразить не могу. Это в принципе возможно? |
|
07.09.2021, 14:40 | #12 |
Banned
|
Если на экспорт, то надо просто проходить по подчиненному списку, развернуть так сказать в обратную сторону:
File Line <-> InventTrans Зачем отдельный объект для списка? P.S. А, вот оно, ALLITEMSQUERY: https://docs.microsoft.com/en-us/dyn...-allitemsquery Последний раз редактировалось EVGL; 07.09.2021 в 14:44. |
|
|
За это сообщение автора поблагодарили: axm2017 (4). |
07.09.2021, 15:32 | #13 |
Участник
|
Или ALLITEMS если ALLITEMSQUERY не транслируется в Query
|
|
|
За это сообщение автора поблагодарили: axm2017 (4). |
07.09.2021, 21:52 | #14 |
Участник
|
Спасибо за помощь - на синтетическом тестовом примере получилось как надо, буду вставлять в реальный отчет.
И еще вопрос - можно ли получить значение Name/Label перечисления модели не из самого энама, а из Входные пользовательские параметры перечисления модели данных? Например есть сам энам BrandList и входной параметр BrandFilter. К обоим вычисляемые переменные $FullBrandList:Вычисляемое поле = LISTOFFIELDS(BrandList) $BrandList:Вычисляемое поле = LISTOFFIELDS(BrandFilter) На ветку модели BrandList мапплю поле Name из первой и второй переменной - получается такой результат В принципе я понимаю, почему так получается, но суть вопроса в том - если в лукапе BrandFilter я выбираю 1-е и 3-е значение энама (там включен выбор нескольких значений) как в получить строковые значения "Brand1" и "Brand3" для маппинга на модель в BrandList.Value? |
|
20.09.2021, 14:21 | #15 |
Участник
|
Подскажите, а на что влияет выражение задаваемое в Изменить видимость для Входной параметр пользователя? Я не вижу никаких изменений в модели когда это выражение пустое или в нем задано какое-то условие.
|
|
20.09.2021, 23:56 | #16 |
Участник
|
|
|
11.10.2021, 23:36 | #17 |
Участник
|
Где-то встречал упоминание, что в ER есть возможность оценки производительности - показываются временные затраты на заполнение каждого узла модели. Подскажите, может есть какая-то статья или ролик с описанием/демонстрацией как пользоваться этой функцией? Где и что включить, нажать, посмотреть ...
|
|
12.10.2021, 18:06 | #19 |
Участник
|
Спасибо, почитаю.
|
|
25.12.2021, 19:16 | #20 |
Banned
|
Кажется, я нарвался на нерешаемую проблему в ER: будущий обязательный немецкий формат электронных счетов, он же индустриальный немецкий формат ZUGFeRD, он же индустриальный французский формат xFactur. В нем в PDF-файл вкладывается XML, т.е. ортогонально итальянскому.
В стандарте ER внутри элемента PDF могут быть страницы, поля, JSON, но не XML. Есть идеи? Обработка в собственном https://docs.microsoft.com/en-us/dyn...le-destination ограничивается отсутствием библиотек для манипуляций с PDF. Последний раз редактировалось EVGL; 25.12.2021 в 19:20. |
|
|
За это сообщение автора поблагодарили: belugin (5). |
Теги |
generic electronic reporting, ger |
|
|