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

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

    СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("СчетНаОплату");
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.СсылкаНаОбъект);
    Запрос.Текст = "ВЫБРАТЬ
    |    ВложенныйЗапрос.Номенклатура,
    |    ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(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 - СсылкаНаДоговор.ПроцентПредоплаты) + "% оплаты - сразу после отгрузки продукции.";
    КонецЕсли;    
       // Вывести подписи
    ПараметрыПечати.Вставить("ТипОплаты", ТипОплаты);
     ПараметрыПечати.Вставить("Остальное", Остальное);                
               ФИООтветственный = СокрЛП(Шапка.Ответственный);  
            ПараметрыПечати.Вставить("ФИООтветственный", ФИООтветственный);
    
     Возврат ПараметрыПечати;

КонецФункции
2 cw014
 
11.02.16
10:21
А есть ставка НДС в счете?
3 cw014
 
11.02.16
10:21
ПараметрыПозиции.Вставить("СтавкаНДС", ВыборкаСтрокТовары.СтавкаНДС)
4 cw014
 
11.02.16
10:22
У тебя [  ПараметрыПозиции.Вставить("СтавкаНДС",ВыборкаСтрокТовары.Цена);]
5 Darkmant
 
11.02.16
10:24
я уже от безисходности проверял, работает ли заполнение, при исправлении ПараметрыПозиции.Вставить("СтавкаНДС", ВыборкаСтрокТовары.СтавкаНДС) пишется ошибка
Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(81, 3)}: Синтаксическая ошибка "СчетНаОплату.СтавкаНДС"
<<?>>СчетНаОплату.СтавкаНДС