05.12.2019, 20:18 | #181 |
Участник
|
Цитата:
Но по выделенной фразе есть вопросы: у таблицы AssetTable нет Relations на AssetBook; и, как мне кажется об этом "говорит" знак "<". Если в выражении используется Relations таблицы AssetTable то будет знак ">". Я пока не разбираюсь в синтаксисе выражения, но понимаю физический смысл, т.к. смотрел эти таблицы в AOT-е. У таблицы AssetBook есть поле AssetId и есть Relations с именем AssetTable_AssetId и выражением AssetBook.AssertId == AssetTable.AssertId а приведенное выше выражение возвращает все записи таблицы AssetBook, которые по Relations AssetBook.AssetTable_AssertId ссылаются на текущую запись AssetTable. Как раз с синтаксисом направления ссылок мне пока непонятно. Т.е. физический смысл понимаю, а как написать корректное выражение - пока нет. |
|
05.12.2019, 22:16 | #182 |
Участник
|
Цитата:
Ds1.>relations.r1 даст записи t2 которые соответствуют текущей записи из источника данных ds1 при условии что это table records по таблице t1 Ds2.<relations. 'T1.r1' это то же самое но с другого конца - записи t1 которые соответствуют текущей записи t2 от условии что ds2 это table records по таблице t2. Если вы идете от какой-то таблицы то >relations это отношения определенные на ней, а <relation это отношения определенные на других таблицах на нее Одинарные кавычки это идентификатор (имя поля, например) а двойные кавычки - это строковый литерал. Например, если определить user input parameter с именем "hello, world" то 'hello, world' вернёт эго значение (то что пользователь ввел) а "hello, world" саму строчку "hello, world" |
|
06.12.2019, 13:30 | #183 |
Участник
|
Подскажите, пожалуйста
Хотел, чтобы в импорте выписки в формате 1С поле плательщика бралось из второго возможного тэга, если первый пуст. В Model mapping designer в дизайнере вот такая формула для счета плательщика: Цитата:
@.SectionTypes.Documents.Data.Document.'$PayerAccountNum'.DocumentAttrTypes.PayerAccountNumSeq.Data.PayerAccountNum
Цитата:
If(@.SectionTypes.Documents.Data.Document.'$PayerAccountNum'.DocumentAttrTypes.PayerAccountNumSeq.Data.PayerAccountNum="","123",@.SectionTypes.Documents.Data.Document.'$PayerAccountNum'.DocumentAttrTypes.PayerAccountNumSeq.Data.PayerAccountNum)
Цитата:
Incorrect reference 'format/IncomingFile/File/$Documents/SectionTypes/Documents/Data/Document/$PayerAccountNum/DocumentAttrTypes/PayerAccountNumSeq/Data/PayerAccountNum'
No overload for function = matches the input parameters Function arguments are of incorrect types in 'If' |
|
06.12.2019, 13:53 | #184 |
Участник
|
Я не знаю, что тут неправильно. Ошибка означает, что он не может найти операцию сравнения для данных аргументов. Для строк операция сравнения есть. Значит что-то не то с типами данных. Либо какая-то ошибка в пути, что он не определил тип либо еще что-то.
|
|
06.12.2019, 14:09 | #185 |
Участник
|
Правильно ли я понимаю, что при добавлении источника данных типа Записи таблицы для него создается виртуальная запись ER, в которой столько (виртуальных) полей, сколько:
полей в исходной таблице + relations в исходной таблице + методов в исходной таблице + "дочерних" таблиц, у которых есть relations на исходную таблицу? И значений этих полей содержат ссылки, вызов которых позволяет получить соответственно: значение поля список записей дочерней таблицы, связанных с текущей записью исходной результат выполнения метода список записей дочерней таблицы, связанных с текущей записью исходной И затем, для каждой "дочерней" таблицы также создается аналогичная виртуальная запись - и все повторяется для "дочерних" таблиц каждой "дочерней" таблицы первого уровня и т.п.? В результате, выбрав только одну таблицу, получается многоуровневое дерево из всех связанных между собой по relations таблиц и возможность получения значений полей и выполнения методов всех этих таблиц? Как-то так, если не вдаваться в детали реализации? |
|
06.12.2019, 15:05 | #186 |
Участник
|
|
|
06.12.2019, 16:39 | #187 |
Участник
|
Цитата:
Я по-крайней мере, вижу применение именно для реализации локализованных форм при переходе с АХ2012, где они реализованы на SSRS, на DFO 365. А их таки немало. |
|
06.12.2019, 17:03 | #188 |
Участник
|
Очень не хватает в конструкторе форматов кнопки Свернуть/Развернуть на правой части формы (модели). На левой (шаблона) она есть.
Т.к. Поиск выполняется только по развернутым узлам, то раскрывать все дерево модели ручками как-то не по феншую. Может есть какой hotkey или недокументированная возможность? |
|
06.12.2019, 17:24 | #189 |
Участник
|
|
|
09.12.2019, 11:43 | #190 |
Участник
|
Подскажите, как написать выражение с вызовом метода таблицы с параметрами?
Добавил источник данных таблица AssetLedgerAccounts(Asset Ledger Accounts):Таблица AssetLedgerAccounts у нее есть метод assetLedgerDimension():Int64 (String _assetId, String _assetBookId, AssetTransType _assetTransType, String _assetPostingProfile, AssetDocumentType_JP _assetDocumentType_JP, Int64 _assetDocumentEntryRecId) Ячейку отчета связал с этим методом Ячейка<Col05_LedgerAccount> = model.AssetLedgerAccounts.'assetLedgerDimension()' В качестве параметров надо передать элементы model.'$BooksRecords'.'$LedgerJournalRecords'.AssetId model.'$BooksRecords'.'$LedgerJournalRecords'.BookId model.AssetTransTypeJournal.Acquisition model.'$BooksRecords'.General.PostingProfile.Id Попытка вставить между скобками пару кавычек и в них пути к параметрам успехом не увенчалась Ячейка<Col05_LedgerAccount> = model.AssetLedgerAccounts.'assetLedgerDimension('model.'$BooksRecords'.'$LedgerJournalRecords'.AssetId, model.'$BooksRecords'.'$LedgerJournalRecords'.BookId, model.AssetTransTypeJournal.Acquisition, model.'$BooksRecords'.General.PostingProfile.Id')' Как это правильно сделать? |
|
09.12.2019, 11:54 | #191 |
Banned
|
Это невозможно. Методы с параметрами приходится эмулировать прямым SQL в выражениях FILTER или WHERE:
FILTER(EGCAssetLedgerAccounts, AND(EGCAssetLedgerAccounts.BookId=AssetRollForwardTmp.AssetBookId,OR(EGCAssetLedgerAccounts.AccountRelation=AssetRollForwardTmp.AssetGroup, EGCAssetLedgerAccounts.AccountRelation=""), EGCAssetLedgerAccounts.TransType=EGCAssetTransType.Acquisition, EGCAssetLedgerAccounts.PostingProfile=EGCAssetParameters.PostingProfile)) Последний раз редактировалось EVGL; 09.12.2019 в 12:01. |
|
09.12.2019, 12:29 | #192 |
Участник
|
Тогда, по крайней мере мне, непонятна разница между типами Источника данных "Записи таблицы" и "Таблица". Я считал что второй как раз и дает возможность получить доступ к методам, в отличии от первого.
|
|
09.12.2019, 12:38 | #193 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: EVGL (5). |
09.12.2019, 13:00 | #194 |
Banned
|
|
|
09.12.2019, 14:40 | #195 |
Участник
|
|
|
09.12.2019, 14:59 | #196 |
Участник
|
Добавил источник данных таблица
AssetLedgerAccounts(Asset Ledger Accounts):Таблица AssetLedgerAccounts у нее есть метод assetLedgerDimension():Int64 (String _assetId, String _assetBookId, AssetTransType _assetTransType, String _assetPostingProfile, AssetDocumentType_JP _assetDocumentType_JP, Int64 _assetDocumentEntryRecId) Каждый параметр определил отдельной внутренней переменной $CurAssetId(Current Asset Id):Вычисляемое поле = @.AssetId: Строка $CurBookId(Current BookId):Вычисляемое поле = @.BookId: Строка $CurPostingProfileId(Current PostingProfileId):Вычисляемое поле = model.'$BooksRecords'.General.PostingProfile.Id: Строка $CurTransTypeAcquisition(TransType Acquisition):Вычисляемое поле = model.AssetTransTypeJournal.Acquisition: Перечислимый тип и хочу получить значение, вычисляемое методом $LDIm03(Ledger dimension ref 03):Вычисляемое поле = model.AssetLedgerAccounts.'assetLedgerDimension()'("$CurAssetId", "$CurBookId", "$CurTransTypeAcquisition", "$CurPostingProfileId"): Int64 Синтаксическая проверка проходит, формула сохраняется. Но при выполнении выдается ошибка Ошибка при вычислении выражения для пути "$LDIm03". Пробовал параметры задать просто константами $LDIm03(Ledger dimension ref 03):Вычисляемое поле = model.AssetLedgerAccounts.'assetLedgerDimension()'("000006", "БО", "1", "Головний"): Int64 результат такой же. Можете что-то подсказать? |
|
09.12.2019, 15:25 | #197 |
Участник
|
Такое предположение, что проблема в 3-м параметре. Он описан как AssetTransType (это enum) и непонятно если константой передавать 1 (int), "1", "Acquisition" или с учетом установленного языка "Ввод в эксплуатацию"?
Просто 1 (без кавычек) - не проходит валидация при сохранении формулы; все остальные варианты - ошибка при выполнении. |
|
09.12.2019, 15:28 | #198 |
Banned
|
AssetTransType надо определить как Dynamics/Enum, а потом его можно везде использовать. См. мой синтаксис выше.
|
|
09.12.2019, 15:28 | #199 |
Участник
|
|
|
09.12.2019, 15:48 | #200 |
Участник
|
Цитата:
AssetTransType:Перечисление Dynamics 365 for Operations AssetTransType Определил параметр $CurTransTypeAcquisition(TransType Acquisition):Вычисляемое поле = model.AssetTransType.Acquisition: Перечислимый тип Описал вызов $LDIm03(Ledger dimension ref 03):Вычисляемое поле = model.AssetLedgerAccounts.'assetLedgerDimension()'("000006", "БО", "@.'$CurTransTypeAcquisition'", "Головний"): Int64 результат тот же. |
|
Теги |
generic electronic reporting, ger |
|
|