Имя: Пароль:
1C
 
Как в запросе посчитать НДС?
0 inkubu
 
13.02.07
13:41
Извиняюсь за глупый вопрос, но как в запросе получить цену умноженную на ставку ндс?
1 MikleV
 
13.02.07
13:42
иех)
это откуда ж нада дёргать, чтоб там сразу суммы не было с НДС.
2 inkubu
 
13.02.07
13:44
запрос в прайсе, цены все без учета НДС...
3 Ц_У
 
13.02.07
13:47
Цена*1,18 при ставке 18% и т.п.
4 MikleV
 
13.02.07
13:50
ВЫБОР КОГДА СтавкаНДС = &Перечисления
тогда
бла




&Перечисления  суть ставка ндс
5 inkubu
 
13.02.07
14:10
все равно пишет неверные параметры
6 undertaker
 
13.02.07
14:38
а если на текст запроса поглядеть?
7 inkubu
 
13.02.07
14:42
ТекстЗапроса = "
   |ВЫБРАТЬ
   |    СписокНоменклатуры.Номенклатура               КАК Номенклатура,
   |    Цены.ЕдиницаИзмерения           КАК ЦеныЕдиницаИзмерения,
   |    ВЫБОР КОГДА СписокНоменклатуры.ХарактеристикаНоменклатуры ЕСТЬ NULL ТОГДА
   |        &ПустаяХарактеристика ИНАЧЕ СписокНоменклатуры.ХарактеристикаНоменклатуры КОНЕЦ
   |                                    КАК ХарактеристикаНоменклатуры,
   |    ЦеныИзСправочника.ТипЦен        КАК ТипЦен,
   |    ВЫБОР КОГДА Цены.ТипЦен ЕСТЬ NULL ТОГДА
   |        ЦеныИзСправочника.Валюта ИНАЧЕ Цены.Валюта КОНЕЦ
   |                                      КАК Валюта,
   |    ВЫБОР КОГДА Цены.ТипЦен ЕСТЬ NULL ТОГДА
   |        ЦеныИзСправочника.ПроцентСкидкиНаценки ИНАЧЕ Цены.ПроцентСкидкиНаценки КОНЕЦ
   |                                      КАК ПроцентСкидкиНаценки,
   |    ВЫБОР КОГДА Цены.ТипЦен ЕСТЬ NULL ТОГДА
   |        ЦеныИзСправочника.Курс ИНАЧЕ Цены.Курс КОНЕЦ
   |                                      КАК Курс,
   |    ВЫБОР КОГДА Цены.ТипЦен ЕСТЬ NULL ТОГДА
   |        ЦеныИзСправочника.Кратность ИНАЧЕ Цены.Кратность КОНЕЦ
   |                                      КАК Кратность,
   |    ЦеныИзСправочника.ПорядокОкругления КАК ПорядокОкругления,
   |    ЦеныИзСправочника.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
   |    Остатки.ОстатокКоличество   КАК НоменклатураОстатокКоличество,
   |    ВЫБОР КОГДА Цены.Цена ЕСТЬ NULL ТОГДА
   |        0 ИНАЧЕ Цены.Цена КОНЕЦ     КАК Цена
   |ИЗ
   |    (Выбрать
   |        Ном.Владелец КАК Номенклатура,
   |        Ном.Владелец.Представление КАК НоменклатураПредставление,
   |        Ном.Ссылка   КАК ХарактеристикаНоменклатуры
   |        ИЗ
   |        (ВЫБРАТЬ
   |            ХарактеристикиНоменклатуры.Владелец,
   |            ХарактеристикиНоменклатуры.Ссылка
   |        ИЗ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
   |        ОБЪЕДИНИТЬ
   |        ВЫБРАТЬ
   |            Номенклатура.Ссылка,
   |            &ПустаяХарактеристика
   |        ИЗ        Справочник.Номенклатура КАК Номенклатура
   |        ) КАК Ном
   |        //Упорядочить По Ном.Номенклатура
   |    ) КАК СписокНоменклатуры
   |    ПОЛНОЕ СОЕДИНЕНИЕ
   |    (ВЫБРАТЬ
   |        СправочникЦен.Ссылка                   КАК ТипЦен,
   |        СправочникЦен.ВалютаЦены               КАК Валюта,
   |        СправочникЦен.ПроцентСкидкиНаценки     КАК ПроцентСкидкиНаценки,
   |        СправочникЦен.ПорядокОкругления        КАК ПорядокОкругления,
   |        СправочникЦен.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
   |        ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс ЕСТЬ NULL ИЛИ КурсыВалютСрезПоследних.Курс = 0 ТОГДА
   |            1 ИНАЧЕ КурсыВалютСрезПоследних.Курс КОНЕЦ
   |                                           КАК Курс,
   |        ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность ЕСТЬ NULL ИЛИ КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
   |            1 ИНАЧЕ КурсыВалютСрезПоследних.Кратность КОНЕЦ
   |                                           КАК Кратность
   |    ИЗ
   |        Справочник.ТипыЦенНоменклатуры КАК СправочникЦен
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПрайса)           КАК КурсыВалютСрезПоследних
   |        ПО СправочникЦен.ВалютаЦены = КурсыВалютСрезПоследних.Валюта
   |        ГДЕ СправочникЦен.Ссылка В (&ТипыЦен)
   |    ) КАК ЦеныИзСправочника
   |    ПО ИСТИНА
   |    ЛЕВОЕ СОЕДИНЕНИЕ
   |    (ВЫБРАТЬ
   |        Рег.Номенклатура                  КАК Номенклатура,
   |        Рег.ХарактеристикаНоменклатуры    КАК ХарактеристикаНоменклатуры,
   |        Рег.ТипЦен.Ссылка                 КАК ТипЦен,
   |        Рег.Цена                          КАК Цена,
   |        Рег.ЕдиницаИзмерения              КАК ЕдиницаИзмерения,
   |        Рег.Валюта                        КАК Валюта,
   |        ВЫБОР КОГДА Рег.ПроцентСкидкиНаценки ЕСТЬ NULL ТОГДА
   |            0 ИНАЧЕ Рег.ПроцентСкидкиНаценки КОНЕЦ
   |                                          КАК ПроцентСкидкиНаценки,
   |        ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс ЕСТЬ NULL ИЛИ КурсыВалютСрезПоследних.Курс = 0 ТОГДА
   |            1 ИНАЧЕ КурсыВалютСрезПоследних.Курс КОНЕЦ
   |                                          КАК Курс,
   |        ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность ЕСТЬ NULL ИЛИ КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
   |            1 ИНАЧЕ КурсыВалютСрезПоследних.Кратность КОНЕЦ
   |                                          КАК Кратность
   |    ИЗ
   |        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаПрайса, ТипЦен В (&ТипыЦен)) КАК Рег
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПрайса)           КАК КурсыВалютСрезПоследних
   |        ПО Рег.Валюта = КурсыВалютСрезПоследних.Валюта
   |    ) КАК Цены
   |    ПО СписокНоменклатуры.Номенклатура               = Цены.Номенклатура
   |    И СписокНоменклатуры.ХарактеристикаНоменклатуры = Цены.ХарактеристикаНоменклатуры
   |    И  ЦеныИзСправочника.ТипЦен = Цены.ТипЦен
   |    ЛЕВОЕ СОЕДИНЕНИЕ
   |(ВЫБРАТЬ
   |    НесвернутыеОстатки.Номенклатура КАК Номенклатура,
   |    НесвернутыеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |    Сумма(НесвернутыеОстатки.ОстатокКоличество) КАК ОстатокКоличество,
   |    НесвернутыеОстатки.Склад КАК Склад
   | ИЗ
   |    (ВЫБРАТЬ
   |        Ост.Номенклатура.Ссылка КАК Номенклатура,
   |        Ост.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |        Ост.КоличествоОстаток КАК ОстатокКоличество,
   |        Ост.Склад КАК Склад
   |     Из
   |        РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПрайса) КАК Ост
   |
   |    ОБЪЕДИНИТЬ ВСЕ
   |
   |    ВЫБРАТЬ
   |        НТТ.Номенклатура.Ссылка КАК Номенклатура,
   |        НТТ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |        НТТ.КоличествоОстаток КАК ОстатокКоличество,
   |        НТТ.Склад КАК Склад
   |     Из
   |        РегистрНакопления.ТоварыВНеавтоматизированныхТорговыхТочках.Остатки(&ДатаПрайса) КАК НТТ
   |    ) КАК НесвернутыеОстатки
   |{ГДЕ НесвернутыеОстатки.Склад.* КАК Склад, НесвернутыеОстатки.Склад.ВидСклада.* КАК ВидСклада}
   |
   | СГРУППИРОВАТЬ ПО
   | НесвернутыеОстатки.Номенклатура,
   | НесвернутыеОстатки.ХарактеристикаНоменклатуры,
   | НесвернутыеОстатки.Склад
   |
   | ) КАК Остатки
   |     ПО(Остатки.Номенклатура               = СписокНоменклатуры.Номенклатура)
   |     И (Остатки.ХарактеристикаНоменклатуры = СписокНоменклатуры.ХарактеристикаНоменклатуры)
   |    ГДЕ Не СписокНоменклатуры.Номенклатура.Набор
   |";

запрос из стандартного прайса
8 Леха Дум
 
13.02.07
15:01
ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) * (100 + ЕСТЬNULL(СтавкиНДС.Ставка.Ставка, 0)) / 100 КАК ЧИСЛО(15, 2)) КАК ЦенаСНДС
правда нужно еще проверять содержит выбранный тип цен НДС или нет
9 inkubu
 
13.02.07
16:09
ВЫБОР КОГДА Цены.Цена ЕСТЬ NULL ТОГДА
   |        0 ИНАЧЕ Цены.Цена КОНЕЦ     КАК Цена

вот сюда нужно как то НДС привязать... Цены.Цена * 1.18 не подойдет ндс то разные везде
10 Леха Дум
 
13.02.07
17:43
А где ставки НДС хранятся? Левым соединением коннектишь таблицу с НДС и выбираешь:

|ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) * (100 + ЕСТЬNULL(СтавкиНДС.Ставка.Ставка,0)) / 100 КАК ЧИСЛО(15, 2)) КАК Цена

а твою конструкцию
ВЫБОР КОГДА Цены.Цена ЕСТЬ NULL ТОГДА
   |        0 ИНАЧЕ Цены.Цена КОНЕЦ     КАК Цена

нужно делать короче:

|ЕСТЬNULL(Цены.Цена, 0)  КАК Цена
11 inkubu
 
