-
Fri, 19 Mar 2021 08:55:47 GMT
–
Dynamics 365 Business Central
–
Needs Votes
Before removing a page or a report, we mark the object as ObsoleteState = Pending in version N.
In version N+1, we delete the object.
But in version N+1, we also create new objects.
For that, we use the intellisense in VSCode that gives us the next available object number in the app object range.
The con comes the fact intellisense recycles the object number deleted, without looking at the object numbers in use in version N, beside the fact the package is in the alpackage folder for the AppSourceCop.
The consequence is errors coming from AppSourceCop about the fact all actions/fields/public procedures has been changed within the same object id between version N and N+1.
Could the object numbering be improved?
It would require to consider objects declared in the previous version as still in use.
-
Mon, 22 Mar 2021 09:38:01 GMT
–
Dynamics 365 Business Central
–
Needs Votes
Related to this discussion : https://github.com/microsoft/AL/issues/6545#issuecomment-803894400
I propose to change the current behaviour of the ObsoleteState or (as @qutreson suggested) gives the hability to opt-in to a new behaviour: when a control is marked as obsolete, then all child control should inherit this state.
It would mean:
- If I mark a page, at the object level, as ObsoleteState = Pending, then all fields, actions, procedures are automatically obsolete.
- If a group/repeater is ObsoleteState = Pending, then all child controls becomes obsolete.
If the child element has its own ObsoleteTag/ObsoleteReason, this one should overload the same property at the parent level.
-
Thu, 06 May 2021 07:07:51 GMT
–
Dynamics 365 Business Central
–
Needs Votes
In BC18 we have got a new object type named permissionset.
This object type allows to build a permission by including other permissionsets (with property IncludePermissionSets) and add our own on top.
Although, we frequently deploy customers by copying standard permissionsets (like D365 BASIC) where we remove some permissions (like those on G/L Entries and G/L Accounts). The immediate consequence is a important workload when major upgrades occur: new tables are created, customers cannot work until we add these tables on their custom permissionsets.
This could be "easily" solved if we could exclude a permissionset from another.
For instance, I could create a permissionset for G/L Entry and G/L Account tables:
permissionset 50000 "Accounting PTE"
{
Permissions = tabledata "G/L Entry" = RIM,
tabledata "G/L Account" = RIMD;
}
Then I could create my customized D365 BASIC permissionset:
permissionset 50001 "My Basic PTE"
{
IncludePermissionSets = "D365 BASIC";
ExcludePermissionSets = "Accounting PTE";
}
Users with permissionset My Basic PTE would access the same things as D365 BASIC expect the read permission on G/L Account and the read permission on G/L Entry would be removed.
It would mean that permissionset are build this way: First add IncludePermissionSets, Then remove ExcludePermissionSets and finally add Permissions.
This design would permit us to build custom permission sets that easily can be upgraded if Microsoft adds new objects.
-
Fri, 18 Jun 2021 08:40:44 GMT
–
Dynamics 365 Business Central
–
Rejected
Developers have a property in AL named ExtendedDataType (https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/properties/devenv-extendeddatatype-property).
In the modern client, this property does not really surface in the UI for URL and EMail, especially when the field is editable.
My suggestion if this one: if there is no lookup or drilldown specified for the field, then display a default button (similar to the one that was displayed in the retired Windows Client).
=> If the ExtendedDatatype is URL, run a Hyperlink command.
=> If the ExtendedDatatype is EMail, then, now we have a very good Email module, open an empty e-mail.
If on the top of that we could get global an event to catch the click with the current record, fieldno and field value to implement our own behavior, that would be awesome.
-
Thu, 01 Jul 2021 20:10:24 GMT
–
Dynamics 365 Business Central
–
Needs Votes
As a VAR we manage many customers and we might have multiple tabs in the web browser with different Dynamics 365 Business Central admin center opened.
The tenant ID is displayed in the address bar and in environment details but the tenant name (aka Primary Domain Name) would help to distinguish each customer.
Could it be displayed somewhere? (in the
of the page ?)
-
Thu, 19 Aug 2021 08:02:46 GMT
–
Dynamics 365 Business Central
–
Needs Votes
On the Customer card, there is a field called "Ship-to Code" related to customer "Ship-to Address" table.
There is such table on Vendors ("Order Address") but there is not a similar field on the Vendor Card to specify the default order address code.
Could you add such field to get consistent capabilities between customers and vendors?
-
Mon, 23 Aug 2021 10:26:57 GMT
–
Dynamics 365 Business Central
–
Needs Votes
If you post a purchase invoice with item charges with mistakes, you can create a credit memo.
However, the credit memo is hard to complete because the item charge assignments are not copied from the purchase invoice.
Could you implement this feature that would be really helpful when correcting purchase invoices?
I guess a similar feature would also be helpful on sales credit memos.
-
Thu, 26 Aug 2021 07:58:12 GMT
–
Dynamics 365 Business Central
–
Needs Votes
On tableextension or pageextension objects, we are able to write to platform events like OnAfterAction, OnOpenPage, OnAfterInsert, and so on.
But for IntegrationEvent or BusinessEvent, we have to create codeunits.
If I take as an example the page "Sales Order Subform", I would like being able to do this:
pageextension 50000 "Sales Order Subform PTE" extends "Sales Order Subform"
{
//OnBeforeSetDefaultType is an IntegrationEvent declared in Sales Order Subform page
trigger OnBeforeSetDefaultType(var SalesLine: Record "Sales Line"; var xSalesLine: Record "Sales Line"; var IsHandled: Boolean)
begin
//Do something..
end;
}
-
Fri, 08 Oct 2021 10:21:08 GMT
–
Dynamics 365 Business Central
–
Needs Votes
If you have an empty pageextension like this:
pageextension 50000 "MyPageExt" extends "Customer Card"
{
}
You cannot remove the object from your app because of rule AS0029.
If think we cannot take dependency on pageextension themselves so removing a pageextension should not be a breaking change (unless there is control inside but that way we have the hability to obsolete them and remove them afterwards).
Could you improve AS0029 to ignore such cases?
-
Fri, 08 Oct 2021 10:21:53 GMT
–
Dynamics 365 Business Central
–
Needs Votes
1. Describe the bug
When you rename a pagecustomization object, the error AS0089 is raised and I do not see any path to do it.
2. To Reproduce
Steps to reproduce the behavior:
In V1 of your app create a pagecustomization named "My Cust. Card"
In V2 of your app, rename the pagecustomization "My Customer Card"
3. Expected behavior
I do not see immediate problems regarding changing the name of a pagecustomization, so my first thought would be this rule should not apply to this type of object.
However if it can be a problem, then, we should be able to mark a pagecustomization as obsolete.
4. Actual behavior
The error AS0089 is raised, preventing us to change the name of this object.
5. Versions:
AL Language: 8.1.525271
Visual Studio Code: 1.60.2
Business Central: 19
List of Visual Studio Code extensions that you have installed: AL Language