0

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

#1С Предприятие 8#Обычное приложение#1С Бухгалтерия 2.0


Рассмотрим создание внешней печатной формы из встроенной на примере Торг 12 из типовой конфигурации 1С 8.2 Бухгалтерия 2.0.

Создадим новую внешнюю обработку, назовем ее Торг12Внешняя. Добавим реквизит СсылкаНаОбъект и присвоим ему тип ДокументСсылка.РеализацияТовароУслуг (Торг 12 печатается из реализации).

Создание внешней обработки для Торг12

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

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

конецфункции;

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

Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт

   // Получить экземпляр документа на печать
   Если ИмяМакета = "Накладная" Тогда
      ТабДокумент = ПечатьДокумента();

   ИначеЕсли ИмяМакета = "ТОРГ12" тогда
      ТабДокумент = ПечатьТОРГ12();

   ИначеЕсли ИмяМакета = "ТОРГ12_БезУслуг" тогда
      ТабДокумент = ПечатьТОРГ12(Истина);

   ИначеЕсли ИмяМакета = "Акт" Тогда
      ТабДокумент = ПечатьАктаОбОказанииУслуг();

   ИначеЕсли ИмяМакета = "1Т" или ИмяМакета = "_1Т" Тогда
      ТабДокумент = ПечатьТТН();

   ИначеЕсли ИмяМакета = "М15" Тогда
      ТабДокумент = ПечатьМ15();

   ИначеЕсли ИмяМакета = "СправкаРасчетВал" Тогда

      // Справка-расчет формирования рублевой суммы документа в валюте
      БухгалтерскийУчетРасчетовСКонтрагентами.НапечататьСправкуРасчетРублеваяСуммаДокументаВВалюте(Ссылка);
      Возврат;

   КонецЕсли;

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

КонецПроцедуры // Печать

Так как нас интересует только Торг12, копируем строчку

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

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

Функция Печать() Экспорт
    ТабДокумент = ПечатьТОРГ12();

    возврат ТабДокумент;
конецфункции

Теперь найдем в модуле документа процедуру ПечатьТОРГ12() и скопируем ее в модуль печатной формы. Нажимаем Сохранить и видим, что не определена переменная мВалютаРегламентированногоУчета. Опишем ее в начале модуля:

Перем мВалютаРегламентированногоУчета Экспорт;

и инициализируем в конце:

мВалютаРегламентированногоУчета   = Константы.ВалютаРегламентированногоУчета.Получить();

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

  • Отсутствуют процедуры или функции(В этом случае их нужно добавить из модуля документа).
  • Отсутствуют реквизиты определенные в документе, их нужно получать через ссылку на объект.

Например, было:

Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СчетУчетаРасчетовСКонтрагентом);

надо сделать:

Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом);

Также нужно заменить обращения к текущему документу через конструкции Ссылка и ЭтотОбъект на СсылкаНаОбъект и СсылкаНаОбъект.ПолучитьОбъект() соответственно(стоит заметить, что конструкцию ЭтотОбъект.Ссылка следует заменять на СсылкаНаОбъект).

Например, было:

Запрос.УстановитьПараметр("Ссылка", Ссылка);

надо сделать:

Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

было:

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

надо сделать:

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

было:

ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета));

надо сделать:

ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект.ПолучитьОбъект(), мВалютаРегламентированногоУчета));

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

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

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

0 20416 6
ДобавленоVital700 дней назад
Последняя активность306 дней назад


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

Аноним написал:683 дня назад0

Здравствуйте, УТ 10.3, вываливается ошибка:

Не удалось сформировать внешнюю печатную форму! Метод объекта не обнаружен (ОтветственныеЛица)

куда копать ?

Ответить

Виталий написал:683 дня назад0

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

Ответить

Александр Валентинович написал:487 дней назад0

Для тех кто будет ваять формы для КА 1.1 функция печати будет выглядеть следующим образом:

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

    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(СсылкаНаОбъект);

    ОбъектыПечати = Новый СписокЗначений;
    ОбъектыПечати.Добавить(СсылкаНаОбъект, "Документ_1");

    ТабДокумент = ПечатьТОРГ12(МассивОбъектов, ОбъектыПечати, Истина); //либо Лож - если с услугами
    возврат ТабДокумент;

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

Остальное все как описано в статье… …и еще, никаких замен конструкции Ссылка и ЭтотОбъект, просто копируете функцию ПечатьТОРГ12 (касается только конфигурации Комплексная Автоматизация)

Ответить

Кирилл написал:482 дня назад0

Спасибо за ценный комментарий :)

Ответить

Аноним написал:307 дней назад0

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

Ответить

Кирилл написал:306 дней назад0

Доброго дня,

Помочь найти в вашей конфигурации я не смогу помочь :)

Могу только посоветовать запустить отладчик и попробовать пройти в шагам.

Ответить

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

Добавить статью!

Наш канал на Youtube

Изучаете 1С? Скачайте 200 видео по 1С бесплатно:

Похожее

Создание обработки заполнения табличной части 1С 8

1. Постановка задачи В этой статье рассмотрим процесс написания простейшей внеш...

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

1. Задача Рассмотрим написание простейшей печатной формы в 1с 8.1 - 8.2 на прим...

Создание внешнего отчета в 1с 8

Рассмотрим создание внешнего отчета в 1с 8 без использования системы компоновки ...

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

1. Задача Рассмотрим написание простейшей печатной формы в 1с 8.2 - 8.3 для упр...

Подключение внешней обработки, печатной формы, отчета в 1С

Для использования внешних (подключаемых) обработок, отчетов, печатных форм, нет ...

Новое

Скачать печатные формы документа "Реализация товаров и услуг" 1С 8.2

Печатные формы из релиза 1C:Бухгалтерия 2.0.64.5 Скачать бесплатно печатную фор...

Как снять и поставить конфигурацию 1С на поддержку

В этой статье я расскажу как снять конфигурацию 1С 8 частично или полностью с по...

Как сделать резервную копию 1С

Чтобы обезопасить себя от частичной или полной потери данных, перед тем как прои...

Настройка двухстороннего обмена данными между конфигурациями "Управление торговлей 10.3" и "Бухгалтерия предприятия 2.0" в 1С 8

В этой статье мы рассмотрим как настроить двухсторонний обмен данными между конф...

Тестирование и исправление информационной базы 1С 8

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