|
20.11.2019, 20:15 | #1 |
Участник
|
Уф. Сколько непонятных слов.
Попробую проще. Вот в условном завтра внешний разработчик пришлёт мне свой маппинг и формат. Как понимаю залить я не смогу не сломав ничего. И это архитектура такая. Круто чо. Интерфейс я не меняю. Однако теперь вынужден его дублировать. Дерайв это наследование? как понимаю тоже дублирование только с ещё кучей неизвестных. |
|
27.11.2019, 09:57 | #2 |
Участник
|
С моей точки зрения меняете - интерфейс это не только методы и их типы но и полный контракт - набор ожиданий от пользователя. см также LSP
derive это что-то типа бранчинга. В лукапах derived модель рассматривается как и базовая - т.е. будут видны форматы ссылающиеся на базовую и на derived. Последний раз редактировалось belugin; 27.11.2019 в 10:02. |
|
27.11.2019, 23:50 | #3 |
Участник
|
Цитата:
Сообщение от belugin
С моей точки зрения меняете - интерфейс это не только методы и их типы но и полный контракт - набор ожиданий от пользователя. см также LSP
Для меня как для программиста тоже не все так просто так как по факту вы жёстко задаёте связку между рутом и маппингом: один рут модели - только один маппинг. Это как минимум забавно. Для меня лично это загадка и я бы выбрал другое архитектурные решение. Может если дадут свободу и время то доработаю (сделаю связку маппинг-формат с возможностью смены маппинга) так как не вижу никаких + столь странного выбора а вот - хоть отбавляй типа автоматически кастомерам можно дать рекомендацию не использовать не свои руты чужих моделей, так как есть угроза что закачка какого то чужого маппинга сломает их форматы построенные на основе этого рута. Всё это по мне так печально. Derive как понимаю вы имеете ввиду Child. Риски работы с ними у нас не оценены, пока поэтому не используем. Увидим живые примеры от мс обрадуется и может подумаем. Последний раз редактировалось axm2017; 28.11.2019 в 00:02. |
|
28.11.2019, 08:50 | #4 |
Участник
|
Тут скорее просто формальная логика (отношение между частным и общим).
Цитата:
Для меня как для программиста тоже не все так просто так как по факту вы жёстко задаёте связку между рутом и маппингом: один рут модели - только один маппинг.
Это как минимум забавно. Еще на Ax2012 роль меппинга для той же модели играет просто класс-провайдер данных. Так же есть для любого формата возможность подмены модел меппинга на другой (не загружать тот, который не нужен или воспользоваться галочкой). Если формат будет зависеть от конкретного меппинга этой возможности не будет. Просто вам эта возможность, наверное, не нужна. Цитата:
Для меня лично это загадка и я бы выбрал другое архитектурные решение. Может если дадут свободу и время то доработаю (сделаю связку маппинг-формат с возможностью смены маппинга) так как не вижу никаких + столь странного выбора
Цитата:
а вот - хоть отбавляй типа автоматически кастомерам можно дать рекомендацию не использовать не свои руты чужих моделей, так как есть угроза что закачка какого то чужого маппинга сломает их форматы построенные на основе этого рута.
Цитата:
Derive как понимаю вы имеете ввиду Child. Риски работы с ними у нас не оценены, пока поэтому не используем. Увидим живые примеры от мс обрадуется и может подумаем.
|
|
28.11.2019, 10:06 | #5 |
Участник
|
Даже не рядом.
Как мне объяснить китайцу что он обязан для своего отчета сделать ровно такого же customer-а в модели, как уже есть? Я нормальных слов на уровне пользователя не знаю. Цитата:
Цитата:
У меня мнение что не просто нужна а необходима, так как не могу нормально работать со сторонними коллегами: они должны делать копию customer, чтобы гарантировать что маппинг по их отчету будет работать нормально. customer customer_1 .. customer_20 в модели будет смотреться шикарно. Ну и как уже написал мне тяжело объяснять пользователям почему им нельзя использовать root с модели, поставляемой MS. Цитата:
Это как? Вопрос не в том что в LCS, а в работоспособности. Последний раз редактировалось axm2017; 28.11.2019 в 10:30. |
|
26.11.2019, 16:13 | #6 |
Banned
|
Вопрос знатокам: как реплицировать record заданное, динамическое количество раз? Стоит задача для строки заказа с количеством 5 напечатать 5 раз строку с количеством 1.
|
|
26.11.2019, 16:50 | #7 |
Участник
|
На уровне идей
как то типа вызвать какой то strRep с количеством из строки и далее применить к этому er-овский split на сколько помню получим list по которому и можно бегать.Просто нет аксапты под рукой не могу попробовать. Последний раз редактировалось axm2017; 26.11.2019 в 16:53. |
|
|
За это сообщение автора поблагодарили: EVGL (5). |
26.11.2019, 17:13 | #8 |
Banned
|
Верно. В теории, получится список из строк длиной в одну букву внутри одной записи. LISTJOIN же разнородные списки не соединяет. Хотя мы действительно можем "бегать" по списку внутри записи, а сама запись становится "родителем". Надо попробовать.
|
|
27.11.2019, 10:07 | #9 |
Участник
|
Если поместить calculated field, ссылающийся на запись, которую надо реплицировать внутрь такого списка, то получится вроде то, что нужно
|
|
02.12.2019, 21:25 | #10 |
Banned
|
|
|
|
За это сообщение автора поблагодарили: trud (3), axm2017 (3). |
03.12.2019, 12:26 | #11 |
Участник
|
Помогите разобраться.
Нужно сделать так, чтобы ProjInvoiceRevenue записи, связанные с ProjInvoiceJour, фильтровались по кастомному полю, скажем XYZHideLine. В стандарте такая формула: Пробовал изменить ее на: WHERE(ProjInvoiceJour.'<Relations'.ProjInvoiceRevenue,ProjInvoiceJour.'<Relations'.ProjInvoiceRevenue.XYZHideLine=Enums.NoYes.No) но в итоге просто возвращается первая запись, которая к тому же не соответствует критерию. Как правильно фильтровать в этом случае? |
|
03.12.2019, 12:47 | #12 |
Banned
|
Я у себя объявил такую переменную:
$ProcurementCategory = FIRSTORNULL(FILTER(ProjTable.'$ItemRequirements'.'>Relations'.InventTable.'<Relations'.EcoResProductCategory, ProjTable.'$ItemRequirements'.'>Relations'.InventTable.'<Relations'.EcoResProductCategory.CategoryHierarchy = '$ProcurementHierarchyRecId'.CategoryHierarchy)) и присвоил ее ветке модели. Работает. |
|
|
За это сообщение автора поблагодарили: Stitch_MS (5). |
03.12.2019, 18:39 | #13 |
Участник
|
|
|
03.12.2019, 19:00 | #14 |
Участник
|
|
|
04.12.2019, 00:54 | #15 |
Участник
|
|
|
03.12.2019, 20:17 | #16 |
Участник
|
В модели ОС (Fixed assets model) описана
$Books:Вычисляемое поле = IF(ISEMPTY(AssetTable.'<Relations'.'AssetBook.AssetTable_AssertId'), EMPTYLIST(AssetTable.'<Relations'.'AssetBook.AssetTable_AssertId'), AssetTable.'<Relations'.'AssetBook.AssetTable_AssertId'): Список записей: DataContainerList (): DataContainerList () как я понимаю определяет список записей из таблицы AssetBook, связанных с текущей записью AssetTable по Relations AssetTable_AssetId (AssetBook.AssertId == AssetTable.AssertId) Есть таблица LedgerJournalTrans_Asset у которой полностью идентичный Relations AssetTable_AssertId (LedgerJournalTrans_Asset.AssertId == AssetTable.AssertId). Нужно получить из нее список связанных записей. В формате добавляю вычисляемое поле JournalTrans и задаю для него формулу IF(ISEMPTY(AssetTable.'<Relations'.'LedgerJournalTrans_Asset.AssetTable_AssertId'), EMPTYLIST(AssetTable.'<Relations'.'LedgerJournalTrans_Asset.AssetTable_AssertId'), AssetTable.'<Relations'.'LedgerJournalTrans_Asset.AssetTable_AssertId') При сохранении - ошибка: Неверная ссылка "AssetTable/<Relations/LedgerJournalTrans_Asset.AssetTable_AssertId". Что я делаю неправильно? Подскажите, пожалуйста. |
|
03.12.2019, 21:05 | #17 |
Banned
|
Вы делаете неправильно ВСЕ. В конструкторе формул ФОРМАТА принципиально нельзя оперировать таблицами, это можно делать только в маппинге модели.
|
|
04.12.2019, 08:33 | #18 |
Участник
|
|
|
04.12.2019, 11:51 | #19 |
Участник
|
Цитата:
Если в конструкторе форматов можно ТОЛЬКО сопоставлять поля/теги шаблона с элементами модели, то почему все эти кнопки/функции доступны на форме? И такой вопрос: в природе существует какая-то документация кроме https://docs.microsoft.com/ru-ru/dyn...onic-reporting ? Тут более-менее информативны только разделы связанные с администрированием, а по созданию моделей и форматов только "нажмите кнопку - введите значение". Почему именно эту кнопку нажимать? Почему именно это значение выбирать? Что будет если выбрать другое значение? И это позиционируется как инструмент для не-программиста? |
|
04.12.2019, 12:39 | #20 |
Участник
|
Цитата:
Сообщение от Libovs
Вообще говоря, такое предположение у меня было. Но тогда непонятно, почему в конструкторе форматов доступны кнопки Добавить корень / Добавить - Добавить источник данных и можно выбрать любой объект - таблицу, класс, записи таблицы и т.п.
Если в конструкторе форматов можно ТОЛЬКО сопоставлять поля/теги шаблона с элементами модели, то почему все эти кнопки/функции доступны на форме? Цитата:
И такой вопрос: в природе существует какая-то документация кроме
https://docs.microsoft.com/ru-ru/dyn...onic-reporting ? Тут более-менее информативны только разделы связанные с администрированием, а по созданию моделей и форматов только "нажмите кнопку - введите значение". Почему именно эту кнопку нажимать? Почему именно это значение выбирать? Что будет если выбрать другое значение? И это позиционируется как инструмент для не-программиста? Вот пример раздела первого типа, где содержится описание рекомендуемого подхода: документация: Although GER allows for direct mapping of format components to database artifacts (tables or data entities), we don't recommend this approach, because it's likely that multiple formats will be maintained in some business domain areas that use the same data sources. Whenever the structure of such database artifacts is changed, the format mapping to the database artifacts must also be changed, and the cost of these changes will be multiplied by the number of maintained formats. Therefore, we recommend that you work through the data model as the abstract description of the domain-specific data structure, and that you use the direct binding of format elements to database components only for simplification and for coverage for specific customizations (for example, to refer to custom tables when these references are required in a limited number of maintained formats). Некоторые шаги во разделах второго типа содержат пояснения. Мы работаем над реструктуризацией документации, но я не могу сказать, когда вы сможете увидеть результаты этого. |
|
Теги |
generic electronic reporting, ger |
|
|