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

Вывести код УКТВЭД на печатную форму счета

Автор kot488, 10 фев 2017, 15:08

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

kot488

Помогите пожалуйста с такой проблемой. Нужно на печатную форму вывести код УКТВЭД.
На макете создал область КодУКТВЭД

В форме документа счета вывел колонку с данным кодом, при добавлении номенклатуры код отображается (если кода нет то он не отображается)

В табличной части Товары созданы реквизиты НомерГТД (СправочникСсылка.НоменклатураГТД) и КодУКТВЭД (СправочникСсылка.КлассификаторУКТВЭД)

На втором изображении есть колонка Примечание (тоже создан реквизит в табличной части), все что вносится в нее выводится на печать.
По шаблону той колонки пробую вывести КодУКТВЭД на печать.

[spoiler=]
Функция ПолучитьПараметрыПечатиСчетаЗаказа(Тип) Экспорт

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

Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("СчетНаОплату");

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

ЗапросТовары = Запрос.Выполнить().Выгрузить();

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

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

КоррСчет   = Банк.КоррСчет;
ГородБанка = Банк.Город;

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


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

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

ПараметрыПечати.Вставить("ЕстьСкидки", Ложь);
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
ПараметрыПечати.ЕстьСкидки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;

ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ПараметрыПечати.ВыводитьКоды = Истина;
Колонка = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ПараметрыПечати.ВыводитьКоды = Истина;
Колонка = "Код";
КонецЕсли;

Если ПараметрыПечати.ВыводитьКоды Тогда
ПараметрыПечати.Вставить("ИмяКолонкиКодов", Колонка);
КонецЕсли;

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

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

ПараметрыПозиции = Новый Структура;

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

Если ПараметрыПечати.ВыводитьКоды Тогда
Если Колонка = "Артикул" Тогда
ПараметрыПозиции.Вставить("КодАртикул", ВыборкаСтрокТовары.Артикул);
Иначе
ПараметрыПозиции.Вставить("КодАртикул", ВыборкаСтрокТовары.Код);
КонецЕсли;
КонецЕсли;

ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТовары.Количество);
ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТовары.ЕдиницаИзмерения);
ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТовары.Цена);
ПараметрыПозиции.Вставить("ДопПрим", ВыборкаСтрокТовары.ДопПрим);
ПараметрыПозиции.Вставить("КодУКТВЭД", ВыборкаСтрокТовары.КодУКТВЭД);

ПараметрыПозиции.Вставить("Товар", СокрП(ВыборкаСтрокТовары.НаименованиеПолное)
+ ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары));

Скидка = Ценообразование.ПолучитьСуммуСкидки(ВыборкаСтрокТовары.Сумма, ВыборкаСтрокТовары.Скидка);

Если ПараметрыПечати.ЕстьСкидки Тогда
ПараметрыПозиции.Вставить("Скидка", Скидка);
ПараметрыПозиции.Вставить("СуммаБезСкидки", ВыборкаСтрокТовары.Сумма + Скидка);
КонецЕсли;

ПараметрыПозиции.Вставить("Сумма", ВыборкаСтрокТовары.Сумма);

#Если ВнешнееСоединение Тогда
WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
#КонецЕсли

Если ВыборкаСтрокТовары.Метка = 3 Тогда
ПозицииТара.Добавить(ПараметрыПозиции);
СуммаТара      = СуммаТара    + ВыборкаСтрокТовары.Сумма;
Иначе
Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
ВсегоСкидок    = ВсегоСкидок + Скидка;
ВсегоБезСкидок = Сумма       + ВсегоСкидок;
ПозицииТовары.Добавить(ПараметрыПозиции);
КонецЕсли;

КонецЦикла;

ПараметрыПечати.Вставить("ПозицииТовары", ПозицииТовары);
ПараметрыПечати.Вставить("ПозицииТара", ПозицииТара);

ПараметрыПечати.Вставить("ЕстьТара", ?(ПозицииТара.Количество() = 0, ложь, истина));

ПараметрыПечати.Вставить("ВсегоТара", ОбщегоНазначения.ФорматСумм(СуммаТара));

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

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

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

