Печать
BIN
public/bsp-pechat/1.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/bsp-pechat/2.png
Normal file
After Width: | Height: | Size: 174 KiB |
BIN
public/bsp-pechat/3.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
public/bsp-pechat/4.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
public/bsp-pechat/5.png
Normal file
After Width: | Height: | Size: 229 KiB |
BIN
public/bsp-pechat/6.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
public/bsp-pechat/7.png
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
public/bsp-pechat/8.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
public/bsp-pechat/9.png
Normal file
After Width: | Height: | Size: 556 KiB |
@ -0,0 +1,930 @@
|
||||
---
|
||||
title: Подключение к подсистеме Печать
|
||||
slug: общие-бсп-стандартные-подсистемы-3-1-10-печать/подключение-к-подсистеме-печать
|
||||
---
|
||||
|
||||
## Настройка объектов метаданных
|
||||
|
||||
В процедуре `ПриОпределенииНастроекПечати` общего модуля `УправлениеПечатьюПереопределяемый` перечисляем менеджеры объектов, которые нужно подключить:
|
||||
|
||||
```bsl
|
||||
|
||||
// Переопределяет настройки подсистемы.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - Структура:
|
||||
// * ИспользоватьПодписиИПечати - Булево - при установке значения Ложь отключается возможность установки подписей
|
||||
// и печатей в печатных формах.
|
||||
// * СкрыватьПодписиИПечатиДляРедактирования - Булево - удалять рисунки подписей и печатей табличных документов при
|
||||
// снятии флажка "Подписи и печати" в форме "Печать документов", для того,
|
||||
// чтобы они не мешали редактировать текст, находящийся под ними.
|
||||
// * ПроверкаПроведенияПередПечатью - Булево - признак необходимости проверки проведенности
|
||||
// документов перед печатью, является значением по умолчанию для команды печати
|
||||
// см. УправлениеПечатью.СоздатьКоллекциюКомандПечати.
|
||||
// Для непроведенных документов команда печати не выполняется.
|
||||
// Если параметр не указан, то проверка проведенности не выполняется.
|
||||
// * ОбъектыПечати - Массив - менеджеры объектов с процедурой ПриОпределенииНастроекПечати.
|
||||
//
|
||||
Процедура ПриОпределенииНастроекПечати(Настройки) Экспорт
|
||||
|
||||
...
|
||||
Настройки.ОбъектыПечати.Добавить(Справочники._ДемоКонтрагенты);
|
||||
Настройки.ОбъектыПечати.Добавить(Справочники._ДемоОрганизации);
|
||||
...
|
||||
Настройки.ОбъектыПечати.Добавить(Документы._ДемоСчетНаОплатуПокупателю);
|
||||
Настройки.ОбъектыПечати.Добавить(Документы._ДемоРасходныйКассовыйОрдер);
|
||||
...
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
## Настройка модуля менеджера
|
||||
|
||||
В модуле менеджера объектов, подключаемых к подсистеме добавляются методы `ПриОпределенииНастроекПечати` и `ДобавитьКомандыПечати`:
|
||||
|
||||
```bsl
|
||||
|
||||
// СтандартныеПодсистемы.Печать
|
||||
|
||||
// Переопределяет настройки печати для объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - см. УправлениеПечатью.НастройкиПечатиОбъекта.
|
||||
//
|
||||
Процедура ПриОпределенииНастроекПечати(Настройки) Экспорт
|
||||
Настройки.ПриДобавленииКомандПечати = Истина;
|
||||
КонецПроцедуры
|
||||
|
||||
// Определяет список команд печати.
|
||||
//
|
||||
// Параметры:
|
||||
// КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
|
||||
//
|
||||
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
|
||||
|
||||
// в зависимости от варианта печати - автоматического "нового" или традиционного. См. ниже
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Конец СтандартныеПодсистемы.Печать
|
||||
|
||||
```
|
||||
|
||||
## Подключение форм к подсистеме `Подключаемые команды`
|
||||
|
||||
Чтоыб были выведены подключаемые команды печати необходимо подключить формы к подсистеме `Подключаемые команды`
|
||||
|
||||
|
||||
## Автоматическое формирование печатной формы
|
||||
|
||||
### Макет табличного документа
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">ВАРИАНТ 1. Без конфигуратора</summary>
|
||||
|
||||
Данный способ позволяет создать печатную форму исключительно в пользовательском режиме.
|
||||
Команды печати в таком случае создавать не нужно
|
||||
|
||||
В пользовательском режиме открываем `Администрирование` -> `Печатные формы, отчеты и обработки` -> `Макеты печатных форм`
|
||||
|
||||

|
||||
|
||||
В конструкторе макета создаем необходимый вид печатной формы
|
||||
|
||||

|
||||
|
||||
> ВАЖНО! Параметры указываются в [квадратных скобках], функции также. Например, чтобы для поля `Дата` применить функцию `Формат`, в ячейку нужно записать строку вида `[Формат([Дата], "ДФ=дд.ММ.гггг")]`.
|
||||
|
||||
> Также не нужно никак выделять строки табличных частей - просто выводим параметры ТЧ в ячейки, система сама определит, что такие строки нужно повторять
|
||||
|
||||

|
||||
|
||||
С помощью команд редактора можно запустить предпросмотр или изменить образец:
|
||||
|
||||

|
||||
|
||||
Включаем видимость печатной формы
|
||||
|
||||

|
||||
|
||||
Все, после записи макета команда печати будет доступна в формах объекта
|
||||
|
||||
</details>
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">ВАРИАНТ 2. Встраивание в конфигуратор</summary>
|
||||
|
||||
- Создаем макет печатной формы также, как и в **варианте 1**, только **не включаем видимость**. Созданный макет нужно сохранить в формате `MXL`, открыть в конфигураторе и скопировать **все** содержимое в созданный макет
|
||||
|
||||

|
||||
|
||||
|
||||
- В `модуле менеджера` реализуем процедуру `ДобавитьКомандыПечати`:
|
||||
|
||||
```bsl
|
||||
|
||||
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
|
||||
|
||||
Команда = КомандыПечати.Добавить();
|
||||
|
||||
Команда.МенеджерПечати = "УправлениеПечатью"; // ВАЖНО! Менеджер - сама подсистема
|
||||
Команда.Идентификатор = "Документ.МойДокумент.ПФ_MXL_ПечатнаяФормаМоегоДокумента"; // Полный путь к макету
|
||||
Команда.Представление = НСтр("ru = 'Печатная форма моего документа'");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
После обновления конфигурации команда печати должна появиться в формах целевого объекта, а также в списке `Макеты печатных форм`
|
||||
|
||||
</details>
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">Изменение списка доступных полей</summary>
|
||||
|
||||
Для того, чтобы расширить или уменьшить список доступных полей в конструкторе печатных форм нужно реализовать схему компоновки данных `ДанныеПечати` на уровне объекта
|
||||
|
||||

|
||||
|
||||
Схема компоновки данных должна именоваться именно `Данные печати`, в запросе иметь поле `Ссылка` целевого объекта. **В схеме можно использовать все возможности СКД** (ВычисляемыеПоля, соединения и пр.)
|
||||
|
||||

|
||||
|
||||
ПРИ НЕОБХОДИМОСТИ дополняются методы `ПриОпределенииИсточниковДанныхПечати` `ПриПодготовкеДанныхПечати` общего модуля `УправлениеПечатьюПереопределяемый`. Метод `ПриОпределенииИсточниковДанныхПечати` **описывает новые поля** схемы, а `ПриПодготовкеДанныхПечати` **реализует их заполнение**
|
||||
|
||||
**(Не пробовал, нужно потестить)**
|
||||
|
||||
```bsl
|
||||
|
||||
// Определяет используемый макет данных печати для объектов метаданных и отдельных полей.
|
||||
// По умолчанию используется макет ДанныеПечати у ссылочных объектов. Если макет отсутствует в метаданных, он будет
|
||||
// сгенерирован автоматически на основе выборки всех реквизитов объекта. В данной процедуре можно переопределить
|
||||
// состав полей, доступных для печати как для всего объекта, так и для отдельного поля объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Строка - полное имя объекта метаданных либо имя поля из макета "ДанныеПечати" объекта метаданных
|
||||
// в формате "ПолноеИмяОбъектаМетаданных.ИмяПоля".
|
||||
// ИсточникиДанныхПечати - СписокЗначений:
|
||||
// * Значение - СхемаКомпоновкиДанных - схема данных печати. Определяет состав подчиненных полей объекта или поля,
|
||||
// используется при получении данных печати.
|
||||
// При получении данных печати отбор значений производится по полю Ссылка.
|
||||
// Поэтому в составе полей схемы компоновки данных обязательно должно
|
||||
// присутствовать поле Ссылка, даже если оно фактически не ссылочного типа,
|
||||
// а, например, Строка.
|
||||
//
|
||||
// * Представление - Строка - идентификатор схемы, используется в процедуре ПриПодготовкеДанныхПечати.
|
||||
// Если в качестве идентификатора схемы используется полное имя объекта метаданных, то
|
||||
// при подготовке данных печати будет вызываться процедура ПриПодготовкеДанныхПечати
|
||||
// модуля менеджера объекта. Иначе будет вызвана аналогичная процедура этого модуля.
|
||||
//
|
||||
// * Пометка -Булево - Истина, если в качестве дополнительного ключевого поля выступает владелец источника данных.
|
||||
//
|
||||
Процедура ПриОпределенииИсточниковДанныхПечати(Объект, ИсточникиДанныхПечати) Экспорт
|
||||
|
||||
// _Демо начало примера
|
||||
|
||||
// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
|
||||
Если Объект = "Справочник._ДемоФизическиеЛица.Наименование" Тогда
|
||||
СклонениеПредставленийОбъектов.ПодключитьИсточникДанныхПечатиСклоненияСтрок(ИсточникиДанныхПечати);
|
||||
КонецЕсли;
|
||||
// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов
|
||||
|
||||
Если Объект = "Документ._ДемоСчетНаОплатуПокупателю" Тогда
|
||||
|
||||
СписокПолей = УправлениеПечатью.ДеревоПолейДанныхПечати();
|
||||
|
||||
Поле = СписокПолей.Строки.Добавить();
|
||||
Поле.Идентификатор = "Ссылка";
|
||||
Поле.Представление = НСтр("ru = 'Ссылка'");
|
||||
Поле.ТипЗначения = Новый ОписаниеТипов();
|
||||
|
||||
Поле = СписокПолей.Строки.Добавить();
|
||||
Поле.Идентификатор = "QRКод";
|
||||
Поле.Представление = НСтр("ru='QR-код'");
|
||||
Поле.Картинка = БиблиотекаКартинок.ТипКартинка;
|
||||
Поле.Порядок = 1;
|
||||
|
||||
СхемаДанныеШтрихкодов = УправлениеПечатью.СхемаКомпоновкиДанныхПечати(СписокПолей);
|
||||
ИсточникиДанныхПечати.Добавить(СхемаДанныеШтрихкодов, "QRКодСчетаНаОплату");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Объект = "Справочник._ДемоФизическиеЛица.Наименование" Тогда
|
||||
СписокПолей = УправлениеПечатью.ТаблицаПолейДанныхПечати();
|
||||
|
||||
Поле = СписокПолей.Добавить();
|
||||
Поле.Идентификатор = "Ссылка";
|
||||
Поле.Представление = НСтр("ru = 'Ссылка'");
|
||||
Поле.ТипЗначения = Новый ОписаниеТипов();
|
||||
|
||||
Поле = СписокПолей.Добавить();
|
||||
Поле.Идентификатор = "ФамилияИнициалы";
|
||||
Поле.Представление = НСтр("ru = 'Фамилия И. О.'");
|
||||
Поле.ТипЗначения = Новый ОписаниеТипов("Строка");
|
||||
|
||||
СхемаДанных = УправлениеПечатью.СхемаКомпоновкиДанныхПечати(СписокПолей);
|
||||
|
||||
ИсточникиДанныхПечати.Добавить(СхемаДанных, "ДанныеПечатиФамилияИнициалы");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// _Демо конец примера
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
// Подготавливает данные печати. Вызывается в случае, если используемая схема компоновки данных содержит набор
|
||||
// данных Объект.
|
||||
// В случае, если в качестве идентификатора схемы используется имя объекта метаданных, то вместо этой процедуры
|
||||
// вызывается аналогичная процедура модуля менеджера объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// ИсточникиДанных - Массив - объекты, для которых формируются данные печати.
|
||||
// ВнешниеНаборыДанных - Структура - коллекция наборов данных для передачи в процессор компоновки данных.
|
||||
// ИдентификаторСхемыКомпоновкиДанных - Строка - идентификатор СКД, указанный в ПриОпределенииИсточниковДанныхПечати.
|
||||
// КодЯзыка - Строка - язык, на котором требуется подготовить данные печати.
|
||||
// ДополнительныеПараметры - Структура:
|
||||
// * ОписанияИсточниковДанных - ТаблицаЗначений - дополнительные сведения об объектах, для которых формируются данные печати.
|
||||
// * ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных - Булево - указывает на то, что в результате компоновки
|
||||
// данные печати сгруппированы не по объектам печати, а по их владельцам в схеме данных печати.
|
||||
//
|
||||
Процедура ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка,
|
||||
ДополнительныеПараметры) Экспорт
|
||||
|
||||
Если ИдентификаторСхемыКомпоновкиДанных = "QRКодСчетаНаОплату" Тогда
|
||||
|
||||
НаборДанных = Новый ТаблицаЗначений();
|
||||
НаборДанных.Колонки.Добавить("Ссылка");
|
||||
НаборДанных.Колонки.Добавить("QRКод");
|
||||
|
||||
|
||||
ДанныеДокументов = ДанныеДокументов(ИсточникиДанных);
|
||||
|
||||
QRКоды = Новый Соответствие;
|
||||
Для Каждого РеквизитыПлатежа Из ДанныеДокументов Цикл
|
||||
ПолучитьСообщенияПользователю();
|
||||
QRСтрока = Неопределено;
|
||||
// Локализация
|
||||
QRСтрока = УправлениеПечатьюРФ.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа);
|
||||
// Конец Локализация
|
||||
|
||||
Если ПустаяСтрока(QRСтрока) Тогда
|
||||
QRКоды.Вставить(РеквизитыПлатежа.Ссылка, Новый Картинка());
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеQRКода = ГенерацияШтрихкода.ДанныеQRКода(QRСтрока, 1, 120);
|
||||
|
||||
Если НЕ ТипЗнч(ДанныеQRКода) = Тип("ДвоичныеДанные") Тогда
|
||||
Шаблон = НСтр("ru = 'Не удалось сформировать QR-код для документа %1.
|
||||
|Технические подробности см. в журнале регистрации.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, РеквизитыПлатежа.Ссылка);
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
QRКод = Новый Картинка(ДанныеQRКода);
|
||||
QRКоды.Вставить(РеквизитыПлатежа.Ссылка, QRКод);
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого ИсточникДанных Из ИсточникиДанных Цикл
|
||||
ЗначениеПолейДанных = НаборДанных.Добавить();
|
||||
ЗначениеПолейДанных.Ссылка = ИсточникДанных;
|
||||
ЗначениеПолейДанных.QRКод = QRКоды[ИсточникДанных];
|
||||
КонецЦикла;
|
||||
|
||||
ВнешниеНаборыДанных.Вставить("Данные", НаборДанных);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ИдентификаторСхемыКомпоновкиДанных = "ДанныеПечатиФамилияИнициалы" Тогда
|
||||
|
||||
ДанныеПечати = Новый ТаблицаЗначений();
|
||||
ДанныеПечати.Колонки.Добавить("Ссылка");
|
||||
ДанныеПечати.Колонки.Добавить("ФамилияИнициалы");
|
||||
|
||||
Для Каждого Объект Из Объекты Цикл
|
||||
СтрокаТаблицы = ДанныеПечати.Добавить();
|
||||
СтрокаТаблицы.Ссылка = Объект;
|
||||
СтрокаТаблицы.ФамилияИнициалы = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(Объект);
|
||||
КонецЦикла;
|
||||
|
||||
ВнешниеНаборыДанных.Вставить("Данные", ДанныеПечати);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### Макет open office XML (DOC)
|
||||
|
||||
Отличается только конструктором, все остальное, так же, как описано выше для MXL
|
||||
|
||||

|
||||
|
||||
## Традиционное формирование печатной формы
|
||||
|
||||
### Макет табличного документа
|
||||
|
||||
В `модуле менеджера` реализуем процедуру `ДобавитьКомандыПечати`:
|
||||
|
||||
```bsl
|
||||
|
||||
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
|
||||
|
||||
Команда = КомандыПечати.Добавить();
|
||||
|
||||
Команда.МенеджерПечати = "Документ.МойДокумент"; // где процедура "Печать". Можно не указывать, по умолчанию модуль менеджера объекта
|
||||
Команда.Идентификатор = "ПФ_MXL_ПечатнаяФормаМоегоДокумента"; // Произвольная строка, рекомендуется именовать как макет
|
||||
Команда.Представление = НСтр("ru = 'Печатная форма моего документа'");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">Примеры команд печати</summary>
|
||||
|
||||
```bsl
|
||||
|
||||
// Заполняет список команд печати.
|
||||
//
|
||||
// Параметры:
|
||||
// КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
|
||||
//
|
||||
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
|
||||
|
||||
// Счет на оплату
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Счет";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Не Пользователи.РолиДоступны("_ДемоПечатьНепроведенныхДокументов");
|
||||
|
||||
// Счет на оплату без платежных реквизитов.
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Счет";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату без платежных реквизитов'");
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Не Пользователи.РолиДоступны("_ДемоПечатьНепроведенныхДокументов");
|
||||
|
||||
// Это будет доступно в аргументе "ПараметрыПечати" метода "Печать"
|
||||
КомандаПечати.ДополнительныеПараметры.Вставить("ВыводитьПлатежныеРеквизиты", Ложь);
|
||||
|
||||
// Демо-пример ограничения доступности команд печати.
|
||||
Если Пользователи.РолиДоступны("_ДемоПечатьСчетаНаОплатуНаПринтер") Тогда
|
||||
// Счет на оплату (на принтер).
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Счет";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату (на принтер)'");
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ПечатьСразу;
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.СразуНаПринтер = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Пользователи.ЭтоСеансВнешнегоПользователя() Тогда
|
||||
// Комплект документов
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Счет,Заказ,Заказ,Обработка._ДемоПечатнаяФорма.ГарантийноеПисьмо,Счет,Счет,Заказ";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Комплект документов'");
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.ФиксированныйКомплект = Истина;
|
||||
КомандаПечати.ПереопределитьПользовательскиеНастройкиКоличества = Истина;
|
||||
КомандаПечати.Порядок = 75;
|
||||
|
||||
// Комплект документов (на принтер).
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Счет,Заказ,Заказ,Обработка._ДемоПечатнаяФорма.ГарантийноеПисьмо,Счет,Счет,Заказ";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Комплект документов (на принтер)'");
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ПечатьСразу;
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.ФиксированныйКомплект = Истина;
|
||||
КомандаПечати.ПереопределитьПользовательскиеНастройкиКоличества = Истина;
|
||||
КомандаПечати.СразуНаПринтер = Истина;
|
||||
КомандаПечати.Порядок = 75;
|
||||
|
||||
// Настраиваемый комплект документов.
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Счет,Заказ,Заказ,Обработка._ДемоПечатнаяФорма.ГарантийноеПисьмо,Счет,Счет,Заказ";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Настраиваемый комплект документов'");
|
||||
КомандаПечати.СписокФорм = "ФормаДокумента,ФормаСписка";
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.ЗаголовокФормы = НСтр("ru = 'Настраиваемый комплект'");
|
||||
КомандаПечати.ДополнитьКомплектВнешнимиПечатнымиФормами = Истина;
|
||||
КомандаПечати.Порядок = 75;
|
||||
КонецЕсли;
|
||||
|
||||
// Счет на оплату в документ Adobe PDF.
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Счет";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату в документ Adobe PDF'");
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматPDF;
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.ФорматСохранения = ТипФайлаТабличногоДокумента.PDF;
|
||||
|
||||
// Счет на оплату в формате Office Open XML
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "СчетНаОплату(OfficeOpenXML)";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату в Office Open XML'");
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord;
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
|
||||
|
||||
// Счет на оплату в формате Office Open XML (на основе СКД)
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.МенеджерПечати = "УправлениеПечатью";
|
||||
КомандаПечати.Идентификатор = "Документ._ДемоСчетНаОплатуПокупателю.ПФ_DOC_СчетНаОплатуСКД_ru";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату в Office Open XML (на основе СКД)'");
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord;
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
|
||||
// Счет на оплату в Microsoft Word.
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "СчетНаОплату(MSWord)";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату в Microsoft Word (для обратной совместимости)'");
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord2007;
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.Обработчик = "_ДемоСтандартныеПодсистемыКлиент.ПечатьСчетовНаОплатуПокупателю";
|
||||
|
||||
// Счет на оплату в OpenOffice.org Writer.
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "СчетНаОплату(ODT)";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату в OpenOffice.org Writer (для обратной совместимости)'");
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматOpenOfficeWriter;
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.Обработчик = "_ДемоСтандартныеПодсистемыКлиент.ПечатьСчетовНаОплатуПокупателю";
|
||||
|
||||
// Локализация
|
||||
// Квитанция на оплату с QR кодом.
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "Квитанция";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Квитанция (с QR кодом)'");
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.Порядок = 85;
|
||||
// Конец Локализация
|
||||
|
||||
// Печатная форма с ошибкой формирования.
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.Идентификатор = "ПечатнаяФормаСОшибкой";
|
||||
КомандаПечати.Представление = НСтр("ru = 'Печатная форма с ошибкой формирования'");
|
||||
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
|
||||
КомандаПечати.Порядок = 100;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
В `модуле менеджера` реализуем процедуру `Печать`:
|
||||
|
||||
```bsl
|
||||
|
||||
// Формирует печатные формы.
|
||||
//
|
||||
// Параметры:
|
||||
// МассивОбъектов - см. УправлениеПечатьюПереопределяемый.ПриПечати.МассивОбъектов
|
||||
// ПараметрыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыПечати
|
||||
// КоллекцияПечатныхФорм - см. УправлениеПечатьюПереопределяемый.ПриПечати.КоллекцияПечатныхФорм
|
||||
// ОбъектыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ОбъектыПечати
|
||||
// ПараметрыВывода - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыВывода
|
||||
//
|
||||
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
|
||||
|
||||
ИдентификаторКоманды = "Заказ";
|
||||
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, ИдентификаторКоманды);
|
||||
Если ПечатнаяФорма <> Неопределено Тогда
|
||||
// ПечатьСчетаЗаказа - функция, возвращающая заполненный табличный документ
|
||||
ПечатнаяФорма.ТабличныйДокумент = ПечатьСчетаЗаказа(МассивОбъектов, ОбъектыПечати, "Заказ");
|
||||
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Заказ покупателя'");
|
||||
ПечатнаяФорма.ПолныйПутьКМакету = "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ";
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">Пример печати (Демо)</summary>
|
||||
|
||||
```bsl
|
||||
|
||||
// Формирует печатные формы.
|
||||
//
|
||||
// Параметры:
|
||||
// МассивОбъектов - см. УправлениеПечатьюПереопределяемый.ПриПечати.МассивОбъектов
|
||||
// ПараметрыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыПечати
|
||||
// КоллекцияПечатныхФорм - см. УправлениеПечатьюПереопределяемый.ПриПечати.КоллекцияПечатныхФорм
|
||||
// ОбъектыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ОбъектыПечати
|
||||
// ПараметрыВывода - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыВывода
|
||||
//
|
||||
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
|
||||
|
||||
// печать счета на оплату
|
||||
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "СчетНаОплату(OfficeOpenXML)");
|
||||
Если ПечатнаяФорма <> Неопределено Тогда
|
||||
|
||||
ИмяМакета = "СчетНаОплату(OfficeOpenXML)";
|
||||
МакетИДанныеОбъекта = УправлениеПечатью.МакетыИДанныеОбъектовДляПечати("Документ._ДемоСчетНаОплатуПокупателю",
|
||||
ИмяМакета, МассивОбъектов);
|
||||
|
||||
ОфисныеДокументы = Новый Соответствие;
|
||||
|
||||
Шаблон = НСтр("ru = '[Организация]-[Контрагент] Счет №[Номер] от [Дата]'");
|
||||
ЗначенияРеквизитовДокументов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов,
|
||||
"Организация,Контрагент,Номер,Дата,Ссылка");
|
||||
Для Каждого Ссылка Из МассивОбъектов Цикл
|
||||
|
||||
ЗначенияРеквизитовДокумента = ЗначенияРеквизитовДокументов[Ссылка];
|
||||
ЗначенияРеквизитовДокумента.Дата = Формат(ЗначенияРеквизитовДокумента.Дата, "ДЛФ=D");
|
||||
ЗначенияРеквизитовДокумента.Номер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ЗначенияРеквизитовДокумента.Номер);
|
||||
ИмяДокумента = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(Шаблон, ЗначенияРеквизитовДокументов[Ссылка]);
|
||||
|
||||
АдресХранилищаОфисныйДокумент = НапечататьСчетНаОплатуПокупателю(Ссылка, МакетИДанныеОбъекта, ИмяМакета);
|
||||
|
||||
ОфисныеДокументы.Вставить(АдресХранилищаОфисныйДокумент, ИмяДокумента);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Счет на оплату'");
|
||||
ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// печать счета на оплату
|
||||
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Счет");
|
||||
Если ПечатнаяФорма <> Неопределено Тогда
|
||||
// имена файлов
|
||||
ИменаФайлов = Новый Соответствие;
|
||||
Шаблон = НСтр("ru = '[Организация]-[Контрагент] Счет №[Номер] от [Дата]'");
|
||||
ЗначенияРеквизитовДокументов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов,
|
||||
"Организация,Контрагент,Номер,Дата,Ссылка");
|
||||
Для Каждого Ссылка Из МассивОбъектов Цикл
|
||||
ЗначенияРеквизитовДокумента = ЗначенияРеквизитовДокументов[Ссылка];
|
||||
ЗначенияРеквизитовДокумента.Дата = Формат(ЗначенияРеквизитовДокумента.Дата, "ДЛФ=D");
|
||||
ЗначенияРеквизитовДокумента.Номер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ЗначенияРеквизитовДокумента.Номер);
|
||||
ИмяФайла = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(Шаблон, ЗначенияРеквизитовДокументов[Ссылка]);
|
||||
ИменаФайлов.Вставить(Ссылка, ИмяФайла);
|
||||
КонецЦикла;
|
||||
|
||||
// описание печатной формы
|
||||
ВыводитьПлатежныеРеквизиты = Истина;
|
||||
Если ПараметрыПечати.Свойство("ВыводитьПлатежныеРеквизиты") Тогда
|
||||
ВыводитьПлатежныеРеквизиты = ПараметрыПечати.ВыводитьПлатежныеРеквизиты;
|
||||
КонецЕсли;
|
||||
ПечатнаяФорма.ТабличныйДокумент = ПечатьСчетаЗаказа(МассивОбъектов, ОбъектыПечати, "Счет",
|
||||
ВыводитьПлатежныеРеквизиты, ПараметрыВывода.КодЯзыка);
|
||||
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Счет на оплату'");
|
||||
ПечатнаяФорма.ПолныйПутьКМакету = "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ";
|
||||
ПечатнаяФорма.ИмяФайлаПечатнойФормы = ИменаФайлов;
|
||||
ПечатнаяФорма.ДоступенВыводНаДругихЯзыках = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
// печать заказа покупателя
|
||||
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Заказ");
|
||||
Если ПечатнаяФорма <> Неопределено Тогда
|
||||
ПечатнаяФорма.ТабличныйДокумент = ПечатьСчетаЗаказа(МассивОбъектов, ОбъектыПечати, "Заказ");
|
||||
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Заказ покупателя'");
|
||||
ПечатнаяФорма.ПолныйПутьКМакету = "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ";
|
||||
КонецЕсли;
|
||||
|
||||
// Локализация
|
||||
// печать квитанции
|
||||
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Квитанция");
|
||||
Если ПечатнаяФорма <> Неопределено Тогда
|
||||
ПечатнаяФорма.ТабличныйДокумент = ПечатьКвитанции(МассивОбъектов, ОбъектыПечати);
|
||||
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Квитанция (с QR кодом)'");
|
||||
ПечатнаяФорма.ПолныйПутьКМакету = "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_Квитанция";
|
||||
КонецЕсли;
|
||||
// Конец Локализация
|
||||
|
||||
// Параметры отправки печатных форм по электронной почте.
|
||||
ПриОпределенииПолучателей(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
### Макет open office XML (DOC)
|
||||
|
||||
Макет - обычный офисный документ, в котором особым образом выделены области и параметры.
|
||||
Макет может быть создан в Microsoft Word, OpenOffice, Google Docs и др.
|
||||
|
||||
Области выделяются блоком вида
|
||||
```
|
||||
{v8 Область.<ИмяОбласти>}
|
||||
|
||||
{/v8 Область.<ИмяОбласти>}
|
||||
```
|
||||
|
||||
Параметры выделяются маркером вида `{v8 <ИмяПараметра>}`
|
||||
|
||||
Области могут быть следующих типов:
|
||||
|
||||

|
||||
|
||||
В `модуле менеджера`:
|
||||
- Создаем команды печати
|
||||
```bsl
|
||||
|
||||
// Заполняет список команд печати.
|
||||
//
|
||||
// Параметры:
|
||||
// КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
|
||||
//
|
||||
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
|
||||
|
||||
// формирование печатной формы в коде (Open Office XML)
|
||||
КомандаПечати = КомандыПечати.Добавить();
|
||||
КомандаПечати.МенеджерПечати = "Документ.ЗаказКлиента";
|
||||
КомандаПечати.Идентификатор = "КоммерческоеПредложение";
|
||||
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord2007;
|
||||
КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение (кодом)'");
|
||||
КомандаПечати.Порядок = 4;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
- Реализуем метод `Печать`
|
||||
|
||||
```bsl
|
||||
|
||||
// Формирует печатные формы.
|
||||
//
|
||||
// Параметры:
|
||||
// МассивОбъектов – Массив – ссылки на объекты, которые нужно распечатать;
|
||||
// ПараметрыПечати – Структура – дополнительные настройки печати;
|
||||
// КоллекцияПечатныхФорм – ТаблицаЗначений – сформированные табличные документы (выходной параметр)
|
||||
// ОбъектыПечати – СписокЗначений – значение – ссылка на объект;
|
||||
// представление – имя области, в которой был выведен объект (выходной параметр);
|
||||
// ПараметрыВывода – Структура – дополнительные параметры сформированных табличных документов (выходной параметр).
|
||||
//
|
||||
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
|
||||
|
||||
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "КоммерческоеПредложение");
|
||||
Если ПечатнаяФорма <> Неопределено Тогда
|
||||
// * ОфисныеДокументы - Соответствие из КлючИЗначение - коллекция печатных форм в формате офисных документов:
|
||||
// ** Ключ - Строка - адрес во временном хранилище двоичных данных печатной формы;
|
||||
// ** Значение - Строка - имя файла печатной формы.
|
||||
ПечатнаяФорма.ОфисныеДокументы = ПечатьКоммерческогоПредложения(МассивОбъектов);
|
||||
ПечатнаяФорма.СинонимМакета = "Коммерческое предложение";
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СформироватьОфисныйДокумент(Ссылка)
|
||||
|
||||
// Подготавливаем макет для формирования печатной формы OpenXML
|
||||
МакетДокумента = ПолучитьМакет("ПФ_DOCX_КомерческоеПредложение");
|
||||
Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(МакетДокумента, Неопределено);
|
||||
|
||||
// Создаем структуру областей формируемой печатной формы OpenXМL
|
||||
ОписаниеОбластей = Новый Структура;
|
||||
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Заголовок", "Общая");
|
||||
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Шапка", "Общая");
|
||||
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "ШапкаТаблицы", "Общая");
|
||||
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "СтрокаТаблицы", "СтрокаТаблицы");
|
||||
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Подвал", "Общая");
|
||||
|
||||
// Подготавливаем печатную форму в формате офисного документа
|
||||
ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Неопределено, Макет);
|
||||
|
||||
//получаем данные документа
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = ТекстЗапроса(); // какой-то запрос
|
||||
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||||
|
||||
ДанныеДляПечати = Запрос.ВыполнитьПакет();
|
||||
|
||||
Шапка = ДанныеДляПечати[0].Выгрузить();
|
||||
Товары = ДанныеДляПечати[1].Выгрузить();
|
||||
|
||||
ДанныеШапка = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Шапка[0]);
|
||||
ДанныеШапка["Номер"] = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеШапка["Номер"], Истина, Истина);
|
||||
ДанныеШапка["Дата"] = Формат(ДанныеШапка["Дата"], "ДФ=dd.MM.yyyy");
|
||||
|
||||
ВидКИ_ТелефонОрганизации = Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации;
|
||||
ВидКИ_СайтОрганизации = Справочники.ВидыКонтактнойИнформации.СайтОрганизации;
|
||||
|
||||
ТелефонОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ДанныеШапка.Организация, ВидКИ_ТелефонОрганизации, ТекущаяДата());
|
||||
СайтОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ДанныеШапка.Организация, ВидКИ_СайтОрганизации, ТекущаяДата());
|
||||
|
||||
ДанныеШапка.Вставить("ТелефонОрганизации", ТелефонОрганизации);
|
||||
ДанныеШапка.Вставить("СайтОрганизации", СайтОрганизации);
|
||||
|
||||
ДанныеТовары = ОбщегоНазначения.ТаблицаЗначенийВМассив(Товары);
|
||||
|
||||
// Вывод заголовка
|
||||
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Заголовок"]);
|
||||
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеШапка);
|
||||
|
||||
// Вывод шапки документа
|
||||
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Шапка"]);
|
||||
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеШапка);
|
||||
|
||||
// Вывод таблицы
|
||||
Если ДанныеТовары.Количество() > 0 Тогда
|
||||
// Шапка
|
||||
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["ШапкаТаблицы"]);
|
||||
УправлениеПечатью.ПрисоединитьОбласть(ПечатнаяФорма, Область, Ложь);
|
||||
|
||||
// Выводим сразу всю коллекцию
|
||||
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["СтрокаТаблицы"]);
|
||||
УправлениеПечатью.ПрисоединитьИЗаполнитьКоллекцию(ПечатнаяФорма, Область, ДанныеТовары);
|
||||
КонецЕсли;
|
||||
|
||||
// Вывод подвала
|
||||
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Подвал"]);
|
||||
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеШапка);
|
||||
|
||||
// Помещаем сформированную печатную форму в соответствие ОфисныеДокументы
|
||||
АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
|
||||
|
||||
//удаление временных файлов
|
||||
УправлениеПечатью.ОчиститьСсылки(ПечатнаяФорма);
|
||||
УправлениеПечатью.ОчиститьСсылки(Макет);
|
||||
|
||||
Возврат АдресХранилищаПечатнойФормы;
|
||||
|
||||
КонецФункции // СформироватьОфисныйДокумент()
|
||||
|
||||
```
|
||||
|
||||
## Дополнительно
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">Описание свойств команды печати</summary>
|
||||
|
||||
```bsl
|
||||
// Создает пустую таблицу с описанием команд печати.
|
||||
// Таблица команд печати передается в процедуры ДобавитьКомандыПечати,
|
||||
// размещенные в модулях менеджеров объектов конфигурации, которые перечислены в процедуре
|
||||
// УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ТаблицаЗначений:
|
||||
//
|
||||
// * Идентификатор - Строка - идентификатор команды печати, по которому менеджер печати определяет печатную
|
||||
// форму, которую необходимо сформировать.
|
||||
// Например, "СчетЗаказ".
|
||||
//
|
||||
// Для печати нескольких печатных форм можно указывать одновременно несколько их
|
||||
// идентификаторов (строкой, через запятую либо массивом строк), например:
|
||||
// "СчетЗаказ,ГарантийноеПисьмо".
|
||||
//
|
||||
// Если необходимо задать количество копий печати для печатной формы, то ее
|
||||
// идентификатор нужно продублировать столько раз, сколько копий необходимо
|
||||
// сформировать. При этом следует учитывать, что порядок следования печатных
|
||||
// форм в комплекте будет соответствовать порядку идентификаторов печатных форм,
|
||||
// указанных в этом параметре. Например (2 счета на оплату + 1 гарантийное письмо):
|
||||
// "СчетЗаказ,СчетЗаказ,ГарантийноеПисьмо".
|
||||
//
|
||||
// Идентификатор печатной формы может содержать в себе и альтернативный менеджер
|
||||
// печати, если он отличается от указанного в параметре МенеджерПечати,
|
||||
// например: "СчетЗаказ,Обработка.ПечатнаяФорма.ГарантийноеПисьмо".
|
||||
//
|
||||
// В этом примере ГарантийноеПисьмо формируется в менеджере печати
|
||||
// Обработка.ПечатнаяФорма, а СчетЗаказ - в менеджере печати, указанном в
|
||||
// параметре МенеджерПечати.
|
||||
//
|
||||
// Для печатных форм, менеджером печати которых является общий модуль
|
||||
// "УправлениеПечатью", в качестве идентификатора необходимо указать полный путь к макету.
|
||||
// Например, "Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетНаОплату".
|
||||
//
|
||||
// - Массив - список идентификаторов команд печати.
|
||||
//
|
||||
// * Представление - Строка - представление команды в меню Печать.
|
||||
// Например, "Счет на оплату".
|
||||
//
|
||||
// * МенеджерПечати - Строка - (необязательный) имя объекта, в модуле менеджера которого располагается
|
||||
// процедура Печать, формирующая табличные документы для этой команды.
|
||||
// Если печатная форма формируется автоматически по данным печати и макету, то
|
||||
// в параметре необходимо указать общий модуль "УправлениеПечатью".
|
||||
// Значение по умолчанию - имя модуля менеджера объекта.
|
||||
// Например, "Документ.СчетНаОплатуПокупателю".
|
||||
// * ТипыОбъектовПечати - Массив - (необязательный) список типов объектов, для которых предназначена команда
|
||||
// печати. Параметр предназначен для команд печати в журналах документов, где
|
||||
// требуется проверка передаваемого типа объекта перед вызовом менеджера печати.
|
||||
// Если список не заполнен, то при автоматическом создании списка команд печати
|
||||
// в журнале документов он заполняется типом объекта, из которого была
|
||||
// импортирована команда печати.
|
||||
//
|
||||
// * Обработчик - Строка - (необязательный) клиентский обработчик команды, в который необходимо передать
|
||||
// управление вместо стандартного обработчика команды Печать. Используется,
|
||||
// например, когда печатная форма формируется на клиенте.
|
||||
// Формат "<ИмяОбщегоМодуля>.<ИмяПроцедуры>" используется, когда процедура размещена
|
||||
// в общем модуле.
|
||||
// Формат "<ИмяПроцедуры>" используется, когда процедура размещена
|
||||
// в модуле основной формы отчета или обработки, указанной в МенеджерПечати.
|
||||
// Например,
|
||||
// КомандаПечати.Обработчик = "ЗащитаПерсональныхДанныхКлиент.ОткрытьФормуСогласиеНаОбработкуПерсональныхДанных";
|
||||
// Пример обработчика в модуле формы:
|
||||
// // Формирует печатную форму <представление печатной формы>.
|
||||
// //
|
||||
// // Параметры:
|
||||
// // ПараметрыПечати - Структура - сведения о печатной форме.
|
||||
// // * ОбъектыПечати - Массив - массив ссылок выбранных объектов.
|
||||
// // * Форма - ФормаКлиентскогоПриложения - форма, из которой вызвана
|
||||
// // команда печати.
|
||||
// // * ДополнительныеПараметры - Структура - дополнительные параметры печати.
|
||||
// // Прочие ключи структуры соответствуют колонкам таблицы КомандыПечати,
|
||||
// // подробнее см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
|
||||
// //
|
||||
// &НаКлиенте
|
||||
// Функция <ИмяФункции>(ПараметрыПечати) Экспорт
|
||||
// // Обработчик печати.
|
||||
// КонецФункции
|
||||
// Следует иметь в виду, что обработчик вызывается при помощи метода Вычислить,
|
||||
// поэтому в качестве обработчика может выступать только функция.
|
||||
// При этом возвращаемое значение функции никак в дальнейшем не используется подсистемой.
|
||||
//
|
||||
// * Порядок - Число - (необязательный) Значение от 1 до 100, указывающее порядок размещения команды
|
||||
// по отношению к другим командам. Сортировка команд меню Печать осуществляется
|
||||
// сначала по полю Порядок, затем по представлению.
|
||||
// Значение по умолчанию - 50.
|
||||
//
|
||||
// * Картинка - Картинка - (необязательный) Картинка, которая отображается возле команды в меню Печать.
|
||||
// Например, БиблиотекаКартинок.ФорматPDF.
|
||||
//
|
||||
// * СписокФорм - Строка - (необязательный) Имена форм через запятую, в которых должна отображаться
|
||||
// команда. Если параметр не указан, то команда печати будет отображаться во
|
||||
// всех формах объекта, где встроена подсистема Печать.
|
||||
// Например, "ФормаДокумента".
|
||||
//
|
||||
// * МестоРазмещения - Строка - (необязательный) Имя группы формы, в которую необходимо разместить
|
||||
// команду печати. Параметр необходимо использовать только в случае, когда на
|
||||
// форме размещается более одного подменю "Печать". В остальных случаях место
|
||||
// размещения необходимо задавать в модуле формы при вызове
|
||||
// метода ПодключаемыеКоманды.ПриСозданииНаСервере.
|
||||
//
|
||||
// * ЗаголовокФормы - Строка - (необязательный) Произвольная строка, переопределяющая стандартных заголовок
|
||||
// формы "Печать документов". Например, "Настраиваемый комплект".
|
||||
//
|
||||
// * ФункциональныеОпции - Строка - (необязательный) Имена функциональных опций через запятую, от которых зависит
|
||||
// доступность команды печати.
|
||||
//
|
||||
// * УсловияВидимости - Массив - (необязательный) Коллекция условий видимости команды в зависимости от
|
||||
// контекста. Условия видимости команды задаются при помощи процедуры
|
||||
// ДобавитьУсловиеВидимостиКоманды.
|
||||
// Если параметр не задан, команда видна вне зависимости от контекста.
|
||||
//
|
||||
// * ПроверкаПроведенияПередПечатью - Булево - (необязательный) Признак необходимости проверки проведенности
|
||||
// документов перед печатью. Если выбран хотя бы один непроведенный документ, то
|
||||
// перед выполнением команды печати возникает диалог проведения.
|
||||
// Для непроведенных документов команда печати не выполняется.
|
||||
// Если параметр не указан, то проверка проведенности не выполняется.
|
||||
//
|
||||
// * СразуНаПринтер - Булево - (необязательный) Признак необходимости печати документов без предварительного
|
||||
// просмотра, сразу на принтер. Если параметр не указан, то при выборе команды
|
||||
// печати открывается форма предварительного просмотра "Печать документов".
|
||||
//
|
||||
// * ФорматСохранения - ТипФайлаТабличногоДокумента - (необязательный) Применяется для быстрого сохранения печатной
|
||||
// формы (без дополнительных действий) в различные форматы, отличные от mxl.
|
||||
// Если параметр не указан, то формируется обычный mxl.
|
||||
// Например, ТипФайлаТабличногоДокумента.PDF.
|
||||
//
|
||||
// При выборе команды печати сразу открывается сформированный в формате pdf
|
||||
// документ.
|
||||
//
|
||||
// * ПереопределитьПользовательскиеНастройкиКоличества - Булево - (необязательный) Признак необходимости отключения в
|
||||
// форме ПечатьДокументов механизма сохранения/восстановления выбранного
|
||||
// пользователем количества экземпляров на печать. Если параметр не указан, то
|
||||
// механизм сохранения/восстановления настроек будет работать при открытии формы.
|
||||
// ПечатьДокументов.
|
||||
//
|
||||
// * ДополнитьКомплектВнешнимиПечатнымиФормами - Булево - (необязательный) Признак необходимости дополнить комплект
|
||||
// документов всеми подключенными к объекту внешними печатными формами
|
||||
// (подсистема ДополнительныеОтчетыИОбработки). Если параметр не указан, внешние
|
||||
// печатные формы не добавляются в комплект.
|
||||
//
|
||||
// * ФиксированныйКомплект - Булево - (необязательный) Признак необходимости блокировки от изменения пользователем
|
||||
// состава комплекта документов. Если параметр не указан, то пользователь сможет
|
||||
// исключать отдельные печатные формы из комплекта в форме ПечатьДокументов, а
|
||||
// также изменять их количество.
|
||||
//
|
||||
// * ДополнительныеПараметры - Структура - (необязательный) произвольные параметры для передачи в менеджер печати.
|
||||
//
|
||||
// * НеВыполнятьЗаписьВФорме - Булево - (необязательный) Признак необходимости отключения механизма записи объекта
|
||||
// перед выполнением команды печати. Используется в исключительных случаях. Если
|
||||
// параметр не указан, производится запись объекта в случае, если в форме
|
||||
// объекта установлен признак модифицированности.
|
||||
//
|
||||
// * ТребуетсяРасширениеРаботыСФайлами - Булево - (необязательный) Признак необходимости подключения расширения для работы
|
||||
// с 1С:Предприятием перед выполнением команды. Если параметр не указан, расширение
|
||||
// подключаться не будет.
|
||||
//
|
||||
// * ОсновнаяПечатнаяФорма - Булево - (необязательный) Признак определяющий возможность запоминания
|
||||
// наименований сформированных печатных форм.
|
||||
//
|
||||
// * НаименованиеПечатнойФормы - Строка - (необязательный) Наименование, которое будет сохранено при установленном
|
||||
// признаке "ОсновнаяПечатнаяФорма". Если не заполнено, будет запоминаться значение
|
||||
// из поля "Представление".
|
||||
//
|
||||
Функция СоздатьКоллекциюКомандПечати() Экспорт
|
||||
```
|
||||
|
||||
</details>
|