Подключение внешних обработок, отчетов и печатных форм для 1С 8, BAS и UA-Бюджет.


В конфигурациях (1C Предприятие 8, BAS и UA-Бюджет) на управляемом интерфейсе, чтобы подключить внешнею печатную форму, обработку или отчет необходимо в модуле объекта разместить следующий код:

Код для обработки:

Функция СведенияОВнешнейОбработке() Экспорт
   
    Данные = Новый Структура();
    Данные.Вставить("Наименование", НСтр("ru='Название';uk='Назва'"));
    Данные.Вставить("БезопасныйРежим", Истина);// взависимости от обстоятельств
    Данные.Вставить("Версия", "1.01");
    Данные.Вставить("Информация", НСтр("ru='Описание.';uk='Опис.'"));
    Данные.Вставить("Вид", "ДополнительнаяОбработка");
   
    ТабКоманды = Новый ТаблицаЗначений;
    ТабКоманды .Колонки.Добавить("Идентификатор");
    ТабКоманды .Колонки.Добавить("Использование");
    ТабКоманды .Колонки.Добавить("Представление");
   
    НоваяСтрока = ТабКоманды .Добавить();
    НоваяСтрока.Идентификатор = "ОткрытьОбработку";
    НоваяСтрока.Использование = "ОткрытиеФормы";
    НоваяСтрока.Представление = НСтр("ru='Название';uk='Назва'");
    Данные.Вставить("Команды", ТабКоманды);
   
    Возврат Данные;
   
КонецФункции

 

Код для отчета:


Функция СведенияОВнешнейОбработке() Экспорт

    Данные = Новый Структура;
    Данные.Вставить("Наименование", НСтр("ru='Название';uk='Назва'"));
    Данные.Вставить("БезопасныйРежим",Ложь);
    Данные.Вставить("Версия","1.01");
    Данные.Вставить("Информация",НСтр("ru='Описание.';uk='Опис.'"));
    Данные.Вставить("Вид","ДополнительныйОтчет");
   
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Идентификатор");
    Таблица.Колонки.Добавить("Использование");
    Таблица.Колонки.Добавить("Представление");
   
    НоваяСтрока = Таблица.Добавить();
    НоваяСтрока.Идентификатор = "ОткрытьОтчет";
    НоваяСтрока.Использование = "ОткрытиеФормы";
    НоваяСтрока.Представление = НСтр("ru='Название';uk='Назва'");
    Данные.Вставить("Команды",Таблица);
   
    Возврат Данные;

КонецФункции // СведенияОВнешнейОбработке()

 

Код для печатной формы:

Функция СведенияОВнешнейОбработке() Экспорт
   
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    //можно указать несколько справочников или документов
    МассивНазначений.Добавить("Документ.НашДокумент");
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", НСтр("ru='Название';uk='Назва'"));
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Версия", "1.01");
    ПараметрыРегистрации.Вставить("Информация", НСтр("ru='Название';uk='Назва'"));
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    // если нужно вызвать форму обработки для внесения доп. настроек вместо "ВызовСерверногоМетода" укажите "ВызовКлиентскогоМетода"
    ДобавитьКоманду(ТаблицаКоманд, НСтр("ru='Название';uk='Назва'"), "ИдентификаторПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
   
    Возврат ПараметрыРегистрации;
   
КонецФункции // СведенияОВнешнейОбработке()

Функция ПолучитьТаблицуКоманд()
    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
   
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
   
КонецПроцедуры

Печатных форм без вывода дополнительных форм (только серверные методы):


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ИдентификаторПечатнойФормы", НСтр("ru='Название';uk='Назва'"),
                                                            СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыВывода));

КонецПроцедуры // Печать()


Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыВывода)

    УстановитьПривилегированныйРежим(Истина);
   
    ЗапросШапка = Новый Запрос;
    ЗапросШапка.Текст = "";
       
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Документ_Макет";

    Макет = ПолучитьМакет("Макет");
   
    // печать производится на языке, указанном в настройках пользователя
    КодЯзыкаПечать = ПараметрыВывода.КодЯзыкаДляМногоязычныхПечатныхФорм;
    Макет.КодЯзыкаМакета = КодЯзыкаПечать;

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

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

    КонецЦикла;

    Возврат ТабДокумент;

КонецФункции

Только для печатных форм с выводом дополнительных форм:


&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
   
КонецПроцедуры


Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.