Печатная форма своими руками.

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

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

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

Сервис/Внешние обработки и печатные формы

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

Поехали, как сказал Гагарин.
Можно даже купить диплом недорого. А вы как думали, нельзя?
Откроем конфигуратор и создадим внешнюю обработку с названием ВПФ.epf . Нажмем Файл/Новый…

Выберем «Внешняя обработка».«Внешняя обработка»

Результатом будет новая внешняя обработка.Результат «Внешняя обработка»

Назовем её ВнешняяПечатнаяФорма. Добавим новый реквизит СсылкаНаОбъект с типом ДокументСсылка.РеализацияТоваровИУслуг. Если хотим сделать печатную форму для другого вида документа – нужно использовать соответствующий ссылочный тип.Ссылочный тип

Добавим новый макет.Создадим макет с названием «Макет». Создадим область с названием «Заголовок» и параметром «ТекстЗаголовка».Макет

Откроем модуль внешней обработки.Модуль

И вставим следующий текст модуля:

//Пример внешней печатной формы для 1С:Предприятие 8

// Функция формирует табличный документ с печатной формой

// Возвращаемое значение:

// Табличный документ - печатная форма накладной

// Рекумендуется заменить на аналогичную функцию из модуля документа, для которого создается внешняя печатная форма

Функция ПечатьДокумента()

//Получим данные из документа

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

|       РеализацияТоваровУслуг.Номер,

|       РеализацияТоваровУслуг.Дата

|ИЗ

|       Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

|ГДЕ

|       РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";

Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); //используем в качестве параметра реквизит обработки СсылкаНаОбъект

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

Шапка.Следующий();

//Созданим и заполним табличный документ

ТабДокумент = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("Макет");

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");

ОбластьМакета.Параметры.ТекстЗаголовка = "Расходная накладная №" + Шапка.Номер + " от " + Шапка.Дата;

ТабДокумент.Вывести(ОбластьМакета);

Возврат ТабДокумент;

КонецФункции // ПечатьДокумента()

// Функция является точкой входа в данную обработку.

// Алгоритм заполнения печатной формы удобно размещать в отдельной(ых) функции(ях)

// Возвращаемое значение:

// Табличный документ - печатная форма накладной

//

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

ТабДокумент = ПечатьДокумента();

Возврат ТабДокумент;

КонецФункции // Печать

В результате получитсярезультат модуля

Запустим 1С:Предприятие 8. Перейдем в Сервис/Внешние обработки и печатные формы/Внешние печатные формы.Добавим новую запись в список форм. Выберем созданный нами файл обработки. В табличной части укажем принадлежность внешней печатной формы документу «Реализация товаров и услуг».Проверим как работает новая печатная форма.Проверяем...Она работает

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

Можно еще почитать это:

  • AlexKoso

    Автору не стоит ни в коем случае путать понятия “снятие с поддержки” и “включение возможности редактирования”

  • Pavel

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

  • http://www.zznob.ru ZZnOB

    Все очень просто Павел, нужно во внешнюю обработку добавить макет с другим именем. И в коде модуля добавить строку “Макет=ПолучитьМакет(“Как вы там его обозвали”);”

  • http://Website(optional) Антон

    Спасибо.

  • http://www.zznob.ru ZZnOB

    всегда пожалуйста :) Заходите еще!

  • http://Website(optional) Mike

    “Создадим область с названием «Заголовок» и параметром «ТекстЗаголовка».” (С)

    А как создать область?

  • http://www.zznob.ru ZZnOB

    А из скриншота не понятно?

  • http://Website(optional) Алла

    Скажите пожалуйста, а где можно найти типовой код заполнения типовой же печатной формы счёта на оплату покупателю? Мне надо изменить его чуть-чуть, макет я нашла, скопировала, а вот сам модуль найти не могу…

  • http://Website(optional) Alla

    Скажите пожалуйста, а где можно найти типовой код заполнения типовой же печатной формы счёта на оплату покупателю? Мне надо изменить его чуть-чуть, макет я нашла, скопировала, а вот сам модуль найти не могу…

  • Ahocob

    Помог, спасибо.

  • http://blogpiar.ru ZZnOB

    Пожалуйста. Всегда рад, когда мои записи хоть кому то приносят пользу

  • http://twitter.com/romicus24 Роман Николаевич

    Большое спасибо! толково и по делу! продолжайте в том же духе!

  • Nichka

    а как создать новую форму не на примере макета?

  • http://blogpiar.ru ZZnOB

    Очень просто. Делаете макет сами и указываете его в коде :)

  • llll

    Как  создать область в макете