Имя: Пароль:
1C
1С v8
Печатная форма не доступна
0 Gill
 
30.09.22
08:46
Всем привет! Внешняя обработка вылетает с ошибкой "Печатная форма не доступна".
В чем беда?


///////////////////////////////////////////////

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки

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

// Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки

// СтандартныеПодсистемы.Печать

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

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

#КонецОбласти

Функция ЗапросИзДокумента(МассивОбъектов, ПараметрыВывода) Экспорт

    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.КлючПараметровПечати = "ОтпускСотрудниковТ6а";
    
    Макет = ПолучитьМакет("ПФ_MXL_Т6аОТПУСК");
    ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");

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

    ВыборкаСсылка = Запрос.Выполнить().Выбрать();
    
    Пока ВыборкаСсылка.Следующий() Цикл
        
        Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаСсылка);
        
        ТабличныйДокумент.Вывести(ОбластьМакетаШапка);
    ТабличныйДокумент.Вывести(ОбластьМакетаПодвал);

    КонецЦикла;

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

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
1 Amra
 
30.09.22
08:53
Запрос возвращает пусто, то есть нет нужных данных
2 Gill
 
30.09.22
08:54
(1)есть данные
3 Мультук
 
гуру
30.09.22
09:00
(2)

Т.е. есил напрямую вызвать ЗапросИзДокумента(МассивОбъектов, ПараметрыВывода)

он покажет некий табличный документ ?

P.S.
4 mikecool
 
30.09.22
09:01
табддок на выходе пустой, ваш кеп
5 Gill
 
30.09.22
09:03
Спасибо....