Имя: Пароль:
1C
1С v8
Ошибка "В обработчике не был сформирован табличный документ".
0 ArinkaE
 
22.05.15
11:46
Создала внешнюю печатную форму на основе Акта выполненных работ для бухгалтерии 3.0. При отладке выходит такая ошибка:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(237)}: В обработчике печати не был сформирован табличный документ для: ВнешняяОбработка.АктВыполненныхРаботДваЭкземпляра
            ВызватьИсключение(ТекстСообщенияОбОшибке);
Подскажите пожалуйста кто знает, в чем тут может быть проблема?

Вот код модуля объекта:

// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
//   ИменаМакетов    - Строка    - Имена макетов, перечисленные через запятую
//   МассивОбъектов  - Массив    - Массив ссылок на объекты которые нужно распечатать
//   ПараметрыПечати - Структура - Структура дополнительных параметров печати
//
// ИСХОДЯЩИЕ:
//   КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
//   ПараметрыВывода       - Структура        - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_Акт") Тогда
        ТаблицаСведенийАктаОбОказанииУслуг = ПолучитьТаблицуСведенийАктаОбОказанииУслуг(МассивОбъектов);
        СтруктураПараметровПечати = Новый Структура;
        СтруктураПараметровПечати.Вставить("ВидДокументаПечати",  "РеализацияТоваровУслуг");
        СтруктураПараметровПечати.Вставить("ИмяПараметровПечати", "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт");
        СтруктураПараметровПечати.Вставить("ИмяМакетаПечати","ВнешняяОбработка.АктВыполненныхРаботДваЭкземпляра.ПФ_MXL_Акт");
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПФ_MXL_Акт", "Акт об оказании услуг",
            ПечатьАктаОбОказанииУслуг(ТаблицаСведенийАктаОбОказанииУслуг, ОбъектыПечати, СтруктураПараметровПечати),,
                    "ВнешниеОбработки.АктВыполненныхРаботДваЭкземпляра.ПФ_MXL_Акт");
               ПараметрыВывода.Вставить("ФормироватьЭД", Истина);
    КонецЕсли;
        ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов,
        КоллекцияПечатныхФорм,
        ОбъектыПечати,
        ПараметрыВывода);
КонецПроцедуры
1 Chikko
 
22.05.15
11:55
Тут надо еще вставить текст процедуры "СведенияОВнешнейОбработке".
2 ArinkaE
 
22.05.15
12:05
Не могу отправить
3 ArinkaE
 
22.05.15
12:10
ункция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    
    МассивНазначений = Новый Массив;
    
    Наименование = УказатьНаименованиеВнешнейПечатнойФормы();
    
    МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
    
    ПараметрыРегистрации.Вставить("Вид","ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение",МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование",Наименование);
    ПараметрыРегистрации.Вставить("Версия","1.1");
    ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);
    ПараметрыРегистрации.Вставить("Информация",Наименование);
    
    ДобавитьКоманду(ТаблицаКоманд,Наименование,УказатьНаименованиеКомандыПечати(),"ВызовСерверногоМетода",Истина,"ПечатьMXL");
    ПараметрыРегистрации.Вставить("Команды",ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции
4 ArinkaE
 
22.05.15
12:11
Убрала код из-за которого не отправлялось сообщение, код по получению таблицы команд.
5 Chikko
 
22.05.15
12:15
Сравни теперь УказатьНаименованиеКомандыПечати() и "ПФ_MXL_Акт"
6 ArinkaE
 
22.05.15
12:43
Подсказку не поняла, в виду отсутствия опыта. Поподробнее пожалуйста.
7 User_Agronom
 
22.05.15
12:48
(0) По моему ТС не знает, чего хочет.

Покажи, как формируешь табличный документ?
8 ArinkaE
 
22.05.15
12:55
Функция ПечатьАктаОбОказанииУслуг(СведенияАктаОбОказанииУслуг, ОбъектыПечати, СтруктураПараметровПечати) Экспорт

    УстановитьПривилегированныйРежим(Истина);
    
    ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
        ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    КонецЕсли;
    ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб            = Истина;
    ТабличныйДокумент.ОриентацияСтраницы    = ОриентацияСтраницы.Портрет;
    ТабличныйДокумент.ИмяПараметровПечати    = СтруктураПараметровПечати.ИмяПараметровПечати;

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

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

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

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

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

        // Выводим подвал документа
        Если ТаблицаУслуги <> Неопределено Тогда
            Сумма    = ТаблицаУслуги.Итог("Сумма");
            СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");
        Иначе
            Сумма    = 0;
            СуммаНДС = 0;
        КонецЕсли;

        ОбластьМакета = Макет.ПолучитьОбласть("Итого");
        ОбластьМакета.Параметры.Заполнить(Новый Структура("Всего", ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма)));
        ТабличныйДокумент.Вывести(ОбластьМакета);
        
        ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
        ДанныеПечатиИтогоНДС = Новый Структура("ВсегоНДС, НДС");
        Если СуммаНДС <> 0 Тогда
            ДанныеПечатиИтогоНДС.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
            ДанныеПечатиИтогоНДС.НДС      = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр("ru='В том числе НДС'"), НСтр("ru='Сумма НДС'"));
        Иначе
            ДанныеПечатиИтогоНДС.ВсегоНДС = НСтр("ru='-'");
            ДанныеПечатиИтогоНДС.НДС      = НСтр("ru='Без налога (НДС)'");
        КонецЕсли;
        
        ОбластьМакета.Параметры.Заполнить(ДанныеПечатиИтогоНДС);
        ТабличныйДокумент.Вывести(ОбластьМакета);
        
        СуммаКПрописи = Сумма + ?(СведенияОДокументе.СуммаВключаетНДС, 0, СуммаНДС);
        ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
        ИтоговаяСтрока = НСтр("ru='Всего оказано услуг %1, на сумму %2'");
        ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИтоговаяСтрока, НомерСтроки, ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКПрописи, СведенияОДокументе.Валюта));
        СуммаПрописью  = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, СведенияОДокументе.Валюта);
        ДанныеПечатиСуммаПрописью = Новый Структура;
        ДанныеПечатиСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
        ДанныеПечатиСуммаПрописью.Вставить("СуммаПрописью", СуммаПрописью);
        ОбластьМакета.Параметры.Заполнить(ДанныеПечатиСуммаПрописью);
        ТабличныйДокумент.Вывести(ОбластьМакета);

        // Выводим подписи
        ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
        
        Если ЭтоПечатьЗаПоставщика Тогда
            ЗаместительПоПриказу = "";
        Иначе
            ЗаРуководителяПоПриказу = ?(ПустаяСтрока(СведенияОДокументе.ЗаРуководителяПоПриказу), "" , ", " + СведенияОДокументе.ЗаРуководителяПоПриказу);
            ЗаместительПоПриказу = СведенияОДокументе.РуководительФИО + ЗаРуководителяПоПриказу;
        КонецЕсли;

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

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

    КонецЦикла;

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

КонецФункции
9 ArinkaE
 
22.05.15
13:54
Подниму
10 ArinkaE
 
22.05.15
16:49
Спасибо за внимание, я сама разобралась.