Создание внешних печатных форм 1с 8.3. Инициализация основных переменных

Доброго времени суток!

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

Подключение дополнительных внешних печатных форм

Запускаем 1С:Предприятие. Открываем справочник «Дополнительные внешние печатные формы» через меню «Сервис» - «Дополнительные отчеты и обработки».

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

Запускаем 1С:Предприятие, открываем справочник "Контрагенты", выбираем контрагента, для которого будет печататься наш договор и по кнопке "Файлы" переходим в справочник "Хранилище дополнительной информации", загружаем в него шаблон для договора и,обязательно, называем его "Договор", как показано на рисунке ниже, иначе программа не сможет найти макет для печатной формы.

Теперь открываем любой документ "Реализация товаров и услуг" и нажимаем кнопку «Печать» - «Договор». Откроется документ Microsoft Word с договором.

Внешнюю печатную форму "Договор" и макет к ней можно скачать по ссылкам ниже.

Макет трудового договора в формате Microsoft Word

Существует, по меньшей мере, три способа создания шаблона:

1. В документе Word создаются опорные фразы, например, "[НомерДоговора]", затем, в модуле обработки производится поиск и замена значений.

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

3. В документе Word добавляются служебные поля, например, «DocVariable» или «Author». Используя DocVariable можно обращаться к переменной по имени, например, «ДокументВорд.Variables.Add(ИмяПеременной, ЗначениеПеременной);», но ее не видно в шаблоне. Поле «Author» отображается в шаблоне, но обращаться к нему придется в цикле по индексу: «ДокументВорд.Fields.item(Индекс).Result.Text = Значение;».

На мой взгляд, первый способ является самым оптимальным. Шаблон документа легко редактируется, опорные фразы видны в тексте. Поэтому шаблон создаём этим способом.

Открываем программу Microsoft Office. Для примера добавляем пару строк, как показано на рисунке ниже и сохраняем шаблон.

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

Запускаем 1С:Предприятие в режиме «Конфигуратор» и через меню «Файл» - «Новый» создаём внешнюю обработку. Добавляем реквизит "Ссылка на объект" и макет "Параметры_Авторегистрации" с типом "Табличный документ". Тип реквизита "Ссылка на объект" зависит от того, для каких объектов будет использоваться печатная форма, в нашем случае печатная форма будет использовать для документа "Реализация товаров и услуг", поэтому указываем тип "ДокументСсылка.РеализацияТоваровУслуг".

Разработка процедуры печати

В данной статье описано как подключить внешнюю печатную форму в базу 1С на примере конфигурации «Управление торговлей 11.2»

Конфигурация «Управление торговлей 11.2» — это конфигурация на «УПРАВЛЯЕМЫХ» формах!

Наша инструкция «показывает» как подключить внешнюю печатную форму в информационной базе 1С с конфигурацией на «УПРАВЛЯЕМЫХ» формах а именно:

  • «Бухгалтерия 3.0»
  • «Управление торговлей 11.2»
  • «Зарплата и управление персоналом 3.1»
  • «Комплексная автоматизация 2.0»
  • «Управление небольшой фирмой 1.6»
  • «Розница 2.2»
  • и другие подобные конфигурации.

Для того чтобы подключить внешнюю печатную форму в 1С нам понадобится пройти 11 шагов.

1 — Меню «НСИ и администрирование» (В других конфигурациях, как например в Бухгалтерии предприятия 3.0, может называться просто — «Администрирование»). 2 — Выбираем «Печатные формы, отчеты и обработки» (см. рис. ниже ↓)

3 — Раскрываем подменю «Отчеты и обработки» (В других конфигурациях, как например в Бухгалтерии предприятия 3.0, такого подменю может не оказаться, поэтому сразу переходим к следующему действию). 4 — Ставим «галочку» Использование дополнительных отчетов и обработок. 5 — Переходим в раздел: Дополнительные отчеты и обработки. (см. рис. ниже ↓) ()

6 — Нажимаем кнопку «Создать». (см. рис. ниже ↓)

В новых версиях 1С (начиная с августа 2016 года) в программу встроен механизм предупреждения об опасности использования неизвестных внешних обработок, которые могут содержать «вирусы», в более ранних версиях программы предупреждение возникать не будет! Если оно возникло, то для подключения внешней печатной формы будет необходимо — 7 — нажать кнопку «Продолжить». (см. рис. ниже ↓)

8 — Выбираем каталог в котором находится обработка. 9 — Выделяем ее (нужную нам обработку). 10 — Нажимаем кнопку «Открыть». Либо вместо действий 9 и 10 можно просто дважды кликнуть по нужной нам внешней печатной форме в окне выбора. (см. рис. ниже ↓)

Если нам необходимо добавить размещение для добавляемой обработки (Например, это Универсальная форма договора с нашего сайта и нам надо, чтобы команда печати этой формы выводилась в каком-то объекте, в котором изначально не выводится) — 11 — нажимаем на строку размещения («Разместить в:», может быть «Размещение:») и выбираем необходимые справочники и документы. 12 — Завершаем действия по подключению внешней печатной формы нажатием кнопки «Записать и закрыть». (см. рис. ниже ↓)

Вот и все! Поздравляем! Внешняя печатная форма подключена! А все ли мы сделали правильно? Проверим…

Перед Записью и закрытием мы обратили внимание что данная внешняя печатная форма размещена в документе Реализация товаров и услуг, а значит возможности печати открываем любой документ вида: «Реализация товаров и услуг». нажимаем кнопку «Печать» и видим — появилось окно выбора печатных форм, среди них присутствует — 13 — подключенная нами внешняя печатная форма (см. рис. ниже ↓)

Теперь точно — всё. Мы надеемся что данная статья была вам полезна.

Никому не секрет, что, хоть в наше время всё большее количество компаний переходят на электронный документооборот, старая поговорка «Без бумажки ты…» не теряет своей актуальности. Так сложилось, что проверяющие органы почему-то интересуют в первую очередь бумажные документы. Поэтому, если вы активно пользуетесь для финансового контроля программой 1С:Бухгалтерия или Предприятие, важно знать, как распечатать электронный документ, созданный при помощи программы.

Печатные формы в 1С позволяют трансформировать электронный документ в печатный вариант.

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

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

Для начала стоит разобраться, что, вообще, представляет собой печатная форма в 1С 8. Это шаблон электронной таблицы 1С (наподобие Excel), в котором указанные некоторые переменные строки, заполняемые данными из программы при оформлении документа.

Печатные формы бывают двух видов:

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

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

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

Где хранятся печатные формы

Просмотреть встроенные печатные формы можно как в режиме конфигуратора, так и в обычном режиме предприятия. В первом случае нужно при запуске программы нажать соответствующую кнопку в стартовом окне. Вы увидите меню программы, найти ветку «РеализацияТоваровУслуг», в которой содержится пункт «Макеты». В нём зачастую содержатся только два пункта - «Накладная» и «Акт». Где же тогда все остальные, ведь список гораздо более обширен? Они просто прячутся в другом месте. Нужно отрыть ветку «Общие» - «Общие макеты», в ней и хранятся практически все макеты.

Во втором случае нужно перейти в раздел меню «Администрирование» - «Печатные формы, отчёты и обработки» - «Макеты печатных форм». В нём будут отображаться все макеты документов. Примечательно, что в этом же меню их можно и отредактировать.

Что касается внешних форм, то их сначала нужно либо создать через режим конфигуратора, либо скачав готовый файл, а затем подключить в меню «Администрирование» - «Печатные формы, отчёты и обработки» - «Дополнительные отчёты и обработки». Об этом расскажем несколько позже.

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

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

  1. Первым делом запуститесь в режим Конфигуратора, найдите нужный вам документ, например, РеализацияТоваровУслуг, в свойствах документа перейдите в Действия - Конструкторы - Конструктор печати.
  2. При запросе варианта работы выберите «Обычные формы».
  3. Дайте название новому макету, например, «Печать счёта».
  4. Выберите те реквизиты, которые вы бы хотели видеть в шапке документа. Причём их нужно выбирать в том порядке, в котором они будут отображаться. Для выбора вам нужно выделить курсором пункт в левой колонке и нажать стрелочку посреди экрана, чтобы реквизит отобразился в правой колонке.
  5. Отметьте реквизиты для отображения в табличной части. Выбор реквизитов происходит по тому же принципу, что и в предыдущем пункте.
  6. Таким же образом выберите реквизиты нижней части документа.
  7. На заключительном этапе создания выберите, хотите ли вы печатать сразу же без предварительного просмотра, нужна ли защита таблицы, после чего подтвердите создание формы кнопкой ОК.

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

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

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

