Формирование печатной формы 1с

Формирование печатной формы 1с

Область применения: управляемое приложение.

Некоторые справочники, документы и др. объекты конфигурации могут предоставлять команды по выводу их на печать. В данной статье приведены требования к реализации таких команд.

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.3.

Создание внешних печатных форм для управляемого приложения рассмотрено в отдельной статье.

Самый простой способ создания печатной формы — с помощью встроенного конструктора печатных форм. Рассмотрим пошаговую инструкцию по созданию и настройке печатной формы на примере создания печатной формы «Счет покупателю».

Создание и настройка печатной формы 1С 8.3

Первый шаг — необходимо зайти в палитру свойств нужного нам документа и выбрать Действия — Конструкторы — Конструктор печати:

Первый вопрос системы — выбор варианта работы конструктора. Настройки аналогичны, если у Вас конфигурация работает в управляемом режиме — выберите его, если нет — выберите обычные формы. Мы рассмотрим создание на обычной форме.

Следующий шаг — выбор названия процедуры для печати. Назовём её «Печать счета».

Далее необходимо выбрать реквизиты, которые нужно указать в шапке печатной формы в том порядке, который нам необходим:

После выбора реквизитов шапки печатной формы 1С 8.2 следует сделать выбор данных для табличной части:

Когда и этот шаг сделан, нужно выбрать реквизиты подвала аналогично реквизитам в шапке.

На последней странице можно оставить всё по умолчанию и нажать ОК:

Что получаем в итоге?

Правильно оформленный макет печатной формы:

Процедура, полностью формирующая печатную форму документа:

Получите 267 видеоуроков по 1С бесплатно:

Которые можно настроить в 1С 8.2, как нужно нам.

Вывод вызова созданной печатной формы 1С

Для вызова созданной печатной формы нужно просто разместить кнопку на форму документа. Это сделать очень просто. Для начала создадим кнопку на форме, назовем её «Печать счета»:

Нажимаем на кнопку «лупы» у действия — мы попадем в модуль формы, где вписываем вызов процедуры печати вновь созданного счета:

Где «ПечатьСчета» — имя нашей процедуры.

Созданная и настроенная печатная форма выглядит так:

Другие статьи по 1С:

В дополнение — наш видеоурок по созданию внешних печатных форм и подключению их на примере конфигурации 1С Бухгалтерии:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Бюрократия является одним из повседневных явлений, и без распечатанного и подписанного документа мало где обходятся производственные процессы. Создание печатных форм для документов – одна из частых задач разработчика 1С. Данную возможность можно реализовать как внутри базы, так и внешним файлом, если конфигурация типовая и поддерживает БСП. Эти процессы в 1С не затруднят вас, если понять основные принципы построения печатных форм, изложенные ниже.

Читайте также:  Блэк десерт как начать играть

Создание макета внешней печатной формы

Лучшее решение для добавления возможности распечатывать данные того или иного документа в типовую конфигурацию от 1С, а если она не изменялась – вообще единственная. Суть задачи в том, чтобы создать в конфигураторе файл обработки и описать в нем внешний вид и используемые данные. После чего останется только подключить данный файл к конфигурации 1С с помощью механизмов библиотеки стандартных подсистем.

Создание печатной формы документа начинается с открытия режима конфигуратора базы. Желательно открывать ту базу, в которую требуется внести изменения, чтобы платформа позволила нам открывать конструктор запроса. Создайте новую внешнюю обработку с помощью основного меню «Файл» — «Новый…» и заполните имя и синоним. В среде 1С принято указывать «говорящие» имена, чтобы другие программисты могли комфортно работать с чужим кодом.

Затем необходимо добавить макет – структуру распечатываемой формы с перечнем переменных, куда и будут вставляться данные из конкретного документа 1С. В открывшемся конструкторе не стоит ничего менять и после подтверждения готовности откроется окно, похожее на Excel. В нем необходимо будет нарисовать форму и разделить ее на области с отдельными именами. Разделять стоит в зависимости от момента вывода на экран и того, сколько раз эта область должна появиться на экране.

В качестве примера разберем печатную форму для документа продажи товаров. В нем перечислены номенклатура, организация, подразделение, менеджер и контрагент, кому продаются товары. Для информативной печатной формы необходимо выделить следующие области:

  1. Верхняя часть («Шапка»). Сюда войдет идентификация документа в системе 1С – номер и дата, основные данные об операции – организация, контрагент, менеджер, заголовок таблицы номенклатуры. Выводиться будет 1 раз;
  2. Информация по номенклатуре («ДанныеСтрок»). Данные о тех товарах, которые продаются – наименование, количество, цена и сумма. Выводиться по 1 разу на каждую строчку табличной части «Товары»;
  3. Итоговые данные («ИтогиСтрок»). В печатной форме фигурирует 1 раз и отражает итоговые суммы количества и суммы;
  4. Подписи («Подвал»). Область для согласования бумажной версии документа. Необходимо вывести на печать единожды.

В окне, похожем на Excel, выделяем 10 строк и выбираем в основном меню «Таблица» — «Имена» — «Назначить имя…». В открывшемся окне вводим название области и подтверждаем. Далее в этой области размещаем необходимые для вывода поля, используя возможности объединения и выбора шрифта и размера надписей.

Теперь надо настроить переменные, куда будут вставлены данные. Для этого на ячейке, где уже есть надпись, нажимаем правой кнопкой мыши и открываем свойства. Найдите пункт «Заполнение» и выберите там значение «Параметр», после чего убедитесь, что надпись в ячейке теперь заключена в угловые скобки. Если вы выберите «Шаблон», то это даст вам возможность указать переменные внутри строки в ячейке с помощью квадратных скобок.

