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

Вывести в печатную форму процентную ставку НДС %

Автор Антон Андреевич Седнев, 11 фев 2016, 10:44

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

Антон Андреевич Седнев

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

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

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

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

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

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

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

ПараметрыПечати.Вставить("УчитыватьНДС", Шапка.УчитыватьНДС);
    ПараметрыПечати.Вставить("ЕстьСкидки", Ложь);
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
ПараметрыПечати.ЕстьСкидки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
    ПараметрыПечати.Вставить("ТекстЗаголовка", ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Коммерческое предложение"));
СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
ПараметрыПечати.Вставить("ТекстПокупатель", ?(Тип = "Счет", "Покупатель:", "Заказчик:"));
ПараметрыПечати.Вставить("ПредставлениеПолучателя", ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,"));
ОгранизацияКратко = Шапка.Организация.Ссылка;
ПараметрыПечати.Вставить("Организация", ОгранизацияКратко); 
ОрганизацияПолноеНаименование = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Шапка.Организация.НаименованиеПолное," ");
Если СокрЛП(Лев(Шапка.Организация.Наименование, 3)) = "ООО" Тогда
ФормаСобственности =  ОрганизацияПолноеНаименование[0] + " " + ОрганизацияПолноеНаименование[1]+ " " + ОрганизацияПолноеНаименование[2]+ " " +  ОрганизацияПолноеНаименование[3];
    Но = СтрЗаменить(Шапка.Организация,"ООО","");
НазваниеОрганизации = Врег(СокрЛП(Но));
ИначеЕсли СокрЛП(Лев(Шапка.Организация.Наименование, 3)) = "ОАО" ИЛИ СокрЛП(Лев(Шапка.Организация.Наименование, 3)) = "ЗАО" Тогда
ФормаСобственности =  ОрганизацияПолноеНаименование[0] + " " + ОрганизацияПолноеНаименование[1]+ " " + ОрганизацияПолноеНаименование[2];
Если СокрЛП(Лев(Шапка.Организация.Наименование, 3)) = "ОАО" тогда
  Но = СтрЗаменить(Шапка.Организация,"ОАО","");
  Иначе
  Но = СтрЗаменить(Шапка.Организация,"ЗАО","");
КонецЕсли;  
НазваниеОрганизации = Врег(СокрЛП(Но));
ИначеЕсли СокрЛП(Лев(Шапка.Организация.Наименование, 3)) = "ЧП" Тогда
ФормаСобственности =  ОрганизацияПолноеНаименование[0] + " " + ОрганизацияПолноеНаименование[1];
НазваниеОрганизации = ОрганизацияПолноеНаименование[2]+ " "+ ОрганизацияПолноеНаименование[3]+ " "+ ОрганизацияПолноеНаименование[4];
КонецЕсли;
ПараметрыПечати.Вставить("ФормаСобственности", ФормаСобственности);

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

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

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

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

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

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

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

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


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

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

Позиции.Добавить(ПараметрыПозиции);
       Изображения =  ВыборкаСтрокТовары.Изображение.Хранилище.Получить();

КонецЦикла;
ПараметрыПечати.Вставить("Позиции", Позиции);

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

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

СсылкаНаДоговор = СсылкаНаОбъект.ДоговорКонтрагента;
Если СсылкаНаДоговор.ПроцентПредоплаты = 0 и СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности > 0 Тогда
ТипОплаты = "оплата";
Остальное = " в течение " + СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности + " ("+ СклонениеЦифр(СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности)+") банковских дней с момента получения продукции.";
ИначеЕсли СсылкаНаДоговор.ПроцентПредоплаты = 100 и СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности = 0 Тогда
ТипОплаты = Строка(СсылкаНаДоговор.ПроцентПредоплаты) + "%-я предоплата";
Остальное = ".";
ИначеЕсли  СсылкаНаДоговор.ПроцентПредоплаты < 100 и СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности > 0 Тогда
ТипОплаты = Строка(СсылкаНаДоговор.ПроцентПредоплаты) + "%-я предоплата";
Остальное = ". Остальные " + Число(100 - СсылкаНаДоговор.ПроцентПредоплаты) + "% оплаты - в течение " + СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности + " (" + СклонениеЦифр(СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности) +") банковских дней с момента получения продукции.";
ИначеЕсли СсылкаНаДоговор.ПроцентПредоплаты = 0 и СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности = 0 Тогда
ТипОплаты = "оплата";
Остальное = " согласно спецификациям к договору.";
ИначеЕсли  СсылкаНаДоговор.ПроцентПредоплаты < 100 и СсылкаНаДоговор.ДопустимоеЧислоДнейЗадолженности = 0 Тогда
ТипОплаты = Строка(СсылкаНаДоговор.ПроцентПредоплаты) + "%-я предоплата";
Остальное = ". Остальные " + Число(100 - СсылкаНаДоговор.ПроцентПредоплаты) + "% оплаты - сразу после отгрузки продукции.";
КонецЕсли;
    // Вывести подписи
ПараметрыПечати.Вставить("ТипОплаты", ТипОплаты);
     ПараметрыПечати.Вставить("Остальное", Остальное);
        ФИООтветственный = СокрЛП(Шапка.Ответственный); 
    ПараметрыПечати.Вставить("ФИООтветственный", ФИООтветственный);

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

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

Rasty

Посмотрите в отладчике что у вас получается в таблице, я выполнил ваш запрос у себя, у меня вот что получилось

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Антон Андреевич Седнев

При открытии формы 1С ругается
Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(81, 3)}: Синтаксическая ошибка "СчетНаОплату.СтавкаНДС"
<<?>>СчетНаОплату.СтавкаНДС

Rasty


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

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

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Антон Андреевич Седнев

Ураааа) Спасибо огромное Rasty, с понедельника мучал запрос, а всего то запятую пропустил :)

Теги:

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

Рейтинг@Mail.ru

Поиск