14.02.07
07:46
ставки хранятся в Перечисления.СтавкиНДС
12 Леха Дум
 
14.02.07
09:10
ну и что, что в перечислении - они должны как то связываться с номенклатурой - скорее всего через рег.сведений
13 Feanor
 
14.02.07
09:19
(12) Скорее всего через реквизит номенклатуры. В УПП так.
14 inkubu
 
14.02.07
09:21
в номенклатуре есть реквизит СтавкаНДС но он ссылочный и при умножении на него выдает не верный параметр
15 Feanor
 
14.02.07
09:23
(14) Дык ты сравнивай его с перечислением :)
16 inkubu
 
14.02.07
09:25
если бы еще и знать как))
17 Feanor
 
14.02.07
09:30
Когда Номенклатура.СтавкаНДС = &СтавкаНДС_18 Тогда СуммаНДС = Сумма * 0.18
Это если у тебя НДС не включен в сумму.
18 Леха Дум
 
14.02.07
09:32
Книжки умные читай:)
Только хотел написать как в (17)
перед выполнением запроса не забудь добавить еще:
Запрос.УстановитьПараметр("Ставка_18", Перечисления.СтавкиНДС.Ставка18);
19 Feanor
 
14.02.07
09:33
(18) Только хотел написать про установить параметр )))
20 inkubu
 
14.02.07
09:36
спасибо! читаю... я только недавно всем этим заниматься начал...
а параметр так для каждой ставки устанавливать?
21 Feanor
 
14.02.07
09:37
(20) верно.
22 inkubu
 
14.02.07
10:28
так стоп! запутался блин...

ТекстЗапроса = "ВЫБРАТЬ
//запрос

после запроса

ТексЗапроса.УстановитьПараметр("Ставка_18", Перечисления.СтавкиНДС.Ставка18);

так?
23 Леха Дум
 
14.02.07
10:38
параметры устанавливаются до того момента как начнешь выполнять запрос:
запрос = новый запрос;
запрос.текст = текстзапроса;
запрос.установитьпараметр("имяПараметра", ЗначениеПараметра);
результат = запрос.Выполнить();
24 Леха Дум
 
14.02.07
10:50
запрос = новый запрос;
запрос.текст = текстзапроса;
запрос.установитьпараметр("Ставка10", Перечисления.СтавкиНДС.НДС10);
запрос.установитьпараметр("Ставка18", Перечисления.СтавкиНДС.НДС18);
запрос.установитьпараметр("Ставка20", Перечисления.СтавкиНДС.НДС20);

Кусок текста запроса:

|ВЫБОР КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС=&Ставка10 ТОГДА Цены.Цена * 1.10 ИНАЧЕ
|ВЫБОР КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС=&Ставка18 ТОГДА Цены.Цена*1.18 ИНАЧЕ
|ВЫБОР КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС = &Ставка20 ТОГДА Цены.Цена * 1.20 ИНАЧЕ Цены.Цена КОНЕЦ КОНЕЦ КОНЕЦ КАК Цена;


|
|
25 Леха Дум
 
14.02.07
10:58
еще до кучи - ставки в перечислении могут быть и НДС10_110, ...20_120... 18_118
т.е. еще 3 к указанным - смотрел в той же УПП :)
26 inkubu
 
14.02.07
10:59
ну эти точно не нужны... у меня УТ
27 Леха Дум
 
14.02.07
10:59
может оказаться что быстрее будет обработать результат запроса в плане затрат процессорного времени :)
28 inkubu
 
14.02.07
11:02
{Обработка.ПечатьПрайсЛиста(1090,16)}: Переменная не определена (ТекстЗапроса)
Запрос.Текст = <<?>>ТекстЗапроса;
29 Леха Дум
 
14.02.07
11:05
гы, текст запроса кто писать будет?
30 inkubu
 
14.02.07
11:08
гы... ступил..))
31 inkubu
 
14.02.07
11:43
{Обработка.ПечатьПрайсЛиста(1301)}: Ошибка при вызове метода контекста (Выполнить): {(62, 4)}: Не задано значение параметра "ПустаяХарактеристика"
<<?>>&ПустаяХарактеристика
Запрос.Выполнить();

а с этим как быть?
32 inkubu
 
14.02.07
12:18
с этим разобрался
33 inkubu
 
