![]() |
![]() |
![]() |
|
Как в запросе посчитать НДС? | ☑ | ||
---|---|---|---|---|
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
|
ой! ИНАЧЕ Цены.Цена еще раз забыл добавить...
так вроде получилось |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |