IGxDocument.OwnMultiCopiesPrint

Синтаксис

OwnMultiCopiesPrint: Boolean;

OwnMultiCopiesPrint: boolean;

Описание

Свойство OwnMultiCopiesPrint определяет, будет ли автоматически указан номер экземпляра в тексте штампа маркировки при печати и экспорте отчета.

Комментарии

Свойство актуально для использования, если:

Совет. Для отображения штампа маркировки независимо от применения мандатного доступа или доступа по уровням безопасности установите свойство IMetabasePolicy.AlwaysPrintDocumentLabel в True.

При значении True для автоматического указания номера экземпляра в тексте штампа маркировки печать отчета будет запускаться столько раз, сколько копий было задано в диалоге печати. Если была задана печать 5 копий, то печать будет последовательно запускаться 5 раз. При экспорте отчета значение подстановки &[COPYNUMBER] будет равно единице.

Запуск печати отчета N раз имеет следующие особенности:

Запуск печати отчета N раз доступен только в настольном приложении для экспресс-отчетов, регламентных отчетов и для книг анализа временных рядов.

По умолчанию свойство имеет значение False.

Значение свойства сохраняется вместе с отчетом.

Пример

Для выполнения примера в репозитории предполагается наличие регламентного отчёта с идентификатором REPORT и формы, содержащей кнопку с идентификатором Button1 и компонент DocumentPrinter c идентификатором DocumentPrinter1. Для примера на Fore.NET вместо компонентов Fore используйте их Fore.NET аналоги.

Пример является обработчиком события OnClick для кнопки.

Добавьте ссылки на системные сборки:

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    mb: IMetabase;
    doc: IGxDocument;
    MObj: IMetabaseObject;
    Security: IMetabaseSecurity;
    Stamps: IGxStamps;
    Stamp: IGxStamp;
    Lic: Object;
Begin
    
// Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    
// Получаем единицу лицензирования
    Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
    
// Получаем отчёт
    MObj := MB.ItemById("REPORT").Edit;
    Doc := MObj 
As IGxDocument;
    
// Включаем использование номера экземпляра печати в штампе
    Doc.OwnMultiCopiesPrint := True;
    
// Получим коллекцию штампов отчёта
    Stamps := Doc.Stamps;
    
// Задаем настройки штампа, расположенного внизу страницы справа
    Stamp := Stamps.RightBottom;
    
// Задаем расположение на первой странице
    Stamp.Appearance := GxStampAppearance.FirstPage;
    
// Задаем отступ 0 мм слева и 10 мм сверху
    Stamp.Offset := New GxSizeF.Create(010);
    
// Задаем размер штампа - 40x30 мм
    Stamp.Size := New GxSizeF.Create(4030);
    
// Задаем текст штампа
    Stamp.Rtf := "{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset240 Cambria;}}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\b\f0\fs22 Копия &[CopyNumber] из &[TOTAL_COPIES] \par Страница: &[Page] из &[Pages] \par}";
    
// Выводим отчёт на предпросмотр
    DocumentPrinter1.Document := Doc;
    DocumentPrinter1.PrintPreview(
0NullTrue);
    Lic := 
Null;
End Sub Button1OnClick;

Imports System.Windows.Forms;
Imports Prognoz.Platform.Forms.Net;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Metabase;

Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
    mb: IMetabase;
    doc: IGxDocument;
    MObj: IMetabaseObject;
    Security: IMetabaseSecurity;
    Stamps: IGxStamps;
    Stamp: IGxStamp;
    Offset, Size: GxSizeF = 
New GxSizeFClass();
    Lic: Object;
Begin
    
// Получаем текущий репозиторий
    MB := Self.Metabase;
    
// Получаем единицу лицензирования
    Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
    
// Получаем отчёт
    MObj := MB.ItemById["REPORT"].Edit();
    Doc := MObj 
As IGxDocument;
    
// Включаем использование номера экземпляра печати в штампе
    Doc.OwnMultiCopiesPrint := True;
    
// Получим коллекцию штампов отчёта
    Stamps := Doc.Stamps;
    
// Задаем настройки штампа, расположенного внизу страницы справа
    Stamp := Stamps.RightBottom;
    
// Задаем расположение на первой странице
    Stamp.Appearance := GxStampAppearance.gsaFirstPage;
    
// Задаем отступ 0 мм слева и 10 мм сверху
    Offset := Stamp.Offset;
    Offset.Create(
010);
    
// Задаем размер штампа - 40x30 мм
    Size := Stamp.Size;
    Size.Create(
4030);
    
// Задаем текст штампа
    Stamp.Rtf := "{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset240 Cambria;}}\viewkind4\pard\sa200\sl276\slmult1\lang9\b\f0\fs22 Копия &[CopyNumber] из &[TOTAL_COPIES] \par Страница: &[Page] из &[Pages] \par}";
    
// Выводим отчёт на предпросмотр
    DocumentPrinterNet1.Document := Doc;
    DocumentPrinterNet1.DocumentPrinterUi.PrintPreview(
0New IWin32WindowForeAdapter(Self), True);
    Lic := 
Null;
End Sub;

В результате выполнения примера для отчёта будет задан штамп маркировки, который будет выводиться при экспорте и печати независимо от других настроек. В штампе маркировки будет отображаться номер экземпляра печати и номер страницы относительно общего числа страниц в документе. Отчёт будет выведен на предварительный просмотр.

См. также:

IGxDocument