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

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

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

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