// Вывести подписи
Если Тип = "Счет" Тогда


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



КонецЕсли;
#Если ВнешнееСоединение Тогда
WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПечати);
#КонецЕсли

Возврат ПараметрыПечати;

КонецФункции //ПолучитьПараметрыПечатиСчетаЗаказа()


При отправке на печать выдает ошибку
{Документ.СчетНаОплатуПокупателю.МодульОбъекта(519)}: Ошибка при вызове метода контекста (Выполнить)
   ЗапросТовары = Запрос.Выполнить().Выгрузить();
по причине:
{(75, 2)}: Поле не найдено "КодУКТВЭД"
<<?>>КодУКТВЭД,

И отправляет в этот блок

Функция ПечатьСчетаЗаказа(Тип)


ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды    = Истина;
Колонка         = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды    = Истина;
Колонка         = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды    = Ложь;
Колонка         = "";
ТекстКодАртикул = "Код";
КонецЕсли;

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

Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

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

ЗапросТовары = Запрос.Выполнить().Выгрузить();

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

| Сумма
|ИЗ
| Документ.СчетНаОплатуПокупателю.ВозвратнаяТара КАК СчетНаОплатуПокупателю
|
|ГДЕ
| СчетНаОплатуПокупателю.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| НомерСтрокиТЧ
|";

ЗапросТара = Запрос.Выполнить().Выгрузить();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетНаОплатуПокупателю_СчетЗаказ";

Макет = ПолучитьМакет("СчетЗаказ");

// печать производится на языке, указанном в настройках пользователя
КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
Макет.КодЯзыкаМакета = КодЯзыкаПечать;

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

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

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

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

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

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

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

ОбластьМакета = Макет.ПолучитьОбласть("ДопИнформация");
Для каждого СтруктураСтроки Из МассивСтруктурСтрок Цикл
ОбластьМакета.Параметры.Заполнить(СтруктураСтроки);
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
КонецЕсли;

ЕстьСкидки = ЗапросТовары.Итог("Скидка") + ЗапросТовары.Итог("АвтоматическаяСкидка") <> 0;

Если ВыводитьКоды Тогда
ОбластьШапки  = "ШапкаСКодом";
ОбластьСтроки = "СтрокаСКодом";
Иначе
ОбластьШапки  = "ШапкаТаблицы";
ОбластьСтроки = "Строка";
Конецесли;

Если Товары.Итог("КоличествоМест") > 0 Тогда
ОбластьШапки  = ОбластьШапки  + "Мест";
ОбластьСтроки = ОбластьСтроки + "Мест";
Конецесли;

Если ЕстьСкидки Тогда
ОбластьШапки  = ОбластьШапки  + "Скидка";
ОбластьСтроки = ОбластьСтроки + "Скидка";
КонецЕсли;

// Вывести табличную часть (товары и услуги)
ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
Если ВыводитьКоды Тогда
ОбластьМакета.Параметры.Колонка = Колонка;
КонецЕсли;

Суффикс = "";
Если Шапка.УчитыватьНДС Тогда
Если Шапка.СуммаВключаетНДС Тогда
Суффикс  = Суффикс  + НСтр("ru=' с ';uk=' з '",КодЯзыкаПечать);
Иначе
Суффикс  = Суффикс  + НСтр("ru=' без ';uk=' без '",КодЯзыкаПечать);
КонецЕсли;
Суффикс = Суффикс  + НСтр("ru='НДС';uk='ПДВ'",КодЯзыкаПечать);
КонецЕсли;
ОбластьМакета.Параметры.Цена  = НСтр("ru='Цена';uk='Ціна'",КодЯзыкаПечать) + Суффикс;
ОбластьМакета.Параметры.Сумма = НСтр("ru='Сумма';uk='Сума'",КодЯзыкаПечать)+ Суффикс;

ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);

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

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

Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;

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

Если ВыводитьКоды Тогда
ОбластьМакета.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
КонецЕсли;

// Скидка может быть NULL
ПроцентСкидки = ?(НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка),0,ВыборкаСтрокТовары.Скидка)
              + ?(НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.АвтоматическаяСкидка),0,ВыборкаСтрокТовары.АвтоматическаяСкидка);

