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

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

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

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

Maxim

Нет, не из того модуля, а именно во внешней обработке.

Nail2010

Забыл что работаю в Толстый клиент - Обычное приложение.

     л_Объект = СсылкаНаОбъект.ПолучитьОбъект(); - НЕ Может работать!

     л_Объект=ЭлементыФормы.СсылкаНаОбъект.Значение - только так.

В строке выбора задается ссылка на док реализация ТУ и уже конкретно для него выполняется запрос и строиться макет.

так что вопрос с макетом по прежнему остается открытым

Maxim

Всё понял, вышли код полностью в текстовом виде, проверим, а то придумать не охота.

Nail2010

Директивы НаСервере или НаКлиенте тут роли не играют?

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";

Макет=ПолучитьМакет("Накладная1");
// Выводим шапку накладной

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

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

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

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

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

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

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

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

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

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

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

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

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

Скидка = 0;

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

КонецЦикла;

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

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

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

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

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

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

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

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

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

КонецПроцедуры //





Nail2010

Почему полкода цвета комментария - не знаю

Maxim

Замени вместо процедуры Печать() на функцию и добавьте Экспорт.

Nail2010

ни убавилось не прибавилось.....Та же самая ошибка.

Вместо Порцедура Печать()
           Функция Печать() Экспорт
           СсылкаОб=ЭлементыФормы.СсылкаНаОбъект.пЗначение;
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Ссылка", СсылкаОб);
           .............................

Я правильно понял?

has

Nail2010, я уже запутался чета. Сейчас какая проблема? Ошибок не выдает?

Nail2010

{Форма.ФормаОтчета.Форма(161,8)}: Процедура или функция с указанным именем не определена (ПолучитьМакет)
   Макет=<<?>>ПолучитьМакет("Накладная1"); (Проверка: Толстый клиент (обычное приложение))

Теги:

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

Рейтинг@Mail.ru

Поиск