OwnMultiCopiesPrint: Boolean;
OwnMultiCopiesPrint: Boolean;
Свойство OwnMultiCopiesPrint определяет, будет ли автоматически указан номер экземпляра в тексте штампа маркировки при печати и экспорте отчета.
Свойство актуально для использования, если:
включен мандатный доступ или доступ по уровням безопасности;
задан текст штампа маркировки через IGxStamp.Rtf с использование подстановки &[COPYNUMBER].
Совет. Для отображения штампа маркировки независимо от применения мандатного доступа или доступа по уровням безопасности установите свойство IMetabasePolicy.AlwaysPrintDocumentLabel в True.
При значении True для автоматического указания номера экземпляра в тексте штампа маркировки печать отчета будет запускаться столько раз, сколько копий было задано в диалоге печати. Если была задана печать 5 копий, то печать будет последовательно запускаться 5 раз. При экспорте отчета значение подстановки &[COPYNUMBER] будет равно единице.
Запуск печати отчета N раз имеет следующие особенности:
диалог печати не выдается повторно;
печать копий выполняется последовательно;
в протоколе доступа будет сделана только одна запись о печати документа;
при пакетной печати печать будет запускаться N раз по M копий каждого варианта отчета;
нет возможности управлять настройкой «Разобрать по копиям», так как эта настройка будет по умолчанию всегда включена.
Запуск печати отчета N раз доступен только в настольном приложении для экспресс-отчетов, регламентных отчетов и для книг анализа временных рядов.
По умолчанию свойство имеет значение False.
Значение свойства сохраняется вместе с отчетом.
Для выполнения примера предполагается наличие регламентного отчета с идентификатором «REGULAR_REPORT». Добавьте ссылки на системные сборки Metabase, Drawing.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
Security : IMetabaseSecurity;
Doc: IGxDocument;
Stamps: IGxStamps;
Stamp: IGxStamp;
Begin
MB := MetabaseClass.Active;
Security:= MB.Security;
// Задаем использование штампа независимо от настроек
Security.Policy.AlwaysPrintDocumentLabel := True;
// Применяем заданные настройки политики
Security.Apply;
MObj := MB.ItemById("REGULAR_REPORT").Edit;
Doc := MObj As IGxDocument;
// Включаем использование номера экземпляра печати в штампе
Doc.OwnMultiCopiesPrint := True;
Stamps := Doc.Stamps;
// Задаем настройки штампа, расположенного внизу страницы по центру
Stamp := Stamps.CenterBottom;
// Расположение на странице
Stamp.Appearance := GxStampAppearance.EveryPage;
// Задаем отступ 0 мм слева и 10 мм сверху
Stamp.Offset := New GxSizeF.Create(0, 10);
// Задаем размер штампа - 70x70 мм
Stamp.Size := New GxSizeF.Create(70, 70);
// Задаем текст штампа
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 Дата: &[Date] \par}";
MObj.Save;
End Sub UserProc;
После выполнения примера для отчета будет задан штамп маркировки, который будет выводиться при экспорте и печати независимо от других настроек. В штампе маркировки будет отображаться номер экземпляра печати.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Указанная процедура является точкой входа для .NET-сборки.
Imports Prognoz.Platform.Interop.Drawing;
...
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObject;
Security : IMetabaseSecurity;
Doc: IGxDocument;
Stamps: IGxStamps;
Stamp: IGxStamp;
Size1, Size2: GxSizeF = New GxSizeF();
Begin
MB := Params.Metabase;
Security:= MB.Security;
// Задаем использование штампа независимо от настроек
Security.Policy.AlwaysPrintDocumentLabel := True;
// Применяем заданные настройки политики
Security.Apply();
MObj := MB.ItemById["REGULAR_REPORT"].Edit();
Doc := MObj As IGxDocument;
// Включаем использование номера экземпляра печати в штампе
Doc.OwnMultiCopiesPrint := True;
Stamps := Doc.Stamps;
// Задаем настройки штампа, расположенного внизу страницы по центру
Stamp := Stamps.CenterBottom;
// Расположение на странице
Stamp.Appearance := GxStampAppearance.gsaEveryPage;
// Задаем отступ 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 Дата: &[Date] \par}";
MObj.Save();
End Sub;
См. также: