1. Главная страница » Компьютеры

1С коллекция печатных форм

Автор: | 16.12.2019

Задача — вывести печатную форму в комплект печатных документов. Все происходило на базе Управление торговлей, редакция 11 (11.3.4.67) . Печатная форма для документа "Реализация товаров и услуг" созданная на основании типовой, добавлен всего один реквизит. Печатная форма называется "Расходная накладная с доставкой"

По такому алгоритму она формировалась

Если выводить отдельно данную печатную форму, то все работает корректно, даже при печати комплекта. Но вот в паре с другой печатной формой, данная ВПФ не выводилась на печать.

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

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

После добавления данного кода в функцию получения табличного документа, данная ВПФ успешно распечаталась при печати комплекта документов.

Рассмотрим написание простейшей внешней печатной формы в 1С 8.3 для управляемого приложения на примере конфигураций Бухгалтерия 3.0 и Управление торговлей 11 (данная печатная форма будет работать в обоих этих конфигурациях).

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

Создание внешней обработки

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

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

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

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

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

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

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

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

Рассмотрим содержание функции СведенияОВнешнейОбработке(). Для начала создадим ее в модуле:

Создадим структуру ПараметрыРегистрации в которой и будут храниться все данные необходимые для регистрации.

Создадим массив МассивНазначений в котором будут храниться наименования документов и справочников из которых будет производиться печать.

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

А теперь заполним переменную.

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

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

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

Приступим к заполнению структуры ПараметрыРегистрации.

Вид внешней обработки, может быть: ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов, ПечатнаяФорма и т.д.

Назначение заполним уже полученным массивом:

Наименование из уже заполненной переменной:

Номер версии можно поставить любой по желанию:

Безопасный режим не даст печатной форме вносить изменения в базу данных. Но она у нас вполне безобидна =), поэтому ставим значение Ложь.

В поле Информация вносим описание печатной формы для пользователя. Запишем туда Наименование.

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

Вызовем сознанную функцию.

Добавим команду печати, вынеся этот процесс в отдельную функцию:

