|
Ошибка "В обработчике не был сформирован табличный документ". | ☑ | ||
---|---|---|---|---|
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
|
Спасибо за внимание, я сама разобралась.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |