0

Web サービスを使用して GP から顧客のリストを返そうとしていますが、クエリの実行時に問題が発生しています。クエリを実行して会社のリストを取得できるため、Dynamics データベースへのメイン接続が機能していることを確認できます (これは、Customer クエリのコンテキストで使用する CompanyID キーを取得した方法です)。

しかし、他のクエリを実行すると、eConnect に送信される XML で CompanyKey がゼロ (0) に設定されているように見えます。返される例外は、"Microsoft.Dynamics.Security.NonExistentSecurityObjectException : The security object does not exist. Key = 0" です。サービスに送信されている xml を見ると、要素も 0 に設定されていることに気付きました。クエリする会社の値を明示的に設定します (この場合は、前に会社リスト クエリを実行して取得した 37 です)。

送信される完全な XML は次のとおりです。

<?xml version="1.0"?>
<RequestObjects>
  <Context xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/dynamics/2006/01">
    <OrganizationKey xsi:type="CompanyKey">
      <Id>0</Id>
    </OrganizationKey>
    <CurrencyType>Transactional</CurrencyType>
  </Context>
  <CustomerCriteria xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Scope>Return All</Scope>
  </CustomerCriteria>
</RequestObjects>

クライアント アプリで使用している基になる C# コードについては、次のとおりです。

CompanyKey companyKey;
Context context;
DynamicsGPClient wsDynamicsGP = new DynamicsGPClient();
context = new Context();
companyKey = new CompanyKey();
companyKey.Id = 37;
context.OrganizationKey = companyKey;
companies = wsDynamicsGP.GetCustomerList( new CustomerCriteria { }, context );

私は、GP2010 Web サービス開発者が Microsoft から直接手動で提供した例に基づいてコードを作成しました。

4

2 に答える 2

0

GP のキーと Web サービスの actice ディレクトリ データベースのキーが同じであることを確認してください。これはおそらく、Web サービスに欠落しているキーです。

これには、実行する必要がある SQL クエリに関する技術知識があります。

https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?WTNTZSMNWUKNTMMYVLXUZLWUKKQPOVRVTLKUSRMOQVVYUKKXRVYRTTWLZTPWKURU

于 2013-07-09T13:48:31.930 に答える