Параметры функции ДобавитьКоманду:

  • ТаблицаКоманд — созданная в предыдущей функции Таблица значений с типовым набором полей;
  • Представление — передадим в параметр Наименование печатной формы;
  • Идентификатор — передадим в параметр полное наименование внешней обработки. Вынесем процесс получения в отдельную функцию:
  • Использование * — здесь возможны два значения:
  • ВызовСерверногоМетода — если обязательная функция Печать() будет находиться в модуле объекта печатной формы и выполняться на стороне сервера(в нашем примере будем использовать именно это значение);
  • ВызовКлиентскогоМетода — если обязательная функция Печать() будет находиться в модуле основной формы внешней обработки и выполняться на стороне клиента;
  • ПоказыватьОповещение — параметр отвечает за вывод оповещения о печати;
  • Модификатор — для печатных форм используется значение ПечатьMXL.
  • Вызов функции выглядит так:

    Осталось передать заполненную таблицу команд в ПараметрыРегистрации:

    И возвратить их из функции:

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

    Приступим к написанию кода, который будет формировать нашу печатную форму. Так как при создании команды печати мы использовали параметр ВызовСерверногоМетода, то в модуле объекта создаем обязательную серверную процедуру Печать(если использовать ВызовКлиентскогоМетода, то процедура Печать должна быть клиентской и располагаться в модуле основной формы обработки).

    • МассивОбъектов — массив содержащий ссылки на печатаемые документы или справочники(аналог СсылкаНаОбъект в обычном приложении);
    • КоллекцияПечатныхФорм — таблица значений содержащая сформированные табличные документы;
    • ОбъектыПечати — строковой параметр, в котором передаются имена макетов печатных форм перечисленные через запятую;
    • ПараметрыВывода – параметры вывода табличных документов на печать.

    В процедуре Печать нам следует сформировать табличный документ с данными нашей печатной формы и добавить его в Коллекцию печатных форм. Для заполнения табличного документа создадим в модуле объекта серверную функцию ПечатьФормы, передадим в параметр массив со ссылками на печатаемые документы(МассивОбъектов).

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

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

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

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

    В данном цикле начнем формирование печатных форм каждого из документов.

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

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

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

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

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

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

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

    Код функции ПечатьФормы целиком:

    Теперь осталось добавить сформированный табличный документ Коллекцию печатных форм. Для добавления табличного документа в коллекцию можно воспользоваться типовой процедурой ВывестиТабличныйДокументВКоллекцию из модуля УправлениеПечатью(процедура есть и в Бухгалтерии 3.0и в Управление торговлей 11). В параметры этой процедуры необходимо передать:

    • КоллекцияПечатныхФорм — таблица значений содержащая сформированные табличные документы;;
    • ИмяМакета — наименование команды печати;
    • СинонимМакета — наименование печатной формы;
    • ТабличныйДокумент — заполненный табличный документ.

    Для параметров ИмяМакета и СинонимМакета используем уже созданные нами процедуры, которые использовались для заполнения сведений о внешней обработки. Таким образом процедура Печать будет выглядеть следующим образом:

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

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

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

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

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

    Рассмотрим на примере программы 1С:Бухгалтерия предприятия версии 3.0, что такое печатный макет в 1С, как его можно просмотреть, изменить и возможна ли настройка макета.

    Как изменить макет печатной формы в 1С 8.3

    Создадим для примера документ «Реализация (акт, накладная)» (раздел меню «Продажи») и посмотрим печатную форму накладной.

    Предположим, мы хотим изменить печатную форму и добавить логотип нашей организации. Кроме утвержденных обязательных реквизитов организация вправе вносить изменения, сохраняя утвержденную форму документа. Логотип не входит в число обязательных реквизитов, но организация имеет право его добавить. Выбрав нужную печатную форму (кнопка «Печать» документа), нажимаем кнопку «Еще». В не мы видим два пункта «Изменить макет» и «Перейти к макетам форм».


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


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


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


    Для того чтобы вставить картинку, зайдем в кнопку «Еще» и выберем команду «Картинка» в пункте меню «Рисунок».


    В открывшемся окне, нажав кнопку «Выбрать из файла» указываем наш логотип.


    Рисунок перенесся в форму. Используя маркеры на краях рисунка, мы можем изменить его размер. Если какое-то действие не получается, с помощью комбинации клавиш мы можем отменить или вернуть выполненной действие: Ctrl+Z – отменить действие, Ctrl+Y – вернуть действие.


    Наш логотип вставился в рамке. Нажмем правой кнопкой на картинке и выберем пункт меню «Свойства».


    В этом окне можно задать параметры нашего объекта. В нашем случае убираем рамку: «Стиль линии» — «Без линии». Если нам нужно будет убрать фон, установить прозрачный, то соответственно в этом разделе: «Цвет фона» — «Узор», мы должны установить – «Нет заливки».


    Следует обратить внимание, что рисунок должен размещаться строго между двумя красными горизонтальными линиями! Иначе его просто не будет видно в нашей форме. Для этого мы немного раздвинули строки формы. Нажимаем кнопку «Записать и закрыть» и проверяем наш результат.



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

    Если мы зайдем в раздел «Перейти к макетам печатных форм» в кнопке «Еще», то увидим, что у измененного нами макета печатной формы сбоку нарисован зеленый карандаш – форма изменена. Если нужно вернуться к исходному макету, то можно нажать кнопку со стрелочкой «Использовать стандартный макет».


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


    Если нужно полностью удалить сделанные нами изменения, нажмем кнопку с красным крестиком. Карандашик исчез – изменения макета удалены.


    В программе есть и другой способ отображения логотипа в документах, используя настройки организации, но он применим только к печатной форме документа «Счет на оплату». Установив форму логотипа в параметрах организации («Главное» — «Настройки» — «Организации») в разделе «Логотип и печать», он будет отображаться в документе «Счет на оплату».



    Рисунок автоматически вставляется в макет печатной формы.

    Параметры и шаблон макета

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


    Так, пользователь сам может добавить в макет документа какие-то значения, используя параметры. Чтобы сориентироваться в параметрах, можно просто просмотреть макеты других документов. Например, чтобы в ячейку выводился артикул, товар или цена, достаточно указать название этого параметра в ячейке.

    Нажав на ячейке с параметром правой кнопкой мышки и выбрав команду «Свойства», мы можем просмотреть настройки данной ячейки.


    Мы видим, что значение у выбранной ячейки — параметр. Кроме текста и параметра в макете можно задать шаблон для ячейки, при этом в свойствах должно быть указано, что это шаблон. Используя шаблон, мы можем комбинировать текстовые значения и параметры. Для этого в значении ячейки товара укажем, что это шаблон, а в поле «Текст» необходимо задать значение шаблона, используя квадратные скобки при указании параметра.


    Сохранив макет, мы видим рядом пиктограмму карандашик – макет изменен.


    Открываем нашу печатную форму накладной и видим, что в ячейке приписан наш текст.


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

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

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

    Читайте также:  Email адрес что это

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *