IGxDocument.OwnMultiCopiesPrint

Синтаксис Fore

OwnMultiCopiesPrint: Boolean;

Синтаксис Fore.NET

OwnMultiCopiesPrint: Boolean;

Описание

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

Комментарии

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

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

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

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

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

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

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

Пример Fore

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

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

Добавьте ссылки на системные сборки Drawing, Metabase.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    mb: IMetabase;
    doc: IGxDocument;
    MObj: IMetabaseObject;
    Security: IMetabaseSecurity;
    Stamps: IGxStamps;
    Stamp: IGxStamp;
Begin
    
// Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    Security := MB.Security;
    
// Задаем использование штампа независимо от настроек
    Security.Policy.AlwaysPrintDocumentLabel := True;
    
// Применяем заданные настройки политики
    Security.Apply;
    MObj := MB.ItemById(
"REGLAMENT_STAMPS").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}";
    MObj.Save;
    DocumentPrinter1.Document := Doc;
    DocumentPrinter1.Print;
End Sub Button1OnClick;

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

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Указанная процедура является точкой входа для .NET-формы.

Imports Prognoz.Platform.Interop.Drawing;

...

Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Security: IMetabaseSecurity;
    Doc: IGxDocument;
    Stamps: IGxStamps;
    Stamp: IGxStamp;
    Size1,  Size2: GxSizeF = New  GxSizeF();
Begin
    
// Получаем текущий репозиторий
    MB := Self.Metabase;
    Security := MB.Security;
    
// Задаем использование штампа независимо от настроек
    Security.Policy.AlwaysPrintDocumentLabel := True;
    
// Применяем заданные настройки политики
    Security.Apply();
    MObj := MB.ItemById(
"REGLAMENT_STAMPS").Edit();
    Doc := MObj 
As IGxDocument;
    
// Включаем использование номера экземпляра печати в штампе
    Doc.OwnMultiCopiesPrint := True;
    
// Получим коллекцию штампов отчёта
    Stamps := Doc.Stamps;
    
// Задаем настройки штампа, расположенного внизу страницы справа
    Stamp := Stamps.RightBottom;
    
// Задаем расположение на первой странице
    Stamp.Appearance := GxStampAppearance.gsaFirstPage;
    
// Задаем отступ 0 мм слева и 10 мм сверху
    Size1.Create(0,  10);
    Stamp.Offset := Size1;
    
// Задаем размер штампа - 40x30 мм
    Size2.Create(40,  30);
    Stamp.Size := Size2;
    
// Задаем текст штампа
    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}";
    MObj.Save();
    DocumentPrinterNet1.Document := Doc;
    DocumentPrinterNet1.DocumentPrinterUi.Print(-
1TrueNew IWin32WindowForeAdapter(Self));
End Sub;

См. также:

IGxDocument