Меню
Бесплатно
Главная  /  Прошивка  /  1с 8 макеты печатных форм. Публикации

1с 8 макеты печатных форм. Публикации

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

К примеру, как я сформировал макеты для .

Я зашёл в форму обработки и перешёл на закладку "Макеты":

Открылся редактор табличного документа:

Во многих моментах работа в редакторе похожа на работу в программе Excel, но есть свои особенности, на которых я бы хотел остановиться.

Что я понимаю под областью? Это и несколько строк и несколько ячеек, в общем любая часть табличного документа, которая может быть выделена нами, используя левую кнопку мыши.

Вот выделенная область из двух строк:

А вот выделенная область из 2 столбцов:

А сейчас мы выделим область на пересечении первых двух строк и первых двух столбцов:

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

Это базовый навык, которым мы должны овладеть, чтобы суметь делать табличные макеты.

Как посмотреть уже назначенные имена

А давайте посмотрим какие имена областям уже назначены в макете?

Для этого из меню конфигуратора выбираем:

Вот она наша только что назначенная область "Шапка":

А если сейчас выделим её в диалоге и нажмём "Выбрать", то в редакторе будет выбрана соотв. область ячеек:

Как задать параметр области

Часто при формировании печатной области требуется не просто вывести область из макета. Нужно ещё и заполнить определенные ячейки определенными параметрами.

Эти параметры мы задаём у области и заданные значения автоматически попадают в нужные ячейки.

Для этого в свойствах нужной нам ячейки (куда будет выводиться значение параметра)...

Указываем в поле "Заполнение" значение "Параметр", а в поле "Параметр" пишем имя, по которому мы будем обращаться к этому параметру из кода:

Если же указать в заполнении не "Параметр", а "Шаблон", то можно будет в самой ячейке указать какой-то текст (шаблон) с использованием имени параметра в квадратных скобках:

В этом случае имя параметра (и его позиция в шаблоне) указывается в квадратных скобках.

Как задать параметр расшифровки?

Имя параметра расшифровки задаётся всё в тех же свойствах ячейки:

Уже потом из кода мы присвоим этому параметру (по имени "РасшифровкаНоменклатуры") нужное значение (ссылку на элемент номенклатуры).

И когда пользователь сделает двойной щелчок на этой ячейки - ему откроется значение, присвоенное параметру расшифровки (в данном случае откроется форма элемента номенклатуры).

Дальнейшее напутствие

Мы рассмотрели необходимые основы. А теперь внимательно исследуйте .

Скачайте и эту базу. в ней обработку "ОбработкаДляИспытаний".

В её макетах есть табличные варианты. Исследуйте их как можно тщательнее, опираясь на приёмы, которые мы рассмотрели чуть выше.

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

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

Вот это мы и посмотрит прямо сейчас.

Подготовка макета для печати в 1С

Для начала придется начать с самого простого и заполнить макет для печати в 1С статическим текстом и линиями таблиц. Ведь кто-то должен сделать эту скучную работу?

Размещаем статический текст для печати в 1С

Для начала неплохо было бы разместить название нашей печатной формы. Выделим несколько ячеек в строке, и выберем пункт меню Таблица/Объединить. В результате несколько ячеек будут объединены в одну.

Теперь в этой ячейке напишем название документа. Так как это заголовок, то видимо мы хотим сделать его жирным крупным шрифтом (см. картинку) и разместить посередине.

Размещаем оформление макета для печати в 1С

У нас есть именованная область Строка. В ней при печати в 1С будет выводиться каждая строка таблицы документа Товары. Вероятно мы хотели бы, чтобы таблица выглядела при печати в 1С тоже таблицей? Тогда нужно нарисовать для нее границы.

Для этого выберем ячейки строки и на панели выберем кнопку Границы. Мы выбрали вариант Граница везде – она рисует границы ячеек сразу со всех сторон. Если необходимо ограничиться только одной стороной, то нужно выбрать соответствующую кнопку.

Для того, чтобы линии, которыми рисуются границы были не такие, как стандартные, выделите ячейки и нажмите правой кнопкой мыши. В появившемся меню выберите пункт Свойства.