Осталось только добавить другие области и разместить там параметры. Наш макет готов. Настройка печатной формы в части макета завершена, поэтому можно переходить к написанию кода, чтобы наши параметры заполнились данными. Писать все процедуры придется в модуле объекта созданной внешней обработки.

Вывод данных в печатную форму

В первую очередь необходимо добавить функцию «СведенияОВнешнейОбработке()». Именно она подсказывает платформе, что в файле печатная форма и ее нужно крепить к конкретному документу. Текст функции практически не меняется, кроме названия печатных форм и документа, к которому ее крепят. Если забыть поменять в этой функции идентификатор, то 1С не сможет сформировать печатную форму.

Читайте также:  Болит нога в гипсе после перелома

Для инициализации печати добавляем процедуру, внутри которой находиться вызов процедуры из общего модуля, добавляющей эту печатную форму в общий список. В качестве команды выступает процедура «СформироватьПечатнуюФорму» с параметром, в котором находится ссылка на документ, который и нужно распечатать. Листинг процедуры ниже:

Теперь необходимо получить данные, которые будут выводиться в заранее установленные нами переменные. С помощью выполнения запроса мы получаем 2 выборки – для верхней части нашей печатной формы и для вывода строк. Создаем новый табличный документ для показа пользователю и устанавливаем стандартные параметры. Поочередно получаем каждую область, заполняем в ней переменные и выводим в табличный документ, который возвращаем пользователю:

После завершения сохраняем внешнюю обработку и запускаем 1С в режиме предприятия. Чтобы подключить созданную печатную форму, зайдите в раздел «Администрирование» — «Печатные формы, отчеты и обработки» — «Дополнительные отчеты и обработки». Нажмите кнопку «Создать» и в диалоге выберите сохраненный файл формата *.EPF. Если все было сделано правильно, останется лишь сохранить, и 1С самостоятельно разместит новую печатную форму.

Зайдите в любой документ, нажмите «Печать» — «WAПечать заказа» и на экране появится созданная нами печатная форма. Данный вариант создания обработки может подойти и для нетиповой конфигурации, если настроить в ней БСП. Внешние печатные формы для 1С можно подключать и к новым нетиповым документам, добавленным разработчиками компании, если правильно настроить их.

Но в нетиповых конфигурациях, которые не находятся на поддержке, намного удобнее и проще использовать встроенный в 1С конструктор печатных форм. Большой плюс этого метода в том, что мы лишь указываем поля, которые нам нужны, а платформа самостоятельно строит макет. Алгоритм вывода данных 1С также создает автоматически, после чего показывает разработчику. Оптимальный вариант в подобных ситуациях – запустить конструктор печати, а затем сделать изменение печатной формы, если необходимо.

Конструктор печати 1С

Для настройки новой печатной формы откройте конфигуратор базы и найдите нужный документ в дереве. Открыв его, нажмите кнопку «Действия» — «Конструкторы» — «Конструктор печати…». Платформа предложит выбрать для изменения существующую команду или создать новую, указав имя, после чего нажмите «Далее». При выборе наименования не используйте пробелы, так как будет сформирована одноименная процедура, а в их наименовании не допускаются пробелы.

Конструктор печати в версии 8.3 предполагает, что печатная форма состоит из нескольких частей:

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

По нажатию «ОК» 1С сформирует команду, макет и процедуру в модуле менеджера и откроет их для разработчика. Затем можно отредактировать их, если необходим более сложный алгоритм – добавить расчет и вывод итогов или данных, не содержащихся в документе. Алгоритм изменения аналогичен рассмотренному выше:

  1. Создать область в макете, если использовать уже созданные области недопустимо;
  2. Добавить надписи и переменные. Перечень добавляемых объектов зависит от потребностей;
  3. В процедуре получить область по имени;
  4. Рассчитать или прочитать из документа данные;
  5. Заполнить переменные информацией.

Данный вариант формирования позволяет быстро создать печатную форму, если пользователи не предъявляют серьезных требований к внешнему виду. Платформа самостоятельно пропишет все необходимые связи и добавит команду печати на форму документа. А ручное редактирование печатной формы позволит добавить недостающие данные или разместить существующие по-другому.

Рассмотренные варианты создания печатных форм позволяют добавлять их в любую конфигурацию – стоящую на поддержке, снятую с нее или написанную самостоятельно. Перед тем, как выбирать метод создания, проанализируйте еще и требования к внешнему виду результата, количеству и доступности данных. Это поможет выбрать оптимальный путь и сэкономить время.

Ссылка на основную публикацию
Файл cms что это
Файлы формата CMS открываются специальными программами. Существует 2 типа форматов CMS, каждый из которых открывается разными программами. Чтобы открыть нужный...
Унитаз лира киров отзывы
Сырье также используется импортное, тщательно отобранное и экологически чистое — глина, гипс, каолин, полевой шпат, красители. Гарантия на производимые компанией...
Унитаз ресса киров отзывы
Мы предлагаем унитазы росссийского производителя Роза (Киров). В нашем каталоге собрано 30 моделей по цене от 3 090р. Перейдите по...
Файл менеджер для windows 10 на русском
Менеджер файлов осуществляет просмотр, копирование, управление медиафайлами и папками на персональном компьютере. Он предоставляет функцию быстрого перемещения объектов для ускорения...
Adblock detector