0

私が送信している SOAP メッセージは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.acumatica.com/typed/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Body>
        <ns1:Export>
            <ns1:commands>
                <ns1:Command xsi:type="ns1:Field">
                    <ns1:FieldName>InventoryCD</ns1:FieldName>
                    <ns1:ObjectName>Item</ns1:ObjectName>
                    <ns1:Value>InventoryID</ns1:Value>
                    <ns1:Commit>true</ns1:Commit>
                    <ns1:LinkedCommand xsi:type="ns1:Action">
                        <ns1:FieldName>Cancel</ns1:FieldName>
                        <ns1:ObjectName>Item</ns1:ObjectName>
                        <ns1:LinkedCommand xsi:type="ns1:Key">
                            <ns1:FieldName>InventoryCD</ns1:FieldName>
                            <ns1:ObjectName>Item</ns1:ObjectName>
                            <ns1:Value>=[Item.InventoryCD]</ns1:Value>
                        </ns1:LinkedCommand>
                    </ns1:LinkedCommand>
                </ns1:Command>
                <ns1:Command xsi:type="ns1:Field">
                    <ns1:FieldName>Descr</ns1:FieldName>
                    <ns1:ObjectName>Item</ns1:ObjectName>
                    <ns1:Value>Description</ns1:Value>
                </ns1:Command>
            </ns1:commands>
            <ns1:filters>
                <ns1:Filter>
                    <ns1:Field>
                        <ns1:FieldName>Descr</ns1:FieldName>
                        <ns1:ObjectName>Item</ns1:ObjectName>
                    </ns1:Field>
                    <ns1:Condition>Contain</ns1:Condition>
                    <ns1:Value>TEST</ns1:Value>
                    <ns1:OpenBrackets>0</ns1:OpenBrackets>
                    <ns1:CloseBrackets>0</ns1:CloseBrackets>
                    <ns1:Operator>And</ns1:Operator>
                </ns1:Filter>
            </ns1:filters>
            <ns1:topCount>5</ns1:topCount>
            <ns1:includeHeaders>false</ns1:includeHeaders>
            <ns1:breakOnError>false</ns1:breakOnError>
        </ns1:Export>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

このメッセージを送信する PHP コードは次のとおりです。

<?php

$context = new Screen("<URL>", array('trace' => TRUE));
$login = new Login();
$login->name = "<LOGINUSER>";
$login->password = "<LOGINPASS>";
$context->Login($login);

$IN202500 = $context->GetSchema(new GetSchema());
$clear = $context->Clear(new Clear());
$IN202500content = $IN202500->GetSchemaResult;

$field = new Field();
$field->FieldName = $IN202500content->StockItemSummary->Description->FieldName;
$field->ObjectName = $IN202500content->StockItemSummary->Description->ObjectName;

$filter = new Filter();
$filter->Field = $field;
$filter->Condition = FilterCondition::Contain;
$filter->Value = "TEST";
$filter->Operator = FilterOperator::_And;
$filter->OpenBrackets = 0;
$filter->CloseBrackets = 0;

$export = new Export();
$export->commands = array(
    $IN202500content->StockItemSummary->InventoryID,
    $IN202500content->StockItemSummary->Description
);
$export->topCount = 5;
$export->includeHeaders = false;
$export->breakOnError = false;
$export->filters = array(
    $filter
);

$export_result = $context->Export($export);

?>

応答として受け取るのは、フィルターが設定されていない場合と同じ結果です。説明の部分文字列の結果をフィルタリングするにはどうすればよいですか?

4

3 に答える 3

0

フィルターはデフォルトの画面では正しく機能しないことがわかりました。フィルターは id フィールドにのみ適用されます。Generic Inquiry を作成すると、より多くのフィルターを指定して、結果セットを必要なフィールドに絞り込むことができます。また、一般的な照会画面は通常、標準のデフォルト画面よりも高速に実行されます。

于 2015-11-18T19:36:01.853 に答える
0
            DateTime syncDate = new DateTime(2013,1,1);
        context.IN202500Clear();            
        result = context.IN202500Export(
            new Command[]
            {                    
                IN202500.StockItemSummary.ServiceCommands.EveryInventoryID,
                IN202500.StockItemSummary.InventoryID,
                IN202500.StockItemSummary.Description,
                IN202500.WarehouseDetails.WarehouseWarehouseID,
                IN202500.WarehouseDetails.QtyOnHand
            },
            new Filter[]
            {                    
                new Filter { Field = new Field { ObjectName = IN202500.StockItemSummary.ItemStatus.ObjectName, FieldName = IN202500.StockItemSummary.ItemStatus.FieldName }, Condition = FilterCondition.Equals, Value = "Active", Operator = FilterOperator.And },
                new Filter { Field = new Field { ObjectName = IN202500.StockItemSummary.InventoryID.ObjectName, FieldName = "LastModifiedDateTime" }, Condition = FilterCondition.GreaterOrEqual, Value = syncDate.ToLongDateString(), Operator = FilterOperator.And },                    
            },
            0,false,false
        );
        //results
        foreach (string[] item in result)
        {
            Console.WriteLine(
                item[0] + ";" + 
                item[1] + ";" + 
                item[2] + ";" + 
                item[3] + ";"
            );
        }
于 2015-02-13T16:12:26.233 に答える