Имя: Пароль:
1C
 
Как получить сумму НДС?
0 Kate123
 
06.05.08
16:45
Как из документа поступление товаров и услуг получить сумму ндс? Я через запрос получаю данные из этого документа, никак не могу получить сумму ндс.
1 zbv
 
06.05.08
16:53
давай код... чтоб долго не мучать ;-)
2 baklan22
 
06.05.08
16:55
Может что то типа
Запрос.Текст = "ВЫБРАТЬ
                      |    Исходный.Контрагент КАК Контрагент,
                      |    ВЫБОР
                      |        КОГДА Исходный.Номер ЕСТЬ NULL
                      |            ТОГДА """"
                      |        ИНАЧЕ Исходный.Номер
                      |    КОНЕЦ КАК Номер,
                      |    Исходный.Дата КАК Дата,
                      |    СУММА(Исходный.НДС10) КАК НДС10,
                      |    СУММА(Исходный.НДС18) КАК НДС18,
                      |    СУММА(Исходный.Сумма10 + Исходный.Сумма18) КАК Всего,
                      |    СУММА(Исходный.Сумма10 - Исходный.НДС10) КАК Сумма10,
                      |    СУММА(Исходный.Сумма18 - Исходный.НДС18) КАК Сумма18,
                      |    СУММА(Исходный.Сумма10) КАК Включая10,
                      |    СУММА(Исходный.Сумма18) КАК Включая18
                      |ИЗ
                      |    (ВЫБРАТЬ
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Номер КАК Номер,
                      |        СУММА(0) КАК Сумма18,
                      |        СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма10,
                      |        СУММА(ПоступлениеТоваровУслугТовары.СуммаНДС) КАК НДС10,
                      |        СУММА(0) КАК НДС18
                      |    ИЗ
                      |        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                      |    ГДЕ
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
                      |        И ПоступлениеТоваровУслугТовары.Ссылка.ВидОперации = &ВидОперации
                      |        И ПоступлениеТоваровУслугТовары.СтавкаНДС = &СтавкаНДС10
                      |        И ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
                      |        И ПоступлениеТоваровУслугТовары.Ссылка.ВидОперации = &ВидОперации
                      |    
                      |    СГРУППИРОВАТЬ ПО
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Дата,
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Номер
                      |    
                      |    ОБЪЕДИНИТЬ ВСЕ
                      |    
                      |    ВЫБРАТЬ
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Дата,
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Номер,
                      |        ПоступлениеТоваровУслугТовары.Сумма,
                      |        0,
                      |        0,
                      |        ПоступлениеТоваровУслугТовары.СуммаНДС
                      |    ИЗ
                      |        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                      |    ГДЕ
                      |        ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
                      |        И ПоступлениеТоваровУслугТовары.Ссылка.ВидОперации = &ВидОперации
                      |        И ПоступлениеТоваровУслугТовары.СтавкаНДС = &СтавкаНДС18
                      |        И ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА) КАК Исходный
                      |
                      |СГРУППИРОВАТЬ ПО
                      |    Исходный.Контрагент,
                      |    Исходный.Дата,
                      |    ВЫБОР
                      |        КОГДА Исходный.Номер ЕСТЬ NULL
                      |            ТОГДА """"
                      |        ИНАЧЕ Исходный.Номер
                      |    КОНЕЦ
                      |
                      |УПОРЯДОЧИТЬ ПО
                      |    Номер,
                      |    Исходный.Контрагент.Наименование
                      |ИТОГИ
                      |    СУММА(НДС10),
                      |    СУММА(НДС18),
                      |    СУММА(Всего),
                      |    СУММА(Сумма10),
                      |    СУММА(Сумма18),
                      |    СУММА(Включая10),
                      |    СУММА(Включая18)
                      |ПО
                      |    ОБЩИЕ,
                      |    Контрагент";
       
       Запрос.УстановитьПараметр("ВидОперации", Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия);
3 Kate123
 
06.05.08
17:10
Запрос = Новый Запрос;
   ТекстЗапроса = "ВЫБРАТЬ
                  |    ПоступлениеТоваровУслуг.Комментарий КАК Коммент,
                  |    ПоступлениеТоваровУслуг.Дата КАК ДатаНакл,
                  |    ПоступлениеТоваровУслуг.Номер КАК НомерНакл,
                  |    ПоступлениеТоваровУслуг.Контрагент КАК Контр,
                  |    ПоступлениеТоваровУслуг.Контрагент.ИНН КАК КИНН,
                  |    ПоступлениеТоваровУслуг.Контрагент.КПП КАК ККПП,
                  |    ПоступлениеТоваровУслуг.СуммаДокумента КАК СумДок
                  |ИЗ
                  |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                  |ГДЕ
                  |    ПоступлениеТоваровУслуг.Проведен = ИСТИНА
                  |    И ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    ДатаНакл";
                 
   Запрос.Текст = ТекстЗапроса;
   Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач));
   Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
   
   ТабДок = Новый ТабличныйДокумент;
       
   Макет = ПолучитьМакет("Макет");
   
   Загл = Макет.ПолучитьОбласть("Заголовок");
   Загл.Параметры.НачДата = Формат(ДатаНач, "ДФ=дд.ММ.гг");
   Загл.Параметры.КонДата = Формат(ДатаКон, "ДФ=дд.ММ.гг");
   ТабДок.Вывести(Загл);
   
   Шапка = Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(Шапка);
   
   Строка = Макет.ПолучитьОбласть("Строка");
   К=0;
   ТЗ = Запрос.Выполнить().Выгрузить();
       Для Каждого ТекДок Из ТЗ Цикл
       К=К+1;
       Строка.Параметры.НомерСтроки = К;
       Строка.Параметры.Дата = ТекДок.Коммент;
       Строка.Параметры.ДатаНакл =    Формат(ТекДок.ДатаНакл,"ДЛФ=Д");
       Строка.Параметры.НомерНакл =   ТекДок.НомерНакл;
       Строка.Параметры.Контрагент = ТекДок.Контр;
       Строка.Параметры.КИНН =     ТекДок.КИНН;
       Строка.Параметры.ККПП =     ТекДок.ККПП;
       Строка.Параметры.СумДок = ТекДок.СумДок;
       Строка.Параметры.СумНДС = ?????;
           
       ТабДок.Вывести(Строка);

       ТабДок.ОтображатьСетку = 0;      
           ТабДок.ТолькоПросмотр = Истина;        
           ТабДок.Показать();
       КонецЦикла;
