Все об 1С8 - просто и доступно

Добавить в Избранное  Сделать Стартовой  Написать письмо

Главная Статьи Вопрос-ответ Экспресс-справочник Гостевая книга
Статьи по 1С

Внешняя печатная форма с использованием внешней обработки


      Иногда бывает нужно внести в печатные формы товарно-транспортной накладной (Форма 1-Т), товарной накладной (Приложение 4 к Правилам перевозок грузов автомобильным транспортом), сопроводительной ведомости (Приложение 8 к Правилам перевозок грузов автомобильным транспортом) какие-то дополнительные данные или, наоборот, что удалить оттуда. В этой статье будет рассказано, как сделать необходимые доработки без внесения изменений в конфигурацию. Такой результат может быть получен созданием внешней печатной формы и внешней обработки, которую эта печатная форма и будет использовать.
      Печатные формы товарно-транспортной накладной (Форма 1-Т), товарной накладной (Приложение 4 к Правилам перевозок грузов автомобильным транспортом), сопроводительной ведомости (Приложение 8 к Правилам перевозок грузов автомобильным транспортом) формируются из обработки ПечатьТТН1208 (до 13 марта 2012 ПечатьТТН). Эти обработки находятся в конфигурации (Например, УПП или Бухгалтерия предприятия). Печатаются, как правило, из документа "Реализация товаров и услуг".
      Соответственно, нам нужно создать внешнюю печатную форму, которая будет вызываться из документа, которая, в свою очередь, будет вызывать обработку формирования печатных форм. Для решения этой задачи в режиме конфигуратора сохраним обработку ПечатьТТН1208 как внешнюю в файл. Если необходимо, то проделаем то же самое с обработкой ПечатьТТН. В этих сохраненных внешних обработках вносятся необходимые изменения, которые в настоящей статье описаны не будут, потому что каждому может потребоваться свое.

Сохранение внешней обработки в файл

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

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

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

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

                 ОбработкаКод = ЗапросРезультат.Код;
                 Обработка = Справочники.ВнешниеОбработки.НайтиПоКоду(ОбработкаКод);
                 ИмяФайла = ПолучитьИмяВременногоФайла();
                 ДвоичныеДанные = Обработка.ХранилищеВнешнейОбработки.Получить();
                 ДвоичныеДанные.Записать(ИмяФайла);
                 ОбработкаПечати = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);

           Иначе

                 ОбработкаПечати = Обработки.ПечатьТТН1208.ПолучитьФорму("Форма");

           КонецЕсли;

        КонецЕсли;

        ОбработкаПечати.Документ = СсылкаНаОбъект.ССылка;
        ОбработкаПечати.Открыть();
        Возврат Неопределено;

КонецФункции //Печать()
 
Сохраняем внешнюю печатную форму и регистрируем ее в справочнике дополнительных печатных форм.

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

         В документе "Реализация товаров и услуг" при нажатии на кнопку печати в списке печатных форм должна появиться и наша печатная форма "Наша Печать бланков ТТН".
        Таким образом мы получили возможность изменить печатные формы товарно-транспортной накладной (Форма 1-Т), товарной накладной (Приложение 4 к Правилам перевозок грузов автомобильным транспортом), сопроводительной ведомости (Приложение 8 к Правилам перевозок грузов автомобильным транспортом) по наши требования без внесения изменений в конфигурацию. Правда, в этом случае необходимость отслеживания изменений типовых форм ложится на администратора, сопровождающего базу данных.
         Также этот пример служит образцом для того, как можно вызывать внешние обработки из справочника дополнительных внешних обработок и программно работать с ними.

Образец внешней печатной формы (без самой обработки) можно скачать тут.