Скидка = ?(ПроцентСкидки < 100, ВыборкаСтрокТовары.Сумма  / (100 - ПроцентСкидки)* ПроцентСкидки, ВыборкаСтрокТовары.Цена * ВыборкаСтрокТовары.Количество);

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

ТабДокумент.Вывести(ОбластьМакета);

Сумма    = Сумма    + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;
ВсегоСкидок    = ВсегоСкидок + Скидка;
ВсегоБезСкидок = Сумма + ВсегоСкидок;

КонецЦикла;

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

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

// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
// НДС
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС,,"''");
ОбластьМакета.Параметры.НДС      = ?(Шапка.СуммаВключаетНДС, НСтр("ru='В том числе НДС:';uk='У тому числі ПДВ:'",КодЯзыкаПечать), НСтр("ru='Сумма НДС:';uk='Сума ПДВ:'",КодЯзыкаПечать));
ТабДокумент.Вывести(ОбластьМакета);

// всего с НДС (если сумма не включает НДС)
Если НЕ Шапка.СуммаВключаетНДС Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(Сумма + СуммаНДС);
ОбластьМакета.Параметры.НДС      = НСтр("ru='Всего с НДС:';uk='Усього з ПДВ:'",КодЯзыкаПечать);
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЕсли;

// Вывести таблицу с возвратной тарой
ОбластьШапки  = СтрЗаменить(ОбластьШапки,"Мест","");
ОбластьСтроки = СтрЗаменить(ОбластьСтроки,"Мест","");
ОбластьШапки  = СтрЗаменить(ОбластьШапки,"Скидка","")+"Тара";
ОбластьСтроки = СтрЗаменить(ОбластьСтроки,"Скидка","")+"Тара";

Если ЗапросТара.Количество() > 0 Тогда

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

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

ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);

СуммаТара    = 0;

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

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

Если ВыводитьКоды Тогда
ОбластьМакета.Параметры.КодАртикул = ВыборкаСтрокТара.КодАртикул;
КонецЕсли;

ТабДокумент.Вывести(ОбластьМакета);

СуммаТара = СуммаТара + ВыборкаСтрокТара.Сумма;

КонецЦикла;

ОбластьИтого = "ИтогоТара";

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

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

КонецЕсли;

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

ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента,КодЯзыкаПечать)
+ ?(НЕ Шапка.УчитыватьНДС, "", Символы.ПС + НСтр("ru='В т.ч. НДС: ';uk='У т.ч. ПДВ: '",КодЯзыкаПечать) + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаНДС, Шапка.ВалютаДокумента, КодЯзыкаПечать));
ТабДокумент.Вывести(ОбластьМакета);

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


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

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

КонецФункции


Tyts

Цитата: kot488 от 10 фев 2017, 15:08
При отправке на печать выдает ошибку
{Документ.СчетНаОплатуПокупателю.МодульОбъекта(519)}: Ошибка при вызове метода контекста (Выполнить)
   ЗапросТовары = Запрос.Выполнить().Выгрузить();
по причине:
{(75, 2)}: Поле не найдено "КодУКТВЭД"
<<?>>КодУКТВЭД,

И отправляет в этот блок

А что отладчик говорит?

alex0402

Цитата: kot488 от 10 фев 2017, 15:08| СчетНаОплату.КодУКТВЭД                 КАК КодУКТВЭД,

В счете на оплату нет поля КодУКТВЭД.
Может так:

СчетНаОплату.Номенклатура.КодУКТВЭД                 КАК КодУКТВЭД,[/quote]
Спасибо за Сказать спасибо

kot488

Цитата: alex0402 от 11 фев 2017, 12:59
Цитата: kot488 от 10 фев 2017, 15:08| СчетНаОплату.КодУКТВЭД                 КАК КодУКТВЭД,

В счете на оплату нет поля КодУКТВЭД.
Может так:

СчетНаОплату.Номенклатура.КодУКТВЭД                 КАК КодУКТВЭД,[/quote]

Неа, ошибка осталась та же(

Теги:

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

Рейтинг@Mail.ru

Поиск