4 zbv
 
06.05.08
17:16
(3) обращайся к табличным частям... в (2) есть пример.
можно сразу из регистра тянуть - если НДС выделяется...
5 Wehrmacht
 
06.05.08
17:23
Конкретно для уже текущей конструкции проще будет выдернуть еще ссылку в запросе, тогда можно будет написать Строка.Параметры.СумНДС = ТекДок.Ссылка.Товары.Итог("СуммаНДС");
6 Wehrmacht
 
06.05.08
17:25
(5) +ТекДок.Ссылка.Услуги.Итог("СуммаНДС")
7 НЕА123
 
06.05.08
17:25
(5) а без объекта разве можно?
8 НЕА123
 
06.05.08
17:28
+(7) хе. кажись, да.
9 Wehrmacht
 
06.05.08
17:31
(8)Я, честно говоря, сам был не уверен, но расписывать и тем более проверять было лениво :)
10 Kate123
 
07.05.08
09:04
Решила сделать следующим образом:
Запрос = Новый Запрос;
   ТекстЗапроса = "ВЫБРАТЬ
                  |    ПоступлениеТоваровУслуг.Дата КАК ДатаНакл,
                  |    ПоступлениеТоваровУслуг.Номер КАК НомерНакл,
                  |    ПоступлениеТоваровУслуг.Контрагент КАК Контр,
                  |    ПоступлениеТоваровУслуг.Контрагент.ИНН КАК КИНН,
                  |    ПоступлениеТоваровУслуг.Контрагент.КПП КАК ККПП,
                  |    ПоступлениеТоваровУслуг.СуммаДокумента КАК СумДок,
                  |    СУММА(ПоступлениеТоваровУслугТовары.СуммаНДС) КАК СуммаНДСт,
                  |    СУММА(ПоступлениеТоваровУслугУслуги.СуммаНДС) КАК СуммаНДСу
                  |ИЗ
                  |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                  |        ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка,
                  |    Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
                  |ГДЕ
                  |    ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ПоступлениеТоваровУслуг.Дата,
                  |    ПоступлениеТоваровУслуг.Номер,
                  |    ПоступлениеТоваровУслуг.Контрагент,
                  |    ПоступлениеТоваровУслуг.Контрагент.ИНН,
                  |    ПоступлениеТоваровУслуг.Контрагент.КПП,
                  |    ПоступлениеТоваровУслуг.СуммаДокумента
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    ДатаНакл";

Вот теперь как правильно записать, чтобы если товары так СуммаНДС по товарам выводилась, если услуги, так по услугам
       Строка = Макет.ПолучитьОбласть("Строка");
   ТЗ = Запрос.Выполнить().Выгрузить();
   Для Каждого ТекДок Из ТЗ Цикл
       Строка.Параметры.НомерСтроки = К;
       Строка.Параметры.ДатаНакл =    Формат(ТекДок.ДатаНакл,"ДЛФ=Д");
       Строка.Параметры.НомерНакл =   ТекДок.НомерНакл;
               Строка.Параметры.Контрагент = ТекДок.Контр;
       Строка.Параметры.КИНН =     ТекДок.КИНН;
       Строка.Параметры.ККПП =     ТекДок.ККПП;
               Строка.Параметры.СумДок = ТекДок.СумДок;
       Строка.Параметры.СумНДС = ТекДок.СуммаНДСт; ??????            
       ТабДок.Вывести(Строка);
       ТабДок.ОтображатьСетку = 0;        
               ТабДок.ТолькоПросмотр = Истина;
         ТабДок.Показать();
       КонецЦикла;
Ставила условие Если Товары[0].Наименование.Услуги = Истина - не работает
11 denk
 
07.05.08
09:17
(10) А где в твоем коде делается проверка номенклатуры на принадлежность товарам/услугам?
12 Kate123
 
07.05.08
09:36
(11)Вот я и хотела узнать как сделать эту проверку
13 Vbif
 
07.05.08
09:39
А одновременно не может быть НДС и по товарам и по услугам?
14 Kate123
 
07.05.08
09:41
Нет, в документе поступления указывается только либо товар, либо услуга
15 denk
 
07.05.08
09:42
(12) В запрос нужно добавить поле Номенклатура или ВидНоменклатуры. А потом по нему проверять.
16 Vbif
 
07.05.08
09:42
А просто ?(ТекДок.СуммаНДСт = 0, ТекДок.СуммаНДСу, ТекДок.СуммаНДСт) не катит?
17 случайный1Сник
 
07.05.08
10:01
(10) Для чего тут ЛЕВОЕ СОЕДИНЕНИЕ? Пользуйтесь объединением, раз уж взялись за табличные части.
Теперь про "Если Товары[0].Наименование.Услуги = Истина". Товары[0] -- это табличная часть какого документа в контексте выполнения данного кода? Не говоря о том, что Товары[0].Наименование -- это вообще строка, ссылка на элемент справочника -- в Товары[0].Номенклатура.
Используйте в запросе конструкцию ВЫБОР.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.