Приветствую Вас ГостьСреда, 08.05.2024, 23:54

Каталог статей


БСП. Управление печатными формами.

Реализация печатных форм в БСП несколько отличается в разных версиях. Ниже разобран пример с БСП версии 3.1.5

Допустим надо добавить печатную форму "Счет на оплату" для документа ЗаказКлиента

Для этого нам потребуется:

1. Создать макет "ПФ_MXL_СчетНаОплату" для печатной формы. Макет создаем в макетах документа.

2. Добавить изменения в Общий модуль УправлениеПечатьюПереопределяемый в процедуру ПриОпределенииОбъектовСКомандамиПечати. Для нашего документа надо добавить стоку:

СписокОбъектов.Добавить(Документы.ЗаказКлиента);

Если модуль стоит на поддержки, то в настройках правил поддержки устанавливаем "Объект поставщика редактируется с сохранением поддержки".

3. В модуле менеджера документа добавляем:

3.1. экспортную процедуру ДобавитьКомандыПечати()

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати – ТаблицаЗначений – состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
    // Счет на оплату
    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.МенеджерПечати = "Документ.ЗаказКлиента";
    КомандаПечати.Идентификатор = "СчетНаОплату";                     
    //КомандаПечати.МестоРазмещения = "<ИмяПодменюНаФорме>";
    КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
    КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь; 

КонецПроцедуры

3.2. экспортную процедуру Печать()

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

3.3 Функцию формирования табличного документа

// Формирует табличный документ печатной формы "Счет на оплату"
//
// Параметры:
//  МассивОбъектов – Массив – ссылки на объекты, которые нужно распечатать;
//  ПараметрыПечати – Структура – дополнительные настройки печати;
//
Функция ПечатьСчетаНаОплату(МассивОбъектов, ОбъектыПечати)
    
    // Создаем табличный документ и устанавливаем имя параметров печати.
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_СчетНаОплату";
    
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказКлиента.ПФ_MXL_СчетНаОплату"); // позволят получать макет, который пользователь может редактировать.
    
    // Получаем запросом необходимые данные.
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ТаблицаДокумента.Ссылка КАК Ссылка
    |ИЗ
    |    Документ.ЗаказКлиента КАК ТаблицаДокумента
    |ГДЕ
    |    ТаблицаДокумента.Ссылка В(&МассивОбъектов)";
    
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Шапка = Запрос.Выполнить().Выбрать();
    
    ПервыйДокумент = Истина;
    
    Пока Шапка.Следующий() Цикл
        
        Если Не ПервыйДокумент Тогда
            // Все документы нужно выводить на разных страницах.
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        ПервыйДокумент = Ложь;
        // Запомним номер строки, с которой начали выводить текущий документ.
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

        //Начало вывода документа
        //...алгоритм заполнения табличного документа...
        //Конец вывода документа
        
        // В табличном документе необходимо задать имя области, в которую был 
        // выведен объект. Нужно для возможности печати комплектов документов.
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 
            НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);

    КонецЦикла;

    Возврат ТабличныйДокумент;
    
КонецФункции

4. Подключить форму документа к подсистеме "Подключаемые команды". Для этого в модуле формы документа добавить в процедуры:

4.1. В событии "ПриСозданииНаСервере"

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

4.2. В событии "ПриЧтенииНаСервере"

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

4.3. В событии "ПриОткрытии"

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

4.4 В событии "ПослеЗаписи"

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

4.5. Добавить в модуль формы следующие процедуры: 

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
    ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры

// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

5. Подключить форму списка документов к подсистеме "Подключаемые команды". Для этого в модуле формы списка добавить в процедуры:

5.1. Добавить в процедуру "ПриСозданииНаСервере"

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

5.2. Добавить в обработчик события "ПриАктивизацииСтроки" таблицы формы, которая отображает список

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

5.3. Добавить в модуль формы следующие процедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); //Элементы.Список - элемент на форме, который связан с динамическим списком. При необходимости изменить.
КонецПроцедуры         

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
    ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры         

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список);
КонецПроцедуры         

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры

// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

 

Категория: Программирование | Добавил: leshic (22.05.2023)
Просмотров: 303 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0