MercatorUi.Engine.Gescom.Billing.TypeVAEnum typeVA = MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V;
int type = ...;
string id = "...";
string journal = "...";
Int64 piece = ...;
using (MercatorUi.Engine.Gescom.BillingEngine billingEngine = MercatorUi.Engine.Gescom.BillingEngine.InitExisting(typeVA, type, id, journal, piece))
{
    if (billingEngine.DataSet == null)
    {
        Api.Stop(billingEngine.LastError);
        return;
    }
    List<MercatorUi.Reporting.OutputDescriptor> outputDescriptors = new List<MercatorUi.Reporting.OutputDescriptor>();
    outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPreview()); // pour obtenir une prévisualisation
    outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPrint()); // pour obtenir une impression
    outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorExport(MercatorUi.Reporting.ExportReportEnum.PDF, @"C:\invoice.pdf", MercatorUi.Reporting.ExportOpenAfterEnum.No)); // pour exporter vers C:\invoice.pdf
    DataSet dataSetPrintPrev = billingEngine.PrepareDataSetForPrint();
    Dictionary<string, object> parametersPrintPrev = billingEngine.PrepareParametersForPrint();
    billingEngine.OnPrintPrevPrepared(dataSetPrintPrev, parametersPrintPrev, "piece.repx");
    MercatorUi.Reporting.ReportingStatic.Reporting.RunReport("TitleOfPreviewForm", "piece.repx", dataSetPrintPrev, outputDescriptors, parametersPrintPrev);
}