14.02.07
12:45
{Обработка.ПечатьПрайсЛиста(930)}: Ошибка при получении значения атрибута контекста (Результат): {(17, 57)}: Не задано значение параметра "Ставка20"
КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС = <<?>>&Ставка20
   ВывестиСтроку(ПостроительОтчета.Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,
по причине:
{(17, 57)}: Не задано значение параметра "Ставка20"
КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС = <<?>>&Ставка20


Блин! а с этим как бороться?
34 ВРедная
 
14.02.07
12:50
Твою мать, Картман! (с)

а этот кусок до выполнения запроса есть?

запрос.установитьпараметр("Ставка10", Перечисления.СтавкиНДС.НДС10);
запрос.установитьпараметр("Ставка18", Перечисления.СтавкиНДС.НДС18);
запрос.установитьпараметр("Ставка20", Перечисления.СтавкиНДС.НДС20);
35 ВРедная
 
14.02.07
12:51
т.е. до слов

Запрос.Выполнить();
36 inkubu
 
14.02.07
12:56
Запрос = новый Запрос;
запрос.установитьпараметр("Ставка10", Перечисления.СтавкиНДС.НДС10);
запрос.установитьпараметр("Ставка18", Перечисления.СтавкиНДС.НДС18);
Запрос.установитьпараметр("Ставка20", Перечисления.СтавкиНДС.НДС20);

   
   //Переменные запроса.
   Запрос.Текст = "ВЫБРАТЬ
|    СписокНоменклатуры.Номенклатура КАК Номенклатура

Есть!
37 inkubu
 
14.02.07
13:02
если в конце запроса пишу Запрос.Выбрать(); , то выдает:

{Обработка.ПечатьПрайсЛиста(1259)}: Ошибка при вызове метода контекста (Выполнить): {(66, 4)}: Не задано значение параметра "ПустаяХарактеристика"
<<?>>&ПустаяХарактеристика
           Запрос.Выполнить();      
по причине:
{(66, 4)}: Не задано значение параметра "ПустаяХарактеристика"
<<?>>&ПустаяХарактеристика
38 ВРедная
 
14.02.07
13:26
Вам поможет курс по основам программирования в v8
39 inkubu
 
14.02.07
13:39
не помешал бы...
40 Леха Дум
 
14.02.07
13:45
(37) любой параметр, который используйте в запросе необходимо сначала передать в запрос! Если в запросе есть &ПустаяХарактеристика, а строки кода

запрос.установитьпараметр("ПустаяХарактеристика", ПланыВидовХарактеристик.ВашПлан.ПустаяСсылка);

перед выполнением запроса нет, будуте получать ошибку.
В интернете ходила метода от 1С - "Механизм запросов" или "Использование запросов в системе 1С:Предприятие 8.0" - поищите - будет вам шастье...
41 Леха Дум
 
14.02.07
13:46
Еще не мало опыта можно почерпнуть в изучении типовых конф...
42 inkubu
 
14.02.07
13:58
Все! дошло! вместо:
запрос = новый запрос;
запрос.текст = текстзапроса;
запрос.установитьпараметр("Ставка10", Перечисления.СтавкиНДС.НДС10);
запрос.установитьпараметр("Ставка18", Перечисления.СтавкиНДС.НДС18);
запрос.установитьпараметр("Ставка20", Перечисления.СтавкиНДС.НДС20);

нужно было:

ПостроительОтчета.Параметры.Вставить( "Ставка10", Перечисления.СтавкиНДС.НДС10);
ПостроительОтчета.Параметры.Вставить("Ставка18", Перечисления.СтавкиНДС.НДС18);
ПостроительОтчета.Параметры.Вставить("Ставка20", Перечисления.СтавкиНДС.НДС20);

Спасибо что помогли!
43 inkubu
 
14.02.07
13:59
осталось привязать это к определенному типу цен
44 Леха Дум
 
14.02.07
14:30
А сразу не вариант было сказать что делаешь через построитель? я фигурные скобки в тексте твоего запроса тока щас разглядел!
45 inkubu
 
14.02.07
14:45
ну извини!
кстати, не знаешь как это к типу цен привязать?)
46 Леха Дум
 
14.02.07
15:36
У цены обычно есть признак - содержит или не содержит НДС, смотри в свою конфу
47 inkubu
 
14.02.07
15:49
цены не содержат НДС. Смысл в том чтоб из типов цен выбирать одну и она будет считать с НДС, а остальные без НДС
48 inkubu
 
14.02.07
15:50
к признаку содержит НДС или нет привязать?
49 Леха Дум
 
14.02.07
16:05
если такой признак у цены есть то да...
50 Леха Дум
 
14.02.07
16:06
Типа такого
Выбор когда Цена.СодержитНДС ТОГДА Цены.Цена ИНАЧЕ <вычисляем цену с ндс> КОНЕЦ
51 inkubu
 
14.02.07
16:10
признак такой есть.

ВЫБОР
   КОГДА Цены.ТипЦен.ЦенаВключаетНДС
       ТОГДА ВЫБОР
               КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС = &Ставка10
                   ТОГДА Цены.Цена * 1.1
               ИНАЧЕ ВЫБОР
                       КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС = &Ставка18
                           ТОГДА Цены.Цена * 1.18
                       ИНАЧЕ ВЫБОР
                               КОГДА СписокНоменклатуры.Номенклатура.СтавкаНДС = &Ставка20
                                   ТОГДА Цены.Цена * 1.2
                               ИНАЧЕ ВЫБОР
                                       КОГДА Цены.Цена ЕСТЬ NULL
                                           ТОГДА 0
                                       ИНАЧЕ Цены.Цена
                                   КОНЕЦ
                           КОНЕЦ
                   КОНЕЦ
           КОНЕЦ
КОНЕЦ


Так?
52 inkubu
 
14.02.07
16:18
ой! ИНАЧЕ Цены.Цена еще раз забыл добавить...
так вроде получилось
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший