Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:52

Печать во внешней обработке

Автор Nail2010, 14 апр 2011, 08:49

0 Пользователей и 2 гостей просматривают эту тему.

has

хз, у меня и в модуле формы и в модуле обработки ошибок нет

Nail2010

так, исправлено таким образом:
                 нМакет=нСсылка.ПолучитьОбъект();
                 Макет=нМакет.ПолучитьМакет("Накладная1");

Теперь ошибок не выдает.
теперь просто при нажатии на кнопку СФОРМИРОВАТЬ ничего не происходит...

has

ты получаешь объект документа? Я ж это еще в начале говорил.
точку останова в Сформировать() поставь и посмотри попадает туда или нет. Может обработчик не назначен?

Nail2010

Так, после долгих мытарств все наконец то заработало. Всмысле, выводит и формирует. осталось чтобы в макете новые параметры отображались.Но это уже легче.
Окончательный код такой


Процедура КнопкаСформироватьНажатие(Кнопка)
ИмяМакета="Накладная1";
Печать(ИмяМакета);
КонецПроцедуры


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

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", нСсылка);

ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("РеализацияТоваровУслуг");

Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
| Номенклатура.Код КАК Код,
| Количество,
| КоличествоМест,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаХранения,
| Цена,
| Сумма,
| СуммаНДС,
| СтранаПроисхождения КАК СтранаПроисхождения,
| НомерГТД КАК НомерГТД,
|   НомерСтроки,
| 1 КАК ID
|ИЗ
| (ВЫБРАТЬ
| Номенклатура         КАК Номенклатура,
| ЕдиницаИзмерения     КАК ЕдиницаИзмерения,
| Цена                 КАК Цена,
| СтавкаНДС            КАК СтавкаНДС,
| СтранаПроисхождения  КАК СтранаПроисхождения,
| НомерГТД             КАК НомерГТД,
| СУММА(Количество)    КАК Количество,
| СУММА(КоличествоМест)КАК КоличествоМест,
| СУММА(Сумма)         КАК Сумма,
| СУММА(СуммаНДС)      КАК СуммаНДС,
| МИНИМУМ(НомерСтроки) КАК НомерСтроки
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
| СГРУППИРОВАТЬ ПО
| Номенклатура,
| ЕдиницаИзмерения,
| Цена,
| СтавкаНДС,
| СтранаПроисхождения,
| НомерГТД
| ) КАК ВложенныйЗапросПоТоварам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)),
| Номенклатура.Код КАК Код,
| Количество,
| NULL,
| NULL,
| NULL,
| Цена,
| Сумма,
| 0,
| NULL,
| NULL,
| НомерСтроки,
| 2
|
|ИЗ
| Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| Номенклатура.Код КАК Код,
| Количество,
| NULL,
| NULL,
| Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаХранения,
| Цена,
| Сумма,
| СуммаНДС,
| NULL,
| NULL,
| НомерСтроки,
| 3
|
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| Номенклатура.Код КАК Код,
| Количество,
| NULL,
| NULL,
| Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаХранения,
| Цена,
| Сумма,
| СуммаНДС,
| NULL,
| NULL,
| НомерСтроки,
| 4
|
|ИЗ
| Документ.РеализацияТоваровУслуг.АгентскиеУслуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| ID,
| НомерСтроки";
ЗапросТовары = Запрос.Выполнить().Выгрузить();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Накладная";

нМакет = нСсылка.ПолучитьОбъект();
Макет=нМакет.ПолучитьМакет("Накладная1");

// Выводим шапку накладной

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Расходная накладная");
ТабДокумент.Вывести(ОбластьМакета);

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

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

ЕстьСкидки = Ложь;

ВыводитьКоды = Ложь;

ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
//ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ТабДокумент.Присоединить(ОбластьСуммы);

ОбластьКолонкаТовар = Макет.Область("Товар");
Если Не ВыводитьКоды Тогда
//ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
// Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
Если НЕ ЕстьСкидки Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область("СуммаБезСкидки").ШиринаКолонки +
Макет.Область("СуммаСкидки").ШиринаКолонки;
КонецЕсли;

ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");

Сумма    = 0;
СуммаНДС = 0;
ВсегоСкидок    = 0;
ВсегоБезСкидок = 0;

Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл

ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ТабДокумент.Вывести(ОбластьНомера);

ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар);
ТабДокумент.Присоединить(ОбластьДанных);

Скидка = 0;

ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьСуммы);
Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
ВсегоСкидок    = ВсегоСкидок + Скидка;
ВсегоБезСкидок = Сумма       + ВсегоСкидок;

КонецЦикла;

// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;

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

ТабДокумент.Присоединить(ОбластьДанных);
ТабДокумент.Присоединить(ОбластьСуммы);
КонецЕсли;

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

// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабДокумент.Вывести(ОбластьМакета);

Возврат ТабДокумент;

КонецФункции // ПечатьДокумента()

Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт

// Получить экземпляр документа на печать
Если      ИмяМакета = "Накладная" ИЛИ ИмяМакета="Накладная1" Тогда
ТабДокумент = ПечатьДокумента();

КонецЕсли;
нСсылка=ЭлементыФормы.СсылкаНаОбъект.Значение;
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(нСсылка), НепосредственнаяПечать);

КонецПроцедуры // Печать










Maxim


Maxim

А всё понял, с формы вызывать не нужно. Просто оставь Функцию Печать как есть.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск