|
![]() |
#1 |
Banned
|
|
|
![]() |
#2 |
Участник
|
Я внимательно его прочитал и видел это решение, так же как и Ваш комментарий:
The solution was dumb, but it worked Но исходя из такой логики (с двойным преобразованием через строковое представление) можно обойтись и без функции DATETODATETIME DATETIMEVALUE(CONCATENATE(DATEFORMAT(@.’Created date’, “dd.MM.yyyy”), “ 00:00:00”), “dd.MM.yyyy hh:mm:ss”) Но разработчики ER эту функцию все-таки реализовали. |
|
![]() |
#3 |
Участник
|
У меня на форме конфигураций отсутствует чекбох Run draft, который был в демонстрации вебинара, есть только Default for model mapping.
Это ограничение по правам или где-то надо включить эту возможность? |
|
![]() |
#4 |
Banned
|
Цитата:
|
|
![]() |
#5 |
Участник
|
Спасибо
|
|
![]() |
#6 |
Участник
|
Нужно получить значение счета из профиля разноски ОС. На таблице AssetLedgerAccounts есть методы assetLedgerDimension() и assetOffsetLedgerDimension() которые определяют нужную запись по комбинации assetId, assetBookId, assetTransType и assetPostingProfile, но эти методы возвращают не запись, а сразу значение типа LedgerDimensionDefaultAccount – по сути RecId в таблице DimensionAttributeValueCombination.
И приходится присоединять эту таблицу и писать выражение FIRSTORNULL(FILTER(DimensionAttributeValueCombination, DimensionAttributeValueCombination.RecId=AssetLedgerAccounts.'assetLedgerDimension()'(@.AssetId, @.BookId, AssetTransType.Acquisition, @.'$PostingProfile'))).MainAccountValue Есть смутное подозрение, что это из пушки по воробьям. Если есть запись с полем типа Default / LedgerDimension, то в дереве источников данных сразу есть ветка Финансовые аналитики, из которой можно получить значение MainAccountValue без этого геморроя. Но беда, что методы возвращают не саму запись AssetLedgerAccounts. Может есть какое-то более правильное решение, как имея по сути DimensionAttributeValueCombination.RecId (int64) получить значение счета ГК? Думал «натравить» на это значение Функции – Сведения о финансовых аналитиках, но не смог разобраться в назначении и параметрах этой функции. |
|
![]() |
#7 |
Участник
|
Есть ли практика применения ER для построения финансовой отчетности?
Например сделать отчет Баланс по компании? Собственно как написать формулы и вывести в xls или xml - понятно; вопрос в том как это будет работать с транзакционными таблицами с миллионами записей, не будет ли отчет формироваться сутками и тормозить всю систему? Например, чтобы посчитать входящее сальдо на дату, надо просуммировать все транзакции "с начала времен" до начальной даты отчета в разрезе счетов и финаналитик. Реально ли это? Есть ли какой-то практический опыт и/или рекомендации? |
|
![]() |
#8 |
Участник
|
Написать свой X++ класс или воспользоваться существующим в качестве провайдера данных. ER сможет отрендерить результат. Обязательно протестировать производительность
|
|
![]() |
#9 |
Участник
|
Цитата:
Но и анализ кода в АХ2012 и написание нового класса в 365 - это уже работа для программиста, а я консультант. Но направление понятно, буду обсуждать. Спасибо за помощь. |
|
![]() |
#10 |
Banned
|
IMHO, нереально. Рекомендуется Management Reporter или Power BI.
|
|
![]() |
#11 |
Участник
|
|
|
![]() |
#12 |
Banned
|
|
|
![]() |
#13 |
Участник
|
Можно ли объединить два списка записей одинаковой длины в один?
Например есть список1 с полями А и Б и список2 с полями В и Г Получить список3 с полями А, Б, В, Г? |
|
![]() |
#14 |
Banned
|
Цитата:
P.S. Не въехал сначала. Он не поля объединяет, а записи. Чтобы добавить поля, придется в модели создать новый список с 4 полями, потом сделать enumerate обоим спискам, и с помощью WHERE приоединить второй список запись за записью. Альтернативно: сделать в обоих списках по 4 поля и заполнять то, что известно. Потом сделать LISTJOIN, а потом группировку по индексному полю. Последний раз редактировалось EVGL; 29.01.2020 в 22:13. |
|
![]() |
#15 |
Участник
|
Вот это момент не понял - можно чуть подробнее?
Как получить два нумерованных списка я понимаю: $List1:Вычисляемое поле = ENUMERATE(...): Список записей Прочее Number:Целочисленный Value:Запись Field1 value1 Field2 value2 Field3 empty Field4 empty $List2:Вычисляемое поле = ENUMERATE(...): Список записей Прочее Number:Целочисленный Value:Запись Field1 empty Field2 empty Field3 value3 Field4 value4 А вот как с помощью WHERE в первом список заполнить Field3 и Field4 значениями из второго списка - не соображу $List1:Вычисляемое поле = ENUMERATE(...): Список записей Прочее Number:Целочисленный Value:Запись Field1 value1 Field2 value2 Field3 value3 Field4 value4 Или как "собрать" List3 из List1 и List2? |
|
![]() |
#16 |
Banned
|
Надо создать новую вычисляемую штуку на базе первого списка, и при выводе "бегать" по нему. При этом дополнительные данные из Field3, Field4 извлекать из еще одной вычисляемой штуки WHERE($List2, $List2.Number = @.Number).
|
|
![]() |
#17 |
Участник
|
Т.е. в модели остаются два отдельных списка, а уже в формате например, диапазон Экселя, маппится с первым списком и ячейки 1 и 2 маппятся прямо на поля 1 и 2 этого списка, а значения для ячеек 3 и 4 (этого же диапазона) вычисляются FIRST(WHERE($List2, $List2.Number = $List1.Number)).Field3 - как-то так? Я правильно понял идею?
|
|
![]() |
#18 |
Banned
|
Цитата:
Сообщение от Libovs
![]() Т.е. в модели остаются два отдельных списка, а уже в формате например, диапазон Экселя, маппится с первым списком и ячейки 1 и 2 маппятся прямо на поля 1 и 2 этого списка, а значения для ячеек 3 и 4 (этого же диапазона) вычисляются FIRST(WHERE($List2, $List2.Number = $List1.Number)).Field3 - как-то так? Я правильно понял идею?
|
|
![]() |
#19 |
Участник
|
Спасибо. Буду воплощать...
|
|
![]() |
#20 |
Участник
|
А еще такой вопрос: "понимает" ли ER диапазоны значений в функциях FILTER / WHERE?
Например FILTER(List, List.Field="значение1,значение2,значение3") FILTER(List, List.Field="значение1..значение3") FILTER(List, List.Field="значение*") Т.е. в нотации применяющейся в интерфейсе АХ. Или только OR(...) для каждого значения? |
|
Теги |
generic electronic reporting, ger |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|