<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://www.schweda.net/style_feed.css" ?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:atom="http://www.w3.org/2005/Atom"	
	xmlns:dc="http://purl.org/dc/elements/1.1/" > 
<channel>
    <title>schweda.net - Blog</title>
    <link>https://www.schweda.net/</link>
    <description>schweda.net - Blog - Blog-Beitraege</description>
    <language>de-at</language>
    <copyright>Copyright 2006-2026</copyright>
    <generator>schweda.net</generator>
    <managingEditor>heinz.schweda@schweda.net (Heinz Schweda)</managingEditor>
    <webMaster>heinz.schweda@schweda.net (Heinz Schweda)</webMaster>
    <category>Blog</category>
	<atom:link href="https://www.schweda.net/blog_rss.php?bid=351" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Arbeiten mit dem aufrufenden Objekt einer Form (Caller)]]></title>
<description><![CDATA[
<p>Nachstehende Methode enth&auml;lt einige Snippets, die in einem Formular verwendet werden k&ouml;nnen, um in Dynamics AX diverse Funktionen/Methoden des Aufrufenden Objektes aufzurufen.
</p>


<p>&Auml;ndert man <em>element.args()</em> auf z.b. <em>_args</em> und &uuml;bergibt der Methode diese als Parameter, kann die selbe Logik auch aus einer Klasse heraus verwendet werden.
</p>


<pre class="pre_blog_axcode">
void workWithCallingRecord()
{
    common          common;
    object          object;
    formDataSource  formDataSource;
    formRun         formRun;
    inventDim       inventDim;
    salesTable      salesTable;
    int             i;
    ;
    // Call method from calling record
    if( element.args() &amp;&amp;
        element.args().record() )
    {
        common = element.args().record();
        if(common.isFormDataSource())
        {
            info(tableId2Name(common.TableId));
            if(formDataSourceHasMethod(common.dataSource(), identifierStr(&quot;someMethod&quot;)))
            {
                object = common.dataSource();
                object.someMethod();
            }
        }
    }
 

    // Call method from calling form
    if(element.args() &amp;&amp; element.args().caller() &amp;&amp; element.args().caller().handle() == className2Id(&#39;formRun&#39;))
    {
        formRun = element.args().caller();
        if(sysFormRun::hasMethod(formRun, identifierStr(&quot;someFormMethod&quot;)))
        {
            object = formRun;
            object.someFormMethod();
        }
    }

    // Get value from calling record
    if( element.args() &amp;&amp;
        element.args().record() )
    {
        common = element.args().record();
        if(common.TableId == tableNum(salesTable))
        {
            info(common.(fieldNum(salesTable, salesId)));
        }
    }

    // Get value from calling datasource (form with multiple datasources)
    if(element.args() &amp;&amp; element.args().caller() &amp;&amp; element.args().caller().handle() == className2Id(&#39;formRun&#39;))
    {
        formRun = element.args().caller();
        for (i = 0; i &lt;= formRun.dataSourceCount(); i++)
        {
            formDataSource = formRun.datasource(i);
            if (formDataSource &amp;&amp; formDataSource.table() == tablenum(inventDim))    // Search for specific table
            {
                inventDim = formDataSource.cursor();
                break;
            }
        }
        if(inventDim)
        {
            info(inventDim.InventLocationId);
        }
    }

    // Change data in calling datasource
    if(element.args() &amp;&amp; element.args().caller() &amp;&amp; element.args().caller().handle() == className2Id(&#39;formRun&#39;))
    {
        formRun = element.args().caller();
        for (i = 0; i &lt;= formRun.dataSourceCount(); i++)
        {
            formDataSource = formRun.datasource(i);
            if (formDataSource &amp;&amp; formDataSource.table() == tablenum(salesTable))    // Search for specific table
            {
                salesTable = formDataSource.cursor();
                break;
            }
        }
        if(salesTable)
        {
            // Update data
            salesTable.PurchOrderFormNum = &quot;Some value&quot;;
            salesTable.update();
        }
    }

    // Refresh calling datasource
    if( element.args() &amp;&amp;
        element.args().record() )
    {
        common = element.args().record();
        if(common.isFormDataSource())
        {
            formDataSource = common.dataSource();
            formDataSource.research(true);
        }
    }
}
</pre>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sun, 15 Nov 2009 16:25:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=351</link>
<comments>https://www.schweda.net/blog_ax.php?bid=351</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=351</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=351</wfw:commentRss>
</item>
</channel>
</rss>	
