OwnMultiCopiesPrint: Boolean;
OwnMultiCopiesPrint: Boolean;
Свойство OwnMultiCopiesPrint определяет, будет ли автоматически указан номер экземпляра в тексте штампа маркировки при печати и экспорте отчета.
Свойство актуально для использования, если:
включен мандатный доступ или доступ по уровням безопасности;
задан текст штампа маркировки через IGxStamp.Rtf с использование подстановки &[COPYNUMBER].
Совет. Для отображения штампа маркировки независимо от применения мандатного доступа или доступа по уровням безопасности установите свойство IMetabasePolicy.AlwaysPrintDocumentLabel в True.
При значении True для автоматического указания номера экземпляра в тексте штампа маркировки печать отчета будет запускаться столько раз, сколько копий было задано в диалоге печати. Если была задана печать 5 копий, то печать будет последовательно запускаться 5 раз. При экспорте отчета значение подстановки &[COPYNUMBER] будет равно единице.
Запуск печати отчета N раз имеет следующие особенности:
диалог печати не выдается повторно;
печать копий выполняется последовательно;
в протоколе доступа будет сделана только одна запись о печати документа;
при пакетной печати печать будет запускаться N раз по M копий каждого варианта отчета;
нет возможности управлять настройкой «Разобрать по копиям», так как эта настройка будет по умолчанию всегда включена.
Запуск печати отчета N раз доступен только в настольном приложении для экспресс-отчетов, регламентных отчетов и для книг анализа временных рядов.
По умолчанию свойство имеет значение False.
Значение свойства сохраняется вместе с отчетом.
Для выполнения примера в репозитории предполагается наличие регламентного отчёта с идентификатором 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(0, 10);
// Задаем размер штампа - 40x30 мм
Stamp.Size := New GxSizeF.Create(40, 30);
// Задаем текст штампа
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-формы.
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(-1, True, New IWin32WindowForeAdapter(Self));
End Sub;
См. также: