Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Дневник провинциального программиста Как организовать подключение внешних печатных форм


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

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

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

Исходные данные: ОсновныеДействияФормы - идентификатор командной панели формы документа, на которой будет создано подменю печати. Подменю печати будет выглядеть так:

В модуле формы документа необходимо внести следующие изменения:

  • Описать переменные мДеревоМакетов, мПодменюПечати, мПечатьПоУмолчанию.
  • Добавить процедуры УстановитьКнопкиПечати, ОсновныеДействияФормыПечатьПоУмолчанию, ОсновныеДействияФормыПечать.
  • В процедуру обработки события формы ПередОткрытием добавить вызов процедуры УстановитьКнопкиПечати.
// Хранит дерево макетов печатных форм
Перем мДеревоМакетов;

// Хранит элемент управления подменю печати
Перем мПодменюПечати;

// Хранит элемент управления кнопку печать по умолчанию
Перем мПечатьПоУмолчанию;

//Процедура устанавливает подменю "Печать" и кнопку "Печать по умолчанию" при необходимости
Процедура УстановитьКнопкиПечати()
мДеревоМакетов = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(Ссылка, ПолучитьСтруктуруПечатныхФорм(), Новый Действие("ОсновныеДействияФормыПечать"), Новый Действие("ОсновныеДействияФормыУстановитьПечатьПоУмолчанию"));
// Если документ не содержит встроенных печатных форм, то вместо вызова процедуры ПолучитьСтруктуруПечатныхФорм() можно вставить значение Неопределено
УниверсальныеМеханизмы.УстановитьПодменюПечати(мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов.Строки.Количество() > 0);
УниверсальныеМеханизмы.УстановитьПечатьПоУмолчанию(мПечатьПоУмолчанию, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов, Метаданные().Имя, Новый Действие("ОсновныеДействияФормыПечатьПоУмолчанию"));
Если Не мПодменюПечати = Неопределено Тогда
УниверсальныеМеханизмы.СформироватьПодменю(мДеревоМакетов, мПодменюПечати, Истина, Истина);
КонецЕсли;
КонецПроцедуры

// Процедура - обработчик нажатия на кнопку "Печать по умолчанию"
Процедура ОсновныеДействияФормыПечатьПоУмолчанию(Кнопка)
УниверсальныеМеханизмы.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);
КонецПроцедуры

// Процедура - обработчик нажатия на кнопку "Печать"
Процедура ОсновныеДействияФормыПечать(Кнопка)
УниверсальныеМеханизмы.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
// Установка кнопок печати
УстановитьКнопкиПечати();
КонецПроцедуры

Читать далее »

Дневник провинциального программиста
Copyright (C) 2009. Все права защищены.


В избранное