Имя: Пароль:
1C
1С v8
Ошибка при загрузке внешней печатной формы, бух 3.0
0 scorp364
 
26.02.16
12:56
Помогите пожалуйста

Ошибка: {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(238)}: В обработчике печати не был сформирован табличный документ для: Акт взаимозачета (ВПФ)
            ВызватьИсключение(ТекстСообщенияОбОшибке);

Код:

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

Функция ПечатьАктаВзаимозачета(МассивОбъектов, ОбъектыПечати)

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

        ОбластьМакета = Макет.ПолучитьОбласть("СтрокаДебиторки");
        Для каждого СтрокаЗадолженности Из ДебиторскаяЗадолженность Цикл
            ОбластьМакета.Параметры.СтрокаДокументовДеб = сокрЛП(СтрокаЗадолженности.ДоговорПредставление) + " :" + Символы.Таб + Формат(СтрокаЗадолженности[КолонкаСуммы], "ЧЦ=15; ЧДЦ=2; ЧН=Ноль") + " " + ПредставлениеВалюты;
            ТабличныйДокумент.Вывести(ОбластьМакета);
        КонецЦикла;
        
        ОбластьПодвала     = Макет.ПолучитьОбласть("Подвал");
        СтрокаВзаимозачета = НСтр("ru = '3. Взаимозачет производится на сумму'")+ " "
                           + Формат(ДебиторскаяЗадолженность.Итог(КолонкаСуммы), "ЧЦ=15; ЧДЦ=2; ЧН=Ноль") + " " + ПредставлениеВалюты;
        ОбластьПодвала.Параметры.СтрокаВзаимозачета       = СтрокаВзаимозачета;
        ОбластьПодвала.Параметры.ПредставлениеОрганизации = ПредставлениеОрганизации;
        ОбластьПодвала.Параметры.ПредставлениеКредитора   = ПредставлениеКредитора;
        ТабличныйДокумент.Вывести(ОбластьПодвала);
        
        // В табличном документе зададим имя области, в которую был
        // выведен объект. Нужно для возможности печати покомплектно.
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
            НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);

    КонецЦикла;

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

КонецФункции
1 Качели
 
26.02.16
13:07
У тебя это условие не формирует макет и проверка в ОМ ругается
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КорректировкаДолга") Тогда
Я так думаю.
2 Сильф
 
26.02.16
14:44
(0) Открой модуль объекта, там есть процедура СведенияОВнешнейОбработке. Её код сюда.
Ошибка? Это не ошибка, это системная функция.