1С 8.2 УНФ
Создание печатной формы. В интернете пошарился и вот что получилось:
Добавляем внешнюю печатную форму (ВПФ) для Расходных накладных(РН).
При попытке печати через ВПФ выдает ошибку
Цитата
{ОбщийМодуль.ДополнительныеОтчетыИОбработки(66)}: В обработчике печати не был сформирован табличный документ для: РасходНакладная
ВызватьИсключение(ТекстСообщенияОбОшибке);
i |
| Текст ошибки это не код 1С, не выделяйте его, или выделяйте "цитированием" (как сейчас).
|
Вот код
// Функция формирует табличный документ
//
// Параметры
// ВХОДЯЩИЕ:
// МассивОбъектов - Массив - список объектов ссылочного типа с данными для печати документа
// Как правило, содержит один элемент с ссылкой на вызвавший объект
// ИСХОДЯЩИЕ:
// ОбъектыПечати - СписокЗначений - список объектов печати.
// Заполняется процедурой УправлениеПечатью.ЗадатьОбластьПечатиДокумента().
// Используется в основной процедуре печати
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФормуТоварногоЧека(МассивОбъектов, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_РасходнаяНакладная";
ПервыйДокумент = Истина;
Для Каждого ТекущийДокумент Из МассивОбъектов Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ТекущийДокумент", ТекущийДокумент);
Запрос.Текст =
"ВЫБРАТЬ
| РасходнаяНакладная.Дата КАК ДатаДокумента,
| РасходнаяНакладная.Организация КАК Организация,
| РасходнаяНакладная.Контрагент КАК Контрагент,
| РасходнаяНакладная.СуммаВключаетНДС КАК СуммаВключаетНДС,
| РасходнаяНакладная.ВалютаДокумента КАК ВалютаДокумента,
| РасходнаяНакладная.Запасы.(
| НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(РасходнаяНакладная.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(100))) = """"
| ТОГДА РасходнаяНакладная.Запасы.Номенклатура.Наименование
| ИНАЧЕ РасходнаяНакладная.Запасы.Номенклатура.НаименованиеПолное
| КОНЕЦ КАК Запас,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.Код КАК Код,
| ЕдиницаИзмерения КАК ЕдиницаХранения,
| Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма,
| СуммаНДС,
| Характеристика,
| Содержание,
| ПроцентСкидкиНаценки,
| ВЫБОР
| КОГДА РасходнаяНакладная.Запасы.ПроцентСкидкиНаценки <> 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК ЕстьСкидка,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры
| ),
| РасходнаяНакладная.Номер,
| РасходнаяНакладная.Организация.Префикс КАК Префикс,
| РасходнаяНакладная.Договор КАК Договор,
| РасходнаяНакладная.НалогообложениеНДС КАК НалогообложениеНДС,
| РасходнаяНакладная.Ответственный КАК Отпустил,
| РасходнаяНакладная.Автор КАК Автор,
| РасходнаяНакладная.ДоверенностьСерия,
| РасходнаяНакладная.ДоверенностьНомер,
| РасходнаяНакладная.ДоверенностьДата,
| РасходнаяНакладная.ДоверенностьЧерезКого КАК Получил,
| РасходнаяНакладная.ОтпускПроизвел,
| ВЫРАЗИТЬ(РасходнаяНакладная.МестоСоставленияДокумента КАК СТРОКА(1000)) КАК МестоСоставленияДокумента
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| РасходнаяНакладная.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.Номер, Истина, Истина);
ВыборкаСтрокЗапасы = Шапка.Запасы.Выбрать();
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РасходнаяНакладная_Накладная";
Макет = УправлениеПечатью.ПолучитьМакет("PF_AN1");
КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм();
Макет.КодЯзыкаМакета = КодЯзыкаПечать;
СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(КодЯзыкаПечать,Шапка.Организация, Шапка.ДатаДокумента, ,);
СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(КодЯзыкаПечать,Шапка.Контрагент, Шапка.ДатаДокумента, ,);
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = НСтр("ru='Расходная накладная № ';uk='Видаткова накладна № '", КодЯзыкаПечать)
+ НомерДокумента
+ НСтр("ru=' от ';uk=' від '", КодЯзыкаПечать)
+ Формат(Шапка.ДатаДокумента, "Л="+КодЯзыкаПечать+"; ДФ='dd MMMM yyyy'");
ТабличныйДокумент.Вывести(ОбластьМакета);
Сумма = 0;
СуммаНДС = 0;
Количество = 0;
Сумма = Сумма + ВыборкаСтрокЗапасы.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокЗапасы.СуммаНДС;
Количество = Количество + 1;
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Всего = УправлениеНебольшойФирмойСервер.ФорматСумм(?(Шапка.СуммаВключаетНДС, Сумма - СуммаНДС, Сумма));
ТабличныйДокумент.Вывести(ОбластьМакета);
РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаНДС, Шапка.ВалютаДокумента,,КодЯзыкаПечать));
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
КонецФункции // СформироватьПечатнуюФорму
Сообщение отредактировал logist - 02.07.12, 15:43