В привычном окне свойств можно выбрать вид и цвет линий для отрисовки границ.

Размещаем картинки и прочую мишуру для печати в 1С

Многие спрашивают – а как разместить на печатной форме 1С что-то кроме текста? Например – картинку.

А очень просто. Мало того, скажу сразу, что штрих-код (если Вам нужно его распечатать) тоже является картинкой.

Поставим курсор на любую ячейку. Выберем меню Таблица/Рисунки. Это целое подменю, которое позволяет вставить на макет для печати в 1С не только картинку или рисованный объект – но и объекты извне 1С, зарегистрированные на компьютере с помощью COM класса (например, элемент управления выпадающий список).

Для тех, кто интересуется созданием на макете сложных конструкций для печати в 1С, загляните также в выпадающее меню Таблица/Настройка печати. Здесь можно задать повторение области на каждой странице, колонтитулы и область печати.

Как разместить содержимое электронного документа при печати в 1С

Для размещения на макете при печати в 1С содержимого электронного документа – используется метод подстановки. Состоит он из двух частей.

Часть первая . Необходимо на макете разместить параметры, в которые Вы будете подставлять значения при печати в 1С.

Поставим курсор в ячейку. Впишем название параметра (одним словом, без пробелов и прочего мусора). Далее войдем в свойства этой ячейки (как — уже говорилось выше) и выберем Заполнение = Параметр.

Часть вторая . Подстановка значений производится не в когда Вы программируете в конфигураторе, а в момент печати документа в 1С. Соответственно с помощью программирования нужно указать 1С что нужно подставить в этот параметр.

Производится это следующим образом:

Макет = ПолучитьМакет("НазваниеМакета");
облКакаято = Макет.ПолучитьОбласть("НазваниеОбласти");
облКакаято.Параметры.НазваниеПараметра = "То что я хочу подставить из базы";

Как Вы видите мы просто получаем по имени сначала сам макет, потом одну из его областей, а потом просто обращаемся к параметру по его названию.

Естественно, значение может быть как строкой или цифрой, так и значением указанным в документе.

Как производится печать макета в 1С

После того, как макет готов, пора задуматься о программировании процесса печати в 1С.

Печать в 1С обычно программируется несколькими процедурами, которые находятся в модуле объекта документа. .

Процедура Печать() обычно имеет пометку Экспорт и управляет печатью документа в 1С с помощью параметра ИмяМакета, в котором передается что хотелось бы распечатать.

Для каждого варианта макета делается процедура ПечатьИмяМакета(), в которой прописана печать конкретного макета. Вот ее мы сейчас и посмотрим.

Программирование печати в 1С состоит из трех пунктов.

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

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

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
Дата,
Номер,
Организация
ИЗ
Документ.ИмяДокумента
ГДЕ
Ссылка = &ДокументДляПечати";
Запрос.УстановитьПараметр("ДокументДляПечати", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();

Пункт 2. Заполнение макета для печати в 1С

Печать в 1С производится в табличный документ. Это специальный объект 1С, который позволяет выводить таблицы, наподобии Excel, на экран и на печать. Печатается, естественно макет, вернее его области поочередно.

Соответственно нам нужно сначала получить табличный документ, потом макет. Поочередно выводим области на печать, заполняя параметры макета.

ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ИмяМакета"); //или ПолучитьОбщийМакет("")

облШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(облШапка);

облСтрока = Макет.ПолучитьОбласть("Строка");
Пока ВыборкаСтрокДокумента.Следующий() Цикл
облСтрока.Параметры.Товар = ВыборкаСтрокДокумента.Товар;
ТабДок.Вывести(облСтрока);
КонецЦикла;

облШапка = Макет.ПолучитьОбласть("Подвал");
ТабДок.Вывести(облПодвал);

Пункт 2. Вывод документа на печать в 1С

Последним пунктом является вывод полученного документа на экран или принтер. В типовых конфигурациях для этого используется типовая процедура (в каждой может быть своя), например, УниверсальныеМеханизмы.НапечататьДокумент().

В других случаях можно просто использовать типовые функции объекта ТабличныйДокумент: ТабДок.Показать() или ТабДок.Напечатать() .

Рассмотрим написание простейшей печатной формы в 1с 8.1 — 8.2 на примере конфигурации Бухгалтерия предприятия 2.0 . Допустим требуется написать внешнюю печатную форму к документу : вывести основные данные документа, а так же из табличной части Товары : номенклатуру, цену, количество и сумму.

Скачать получившийся пример можно по .

В конфигураторе 1C Предприятия 8 создаем внешнюю обработку (Файл->Новый->Внешняя обработка ), задаем имя, создаем обязательный для внешней печатной формы реквизит СсылкаНаОбъект с типом ДокументСсылка.РеализацияТоваровУслуг .

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

Добавляем новый макет , тип макета оставляем Табличный документ . На макете создаем три области: Шапка, Данные и Подвал . Сделать это можно выделив нужное количество строк и нажав меню Таблица->Имена->Назначить имя (Ctrl+Shift+N) .

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

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

Программирование

Зайдем в модуль объекта печатной формы Действия->Открыть модуль объекта .

Создадим там обязательную для печатных форм экспортную функцию Печать() .

Функция Печать() Экспорт КонецФункции

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

ТабДок = новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет" ); ОбластьШапки = Макет.ПолучитьОбласть("Шапка" ); ОбластьДанные = Макет.ПолучитьОбласть("Данные" ); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал" );

Заполним параметры шапки и выведем ее в табличный документ .

ОбластьШапки.Параметры.ТекстЗаголовка = +СсылкаНаОбъект.Номер; ОбластьШапки.Параметры.Организация = СсылкаНаОбъект.Организация; ТабДок.Вывести(ОбластьШапки);

Для того чтобы получить строки табличной части Товары используем запрос.

Запрос = новый запрос; Запрос.УстановитьПараметр("Ссылка" ,СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.Сумма, | РеализацияТоваровУслугТовары.Цена, | РеализацияТоваровУслугТовары.Количество |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка" ;

В параметр запроса передаем реквизит СсылкаНаОбъект , что бы указать в условии ГДЕ , что нам нужны данные только того документа из которого выводим печатную форму. Чтобы получить выборку запроса, сначала выполняем его, а затем выбираем строки.

Выборка = Запрос.Выполнить().Выбрать();

Далее в цикле заполняем параметры области Данные для каждой строки выборки документа и выводим их в табличный документ . Также в цикле считаем итоговые значения количества и суммы . Заполнять каждый параметр в отдельности мы не будем, а используем процедуру ЗаполнитьЗначенияСвойств((<Приемник>, <Источник>) из глобального контекста , она копирует значения свойств <Источника> в свойства <Приемника> . Сопоставление производится по именам свойств. Подробнее об этом можно прочитать в синтаксис-помощнике 1С Предприятия 8 .

ИтогоСумма = 0 ; ИтогоКоличество = 0 ; Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,Выборка); ИтогоСумма = ИтогоСумма + Выборка.Сумма; ИтогоКоличество = ИтогоКоличество + Выборка.Количество; ТабДок.Вывести(ОбластьДанные); КонецЦикла ;

Заполним и выведем область Подвал .

ОбластьПодвал.Параметры.ИтогоКоличество = ИтогоКоличество; ОбластьПодвал.Параметры.ИтогоСумма = ИтогоСумма; ТабДок.Вывести(ОбластьПодвал);

Возвращаем заполненный табличный документ из функции Печать() .

возврат ТабДок;

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

5. Подключение печатной формы к документу

В типовых конфигурациях 1С 8 для регистрации внешних печатных форм существует справочник ВнешниеОбработки . Для подключения следует в режиме предприятия зайти в меню Сервис->Дополнительные отчеты и обработки->Дополнительные внешние печатные формы .

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

Теперь в документе Реализация товаров и услуг появится новая печатная форма.

Авторегистрация печатной формы

Для того чтобы при подключении печатной формы не нужно было выбирать тип документа вручную можно настроить авторегистрацию . Для этого добавляем новый макет и называем его Параметры_Авторегистрации (только так) и в первой его ячейке пишем Документы.<Наименование документа> (либо Справочники.<Наименование справочника> ).

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

Внешние печатные формы для обычного приложения (для конфигурация Бухгалтерия предприятия 2.0, Зарплата и управление персоналом 2.5, Управление торговлей 10.3 и т.д.) создаются довольно просто по сравнению с внешними печатными формами для управляемого приложения.

Для чего создавать внешние печатные формы

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

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

Как создать внешнюю печатную форму

Рассмотрим процесс создания внешней печатной формы 1С по шагам:

  1. Создаем внешнюю обработку. Для этого в конфигураторе выбираем пункт меню Файл — Новый… И в открывшемся диалоговом окне — Внешняя обработка .
  2. Создаем реквизит внешней обработки с именем СсылкаНаОбъект . Тип реквизита — ссылка на справочник или документ, для которого создается внешняя печатная форма. Одна и та же форма может применяться для нескольких типов объектов, в этом случае тип данных реквизита СсылкаНаОбъект должен быть составным.
  3. В модуле объекта создаем экспортную функцию с именем Печать , которая должна возвращать готовый табличный документ печатной формы.

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

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

Рассмотрим эту процедуру на примере создания внешней печатной формы универсального передаточного документа для документа Реализация товаров и услуг 1С:Бухгалтерии. От стандартной печатной формы она будет отличаться наличием печати организации.

  1. Создаем внешнюю обработку с реквизитом СсылкаНаОбъект, тип данных — ДокументСсылка.РеализацияТоваровУслуг.
  2. Находим макет стандартной печатной формы УПД (он находится в общих макетах) и копируем (перетаскиваем) его в окно внешней обработки. Макеты других печатных форм могут находиться в самих документах или справочниках.
  3. Вносим необходимые изменения в скопированный макет печатной формы.
  4. Находим функцию, отвечающую за формирование печатной формы. Эта функция должна возвращать сформированный табличный документ. Копируем ее содержание в экспортную функцию Печать() в модуле объекта внешней обработки.
    В нашем случае это функция ПечатьУниверсальногоПередаточногоДокумента() Экспорт из модуля объекта документа Реализация товаров и услуг.
    Если изменения макета были существенными (изменялись области и/или параметры), то необходимо внести соответствующие корректировки в функцию печати.
  5. Пытаемся сохранить внешнюю обработку. При этом, скорее всего, появятся сообщения об ошибках, связанных с отсутствием некоторых процедур и функций, вызываемых функцией печати. Эти функции и процедуры необходимо найти в исходном документе и так же скопировать в модуль объекта внешней обработки. Либо скорректировать ссылку, если исходная функция или процедура экспортная.
  6. (не обязательно). Для тестирования внешней печатной формы удобно сделать ее форму, на которую вынести реквизит СсылкаНаОбъект . Кнопка Выполнить должна вызывать процедуру Печать() из модуля объекта. Для этого событию нажатия кнопки задается процедура:

Осуществляется в соответствии со стандартным макетом печатной формы, встроенным в приложение разработчиками (его называют "поставляемым" макетом).

При необходимости, вы можете изменить стандартный макет и, в дальнейшем, осуществлять печать документа на основе вашего персонального ("пользовательского") макета. Для редактирования макета печатной формы предусмотрен механизм выгрузки на локальный компьютер. Правка макета проводится в локальной версии приложения системы "1С:Предприятие" (в частности, можно использовать бесплатное приложение 1С:Предприятие - Работа с файлами).


Для изменения макета печатной формы выполните следующее.




Редактирование макета печатной формы завершено, при выводе на печать документа будет использоваться макет, в который были внесены изменения.

Если вы захотите вернуться к прежнему макету печатной формы, нажмите кнопку Использовать стандартный макет . При этом, отредактированный макет будет по-прежнему присутствовать на сервере, и его можно будет снова включить нажатием кнопки Изменить .

Желаем приятной работы!

Как вставить в макет печатной формы логотип компании?

Приведем конкретный пример редактирования макета печатной формы Счета на оплату , а именно, рассмотрим, как вставить в него изображение, например, логотип компании (это изображение необходимо предварительно заготовить и сохранить в виде графического файла, например, в формате png или jpg).


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

Желаем приятной работы!