Acumatica: как отобразить одно текстовое поле из строк в столбцы (по прямой линии) в подстроке основного отчета - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы показать SOShipline.QTY в основных строках, а каждый SOShiplineSplit.QTY под своей линией корабли в прямых и НЕ в строках.

Отображение отчета и изменение, которое я хочу

Спасибо всем, кто хотел бы упомянуть Свойство табличного подотчета Да, я пробовал табличный отчет, я столкнулся с проблемой, которую не могу решить в течение нескольких дней. Я разместил мою проблему в другом посте Acumatica: Табличный отчет генерирует неожиданные строки при вызове в качестве подотчета

Только для этого вопроса, может ли кто-нибудь указать мне способ осознать мою нужду?

1 Ответ

0 голосов
/ 14 ноября 2018

Представления SQL не рекомендуется, однако в этом случае вам может потребоваться создать их. Оператор select ниже даст вам выходную строку, которая вам нужна. Затем вы должны создать ЦАП на основе представления. Оттуда вы сможете добавить представление в свой отчет.

-- ------------------------------------------------------------
-- View: usrSOSplit
-- ------------------------------------------------------------

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[usrSOSplit]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].usrSOSplit
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create View [usrSOSplit] as 
SELECT  companyid, shipmentnbr,
        isnull(cast([1] as varchar(50)),'')
        +' '+ isnull(cast([2] as varchar(50)),'')
        +' '+ isnull(cast([3] as varchar(50)),'')
        +' '+ isnull(cast([4] as varchar(50)),'')
        +' '+ isnull(cast([5] as varchar(50)),'')
        +' '+ isnull(cast([6] as varchar(50)),'')
        +' '+ isnull(cast([7] as varchar(50)),'')
        +' '+ isnull(cast([8] as varchar(50)),'')
        +' '+ isnull(cast([9] as varchar(50)),'')
        +' '+ isnull(cast([10] as varchar(50)),'')
        as ListOfQty        
      FROM    
    ( SELECT shipmentnbr,companyid,  splitlinenbr as splitLine , qty FROM    SOShipLineSplit ) p
    PIVOT ( max(qty) FOR [splitline] IN ( [1],[2],[3],[4],[5],[6],[7],[8],[9],[10] ) ) AS pvt

ЦАП:

using System;
using PX.Data;

namespace SoShipSplit
{
  [Serializable]
  public class usrSOSplit : IBqlTable
  {
    #region Shipmentnbr
    [PXDBString(15, IsUnicode = true, InputMask = "")]
    [PXUIField(DisplayName = "Shipmentnbr")]
    public virtual string Shipmentnbr { get; set; }
    public abstract class shipmentnbr : IBqlField { }
    #endregion

    #region ListOfQty
    [PXDBString(509, InputMask = "")]
    [PXUIField(DisplayName = "List Of Qty")]
    public virtual string ListOfQty { get; set; }
    public abstract class listOfQty : IBqlField { }
    #endregion
  }
}

enter image description here

...