Теперь подробнее о самой процедуре. Рассмотрим на примере создания макета «Счёт» для документа «Реализация (акты, накладные)».

  1. Откройте программу 1С 8 в режиме Конфигуратора.
  2. Нажмите Файл - Новый - Внешняя обработка, придумайте его название (оно не должно включать пробелы), затем нажмите кнопку Действия - Открыть модуль объекта.
  3. В открывшемся поле для ввода введите следующий код (жёлтым цветом выделены значения, которые можно изменить на свои):

Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить(«Документ.РеализацияТоваровУслуг»); //Указываем документ, к которому делаем внешнюю печ. форму
ПараметрыРегистрации.Вставить(«Вид», «ПечатнаяФорма»); //может быть — ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов…
ПараметрыРегистрации.Вставить(«Назначение», МассивНазначений);
ПараметрыРегистрации.Вставить(«Наименование», «Заказ для реализации товаров»); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить(«БезопасныйРежим», ЛОЖЬ);
ПараметрыРегистрации.Вставить(«Версия», «1.0»);
ПараметрыРегистрации.Вставить(«Информация», «Эта форма для печати была создана в качестве образца»);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, «Внешний заказ», «ВнешнийЗаказ», «ВызовСерверногоМетода», Истина, «ПечатьMXL»);
ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции // СведенияОВнешнейОбработке()
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить(«Представление», Новый ОписаниеТипов(«Строка»));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить(«Идентификатор», Новый ОписаниеТипов(«Строка»)); //имя макета печ.формы
Команды.Колонки.Добавить(«Использование», Новый ОписаниеТипов(«Строка»)); //ВызовСерверногоМетода
Команды.Колонки.Добавить(«ПоказыватьОповещение», Новый ОписаниеТипов(«Булево»));
Команды.Колонки.Добавить(«Модификатор», Новый ОписаниеТипов(«Строка»));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = «»)
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

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

Вставьте в этот же документ процедуру запуска печати из меню программы (выделенные жёлтым цветом команды должны совпадать со строкой):

ДобавитьКоманду(ТаблицаКоманд, «Внешний заказ», «ВнешнийЗаказ»):
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
«Внешнийзаказ»,
«Внешний заказ»,
СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати);
КонецПроцедуры // Печать()

  1. Вставьте макет заполнения печатной формы, кликнув по названию внешней формы в левом нижнем углу и выбрав «Макеты» - «Добавить» - «Табличный документ», дайте ему название. После этого заполните электронную таблицу нужными данными. Например:
    • Заказ на товар № [НомерРеализации] от [ДатаРеализации] - клик правой кнопкой мыши - Свойства - Макет - Заполнение - Шаблон.
    • Создайте столбцы, которые должны отображаться в вашем документе.
    • Выделите введённые ячейки, нажмите Таблица - Имена - Назначить имя - введите название «Шапка».
    • Скопируйте строку с заголовками таблицы, выделите их, кликните правой кнопкой мыши - Свойства - Макет - Заполнение - Параметр.
    • Выделите строку, назовите её, к примеру, «СтрокаТЧ».
    • Создайте подвал: пропишите Итого, ячейку, в которой должна отображаться итоговая сумма, назовите СуммаИтого, в свойствах выберите «Параметры».
    • Укажите ответственного, в свойствах ячейки для вывода фамилии укажите «Параметры».
    • Выделите нижние строки и дайте диапазону наименование «Подвал».
  2. Теперь в окне ввода пропишите функцию формирования печатной формы:

Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_СчетНаОплатуВРТУ»;
МакетОбработки = ПолучитьМакет(«СчетНаОплатуВнешний»);
//заполняем шапку
ОбластьШапка = МакетОбработки.ПолучитьОбласть(«Шапка»);
ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
ОбластьШапка.Параметры.ДатаДокумента = СсылкаНаДокумент.Дата;
ОбластьШапка.Параметры.НазваниеОрганизации = СсылкаНаДокумент.Организация.Наименование;
//выводим шапку в табличный документ
ТабличныйДокумент.Вывести(ОбластьШапка);
//заполняем строки ТЧ
ОбластьСтроки = МакетОбработки.ПолучитьОбласть(«СтрокаТЧ»);
Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтроки.Параметры, ТекущаяСтрока);
ТабличныйДокумент.Вывести(ОбластьСтроки);
КонецЦикла;
//заполняем подвал
ОбластьПодвал = МакетОбработки.ПолучитьОбласть(«Подвал»);
ОбластьПодвал.Параметры.КоличествоИтог = СсылкаНаДокумент.Товары.Итог(«Количество»);
ОбластьПодвал.Параметры.СуммаИтог = СсылкаНаДокумент.Товары.Итог(«Сумма»);
ОбластьПодвал.Параметры.ИмяОтветственного = СсылкаНаДокумент.Менеджер.Наименование;
//выводим подвал в табличный документ
ТабличныйДокумент.Вывести(ОбластьПодвал);
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции

  1. Сохраните изменения в документе.
  2. Теперь нужно активировать созданную форму. Для этого:
    • Перейдите в «Администрирование» - «Печатные формы, отчёты и обработки» - «Дополнительные отчёты и обработки».
    • Нажмите кнопку «Создать», выберите в проводнике файл внешней формы, подтвердите ввод кнопкой «Записать и закрыть».
  3. Для проверки перейдите в Продажи - Реализация (акты, накладные), нажмите кнопку «Печать», выберите свою форму и проверьте правильность заполнения.
  4. Распечатайте документ при потребности.

Заключение

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

Добрый день.

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

Ну что же, начнем. То, что у нас получится в конце, вполне можно будет использовать как шаблон.

Шаг первый - очевидный. Создаем новую обработку. Присвоим её произвольное имя: "ОбразецПечати".

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

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

//процедура, которая подготавливает структуру таблицы команд

Функция ПолучитьТаблицуКоманд()

// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;

// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

Возврат Команды;

КонецФункции

//Создает в таблице команд новую строку

Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда. Представление = Представление;
НоваяКоманда. Идентификатор= Идентификатор;
НоваяКоманда. Использование= Использование;
НоваяКоманда. ПоказыватьОповещение= ПоказыватьОповещение;
НоваяКоманда. Модификатор= Модификатор;
КонецФункции

Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ПриемНаРаботу");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", " Привет мир "); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ИСТИНА);
ПараметрыРегистрации.Вставить("Информация", " ОБРАЗЕЦ ");//так будет выглядеть описание печ.формы для пользователя
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Привет мир", "Макет", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции

Собственно в ней и придется Вам ковырять каждый раз, когда Вы создаете новую внешнюю печатную форму. Из куска кода видно, что привязывать её мы будем к документу "Прием на работу", соответсвенны Вы пишете своё. Называться печатная форма у нас будет "Привет мир", опять таки меняем на своё. Вот тут в шаблоне удобно будет написать явную билеберду, чтобы она бросалась в глаза, чтобы не забыть её исправить потом, на мой взгля "Привет мир" подходит как нельзя кстати. Версия - это для себя, пишите что хотите, она будет отображаться в форме элемента справочника внешних обработок. Слово "ОБРАЗЕЦ" - тоже видно только в форме справочника печатных форм. Далее добавляем команду, вот тут вторым параметров передается имя кнопки, это то, что увидит пользователь в документе в пункте меню "печать".

Этого набора из трех процедур достаточно, чтобы обработка добавлялась в справочник внешних обработок, весь этот запутанный код - сервисный и к алгоритму печати не имеет отношения. По сути, авторы БСП вынудили нас так сложно программировать, если раньше вы сразу приступали к написанию функции "Печать", то теперь при написании обработки с нуля, а не по образцу, Вы потратите время на сервис. Раньше параметры регистрации были не обязательными и указывались в макете обработки, теперь все выглядит намного серьезней. Первое впечатление, когда я увидел это - круто, столько возможностей, все унифицированно... а на практике всегда создаю всего одну команду в одной обаботке, и цепляю её к одному документу. Т.е. по факту мне нужно две строки для регистрации: имя объекта, название кнопки. А тут все так... ну да ладно, не мне судить.

Шаг четвертый - не менее интересный.

Функция ПЕЧАТЬ?

А вот и нет, теперь не функция, а процедура.

А как вернуть макет?

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

Окай

Вот текст этой процедуры:

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

Теперь разяснения. В первой строке процедуры идет немного непоняное условие. Дело в том, что при вызове процедуры печати система передает нам таблицу значений, в которой указано, что нам надо напечатать. Посути функция УправлениеПечатью.НужноПечататьМакет(...) проверяет наличие в таблице значений строки в которой в колонке "ИмяВРЕГ" строки с названием макета. На практике в большинстве случаев вещь бесполезная, т.к. наша обработка будет уметь формировать только одну печатную форму. Т.е. это условие можно опустить и на работоспособность это не повлияет.

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

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

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

Шаг пятый - формируем макет.

УРА, мы наконец приступим к алгоритму формирования макета, получению данных и т.д.

Но в нашем образце мы поступим прозаично и тут даже комментировать не буду)))

Функция СформироватьТабДокумнтОбразца(МассивОбъектов, ОбъектыПечати)
табДок = Новый ТабличныйДокумент;
макет = ПолучитьМакет("Макет");

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

Возврат табДок;
КонецФункции

Вот собственно и все, спасибо за внимание

Популярные статьи

© 2024 sistemalaki.ru
Бизнес-идеи. Бизнес-планы. Франшизы. База знаний. Документы