Добавить внешнюю печатную форму в 1с 7.7.

Добавить внешнюю печатную форму в 1с 7.7.

Вопрос о необходимости распечатывания в 1С большого количества документов поднимался не раз, и в сети можно найти немалое количество обработок, посвященных решению данной проблемы. Данный вопрос не так давно встал и передо мной в следующей постановке: «Мне нужна обработка, позволяющая распечатать много накладных, печатная форма - “ТОРГ-12 (форма 2011г.)” (есть у нас такая внешняя печатная форма - прим. автора)».

Не мудрствуя лукаво, беру за основу ту самую внешнюю печатную форму, вешаю на диалоговое окно всякие красивости для отбора накладных, подправляю код и, вуаля - все готово! Дальше - больше: «А еще мне нужно массово распечатывать эти накладные, но в печатной форме “ТОРГ-12 (Пром)” (есть у нас и такая внешняя печатная форма - прим. автора). Тут уже нужно было что-то делать более универсальное на случай, если через некоторое время понадобятся опять или новые документы, или новые печатные формы.

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

  • - объявляем экспортными переменную «Докум» и процедуру «Печать()»;
  • - решительно удаляем процедуру «ПриОткрытии()»;
  • - исходную таблицу копируем из обработки в файл «.mxl» (поскольку класс не увидит ее внутри обработки, на то он и класс) и, соответственно, заменяем выражение типа «Таблица.ИсходнаяТаблица(«Таблица»);» на выражение типа «Таблица.ИсходнаяТаблица(глКаталогПечФорм + «Торг12.mxl»);»;
  • - чтобы получить одну портянку с кучей документов, а не кучу портянок по одному документу, убираем объявление типа «Таблица = СоздатьОбъект(«Таблица»);» и «Таблица.ИсходнаяТаблица(глКаталогПечФорм + «Торг12.mxl»);» из процедуры «Печать()» и вставляем его в модуль обработки (добавляем в конец модуля). Соответственно, переменную «Таблица» объявляем переменной модуля;
  • - также убираем из процедуры «Печать()» выражение типа «Таблица.Показать()», вместо этого добавляем экспортную процедуру «Показать()» с единственной строкой: «Таблица.Показать();». Этот метод будем вызывать после цикла с методом «Печать();
  • - для того, чтобы новый документ печатался на новой странице, в конце процедуры «Печать()» добавляем строку типа «Таблица.НоваяСтраница()»;
  • - проверяем модуль на наличие строк типа «Таблица.ПовторятьПриПечатиСтроки();». Иначе будет сюрприз!
  • - ну и естественно, предусмотреть загрузку внешней компоненты 1срр.dll (если она у вас до сих пор не предусмотрена) и описать классы в defcls.prm.

В результате мы имеем:

  1. Обработка является универсальной - ее можно внедрить в любую конфигурацию.
  2. С помощью примера, приведенного в данной обработке, можно распечатать любой документ в любой внутренней или внешней печатной форме. При выходе в свет новой печатной формы она элементарно добавляется в обработку.
  3. Код обработки стал до предела кратким и понятным (и содержит порядка сотни строк). Для добавления нового документа нужно добавить лишь несколько строк кода в конец модуля путем копи-паста. Для добавления новой печатной формы к уже существующему документу нужно добавить всего одну строку кода.
  4. Для непосвященных в ООП это отличный пример, что такое классы и как их применять на практике.

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

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

В документах, для которых предусмотрен вывод на печать каких-либо печатных форм, слева от кнопки Печать присутствует кнопка списка .

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

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

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

В группе Внешние печатные формы для задается документ или справочник, для которого подключается печатная форма. В группу входят три переключателя:

  • Документа - печатная форма появится в списке печати диалогового окна выбранного ниже документа;
  • Списка справочника - печатная форма появится в списке печати выбранного ниже справочника;
  • Элемента справочника - печатная форма появится в списке печати диалогового окна элемента выбранного ниже справочника.

Все внешние печатные формы хранятся в подкаталоге PrnForms каталога EXTFORMS . При запуске обработки программа считывает внешние формы, хранящиеся в этом каталоге. Каждая строка таблицы содержит текстовое название внешнего файла, имя файла и имя кнопки, которая будет назначена в документе (справочнике) для вызова печатной формы.

Под списком расположены кнопки для работы с внешними файлами.

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

Нажатие на кнопку Обновить заново заполняет список внешних печатных форм. Кнопку необходимо использовать после записи новых внешних печатных форм в подкаталоге PrnForms .

Кнопка Изменить служит для работы со списком внешних файлов. При нажатии кнопки Изменить рядом с ней открывается меню из четырех пунктов:

  • Изменить название;
  • Изменить кнопку;
  • Внести в список;
  • Удалить из списка.

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

После редактирования новое название внешнего файла появится в списке вместо предыдущего.

При выборе пункта Изменить кнопку текстовое название кнопки будет выдано для редактирования в таком же диалоговом окне. После редактирования новое название кнопки также появится в списке.

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

Пункт Удалить из списка после дополнительного запроса удаляет из списка строку с описанием внешнего файла. При этом сам файл не удаляется, поэтому впоследствии его можно опять внести в список.

Как правило, пользователь программы 1С: Предприятие 7.7 может самостоятельно обновить свою рабочую конфигурацию. Далее даются рекомендации по обновлению типовой неизмененной конфигурации. Если Ваша конфигурация изменена, сделаны доработки в документах, отчетах, или же печатных формах, то обновлять самостоятельно конфигурацию не рекомендуется. Рекомендуем вызвать квалифицированного специалиста для проведения работ по обновлению.

Как самостоятельно подключить к конфигурации внешние отчеты и внешние печатные формы в программе 1С:Предприятие 7.7

Копирование внешнего отчета в каталог информационной базы.

Файл внешнего отчета имеет расширение "ert". Это непосредственно внешний отчет. Обычно к файлу внешнего отчета прилагается файл описания с расширением "efd". Этот файл необходим для того, чтобы программа сразу "нашла" отчет и не требовалось его подключать вручную. Например, файл внешнего отчета называется "ЖурналУчетаЗаявок.ert", тогда файл описания будет называться "ЖурналУчетаЗаявок.efd". Эти два файла (или же один, если файла с расширением efd нет) необходимо скопировать в каталог рабочей базы. Для этого сначала необходимо найти каталог рабочей базы. После этого необходимо найти в каталоге рабочей базы каталог "ExtForms".
Если Вы копируете внешнюю печатную форму, то необходимо найти в каталоге "ExtForms" каталог "PrnForms". В найденный каталог (ExtForms для внешних отчетов и PrnForms для внешних печатных форм) нужно скопировать оба файла.

Подключение к программе внешнего отчета с помощью специальной обработки.

Для подключения к базе данных внешнего отчета необходимо открыть отчет "Дополнительные возможности", перейдя в меню "Сервис" - "Дополнительные возможности".

Если Вы скопировали правильно внешний отчет и файл с расширением efd, то Ваш внешний отчет появится в списке внешних отчетов.

Если файл настройки efd не скопирован, то необходимо проделать следующее:
Нажать кнопку "Изменить" выбрать из меню "Внести в список".

Из выпадающего списка выбрать нужный файл внешнего отчета (который был скопирован в каталог ExtForms). Если в списке нужного файла не оказалось, это может быть по двум причинам: 1) Файл был скопирован не в ту папку, т. е. нужно еще раз внимательно проверить, правильность копирования по главе "Копирование внешнего отчета в каталог информационной базы." 2) Файл скопирован правильно и уже находится в списке внешних отчетов. В таком случае нужно внимательно просмотреть список внешних отчетов и найти новый добавленный отчет.
После выбора файла будет открыто окно, в котором нужно задать название внешнего отчета. Введите произвольное наименование. Нажмите кноку "ОК".

После этого Ваш внешний файл появится в списке внешних файлов.

Подключение к программе внешней (дополнительной) печатной формы.

Для подключения внешней печатной формы необходимо выбрать из меню "Сервис"-"Регистрация внешних печатных форм".

Далее выберите, для какого документа, или для какого элемента или списка справочника необходимо подключить внешнюю печатную форму. Например, подключим внешнюю печатную форму для документа "Отгрузка товаров, продукции". Для этого необходимо поставить в группе "Внешние печатные формы для" переключатель на пункт "Документа". Далее выбрать из меню "Отгрузка товаров, продукции".

В таблице должны появиться подключенные внешние печатные формы. Если в таблице есть та форма, которая Вам нужна, значит она была подключена автоматически.
Если нужной формы в таблице нет, необходимо сделать следующее: Нажать на кнопку "Изменить…" и в выпадающем меню выбрать "Внести в список".

В открывшемся списке необходимо выбрать ту форму, которую Вы копировали в каталог PrnForms.

Если формы в списке нет, значит Вы неправильно скопировали форму в каталог еще раз внимательно прочтите главу "Копирование внешнего отчета в каталог информационной базы."


Чтобы проверить работоспособность новой внешней печатной формы необходимо открыть документ, список или элемент справочника, к которому Вы подключили форму и нажать на кнопку с маленьким треугольником, находящейся рядом с кнопкой "Печать".

В выпавшем списке необходимо выбрать новую печатную форму.

просмотров