1С:Предприятие 8.2 /
Разработчикам /
Разработка пользовательских интерфейсов
Формирование печатных форм
Некоторые справочники, документы и др. объекты конфигурации могут предоставлять команды по выводу их на печать. В данной статье приведены требования к реализации таких команд.
1.1. Для формирования печатной формыпользователю должно быть достаточно прав:
- на чтение основных объектов метаданных, по данным которых формируется печатная форма (например, для формирования печатной формы документа ЗаказПокупателя нужны права на чтение этого документа);
- и на выполнение команды, которая инициирует формирование печатной формы (если у пользователя есть права на документ ЗаказПокупателя, то в общем случае, это не приводит к тому, что ему автоматически становятся доступны все печатные формы; права на печатные формы могут быть ограничены отдельно с помощью прав на команды).
1.2. Если в печатную форму дополнительно выводятся данные каких-либо других объектов, связанных с основными, то права на них не должны оказывать влияния на возможность формирования печатной формы, а также на состав выводимой на печать информации. Поэтому код формирования печатной формы следует выполнять в таком случае в привилегированном режиме.
Например, для формирования печатной формы «Счет-фактура (в валюте)» используются данные документа, на основе которого формируется счет-фактура , и данные регистра сведений «Курсы валют». Пользователь может сформировать печатную форму, если у него есть права на чтение документа и на выполнение команды печати. Но при этом не имеет значения, есть ли у него права на регистр сведений «Курсы валют».
См. также: Использование привилегированного режима
2. Если функция печати предполагает множественную печать нескольких объектов, то по соображениям производительности (снижение нагрузки на СУБД) необходимо выполнять выборку данных в одном запросе, результаты которого затем обходятся в цикле.
См. также: Многократное выполнение однотипных запросов
Исключение из этого правила могут составлять случаи, когда выборка данных для нескольких объектов в одном запросе
- заметно усложняет разработку самого запроса
- наоборот, может привести к деградации производительности. Например, когда запрос содержит обращение к виртуальным таблицам, формируемым на определенную дату (как в случае с виртуальными таблицами остатков регистра накопления , срезом последних периодического регистра сведений и т.п.).
3.1. Печатная и экранная формы объектов (справочников, документов и др.), в которых выводятся табличные части, должны соответствовать друг другу по составу и порядку строк табличных частей. В частности, при выводе на печать не следует каким-либо образом дополнительно группировать строки табличных частей.
3.2. Однако, если строки в экранной форме уже сгруппированы по каким-либо признакам, то при выводе на печать следует применять такую же группировку.
Например, рассмотрим печатную и экранную формы документа, в которых выводится табличная часть цен номенклатуры по типам цен: для каждой номенклатуры в колонках выводятся розничная, оптовая и другие типы цен, но при этом «физически» одна строка табличной части документа содержит информацию о цене только одного типа.
4.1. В табличных частях печатных форм следует всегда выводить колонку со значением реквизита «Номер строки». В этом случае пользователи всегда смогут легко сопоставить строки табличных частей в печатных и экранных формах.
4.2. В тех случаях, когда на экранной форме не отображается реквизит «Номер строки», строки в печатной форме нумеруются в порядке их вывода.
4.3. Заголовок колонки с номером строки зависит от прикладной специфики печатной формы и может различаться в разных печатных формах. Например, в ТОРГ-12 колонка имеет строго регламентированное название «Номер по порядку», а в нерегламентированных печатных формах – может называться «№».
5. Строки табличных частей следует выводить в печатных формах отсортированными по полю «Номер строки», поскольку порядок вывода может быть разным на различных СУБД.
Исключение могут составлять печатные формы, прикладная специфика которых требует сортировки по другому реквизиту. Например, в задании кладовщику на отбор товаров из складских ячеек, строки задания отсортированы по порядку обхода ячеек склада (при этом значение реквизита «Номер строки» также выводится в соответствующей колонке).
См. также: Упорядочивание результатов запроса
6.1. При выводе данных в печатные формы, необходимо обеспечить, чтобы они были выведены полностью и не обрезались.
Методическая рекомендация (полезный совет) 6.2. В случае если печатные формы формируются с помощью табличных макетов, то при выводе строк табличных частей рекомендуется устанавливать свойство АвтоВысотаСтроки (объекта ОбластьЯчеекТабличногоДокумента)в значение Истина. Это позволяет избежать обрезания длинных текстовых строк, когда ширины колонок таблиц недостаточно. |
7. При подготовке табличного документа на сервере не следует устанавливать размер полей заведомо меньше физических ограничений полей у принтера. В частности, недопустимо устанавливать нулевые поля.
В общем случае, размер полей табличного документа рекомендуется не менять (оставлять по умолчанию), кроме тех случаев, когда они явно регламентированы или стандартизированы. Например, согласно ГОСТ Р 6.30-2003 "Унифицированные системы документации. Унифицированная система организационно-распорядительной документации. Требования к оформлению документов" в документе должны быть заданы поля: 20 мм левое, 10 мм правое, 20 мм верхнее, 20 мм нижнее.
Требование обусловлено тем, что получение физических ограничений полей клиентского принтера не представляется возможным на сервере приложений, в связи с чем, при печати документа с нулевыми полями текст, выступающий за минимально допустимые поля принтера, не будет напечатан.
Пример некорректного кода:
// Зададим параметры печатной формы по умолчанию ТабДокумент.ПолеСверху = 0; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 0;
8. Если в конфигурации предусмотрена возможность того, что макет печатной формы может быть отредактирован пользователем в режиме предприятия (например, средствами подсистемы «Печать» Библиотеки стандартных подсистем), то необходимо рассчитывать на то, что любые параметры в нем могут быть изменены или удалены. Поэтому для повышения устойчивости кода формирования печатной формы следует избегать явного присвоения значений параметров в областях печати. Вместо этого следует использовать глобальный метод ЗаполнитьЗначенияСвойств или метод Заполнить коллекции ПараметрыМакетаТекстовогоДокумента.
Неправильно:
ОбластьПечати.Параметры.Организация = ДанныеПечати.Организация; // будет ошибка при отсутсвии в макете параметра Организация ОбластьПечати.Параметры.Контрагент = ДанныеПечати.Контрагент;
Правильно:
ЗаполнитьЗначенияСвойств(ОбластьПечати.Параметры, ДанныеПечати);
или
ОбластьПечати.Параметры.Заполнить(ДанныеПечати);
Примечание: в переменной ДанныеПечати в примерах может быть Структура, Соответствие, ВыборкаИзРезультатаЗапроса или любая другая коллекция со значениями параметров.
См. также
Другие материалы по теме:
конфигурирование
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Разработка пользовательских интерфейсов
Другие материалы по теме:
Нас находят: 1, 1с печатные формы на английском, Функция для формирование печатной формы, формирования печатных форм, формирования печатных документов, формирование табличного макета печатной формы 1с, формирование пустых строк в печатной форме 1с, формирование печатной формы табличный документ обучающие материалы, удалить строку при выводе печатной форме в 1с, ТабДокумент Размер Страницы(A5); 1с
Мы на Facebook