Имя: Пароль:
1C
1С v8
Как в запросе преобразовать ставку НДС в число
,
0 suvolod
 
02.06.12
21:36
Мне нужно в запросе создать отдельное поле такого вида:
ИсточникДанных.СтоимостьПриход*ИсточникДанных.Номенклатура.СтавкаНДС

Поскольку CтавкаНДС - это перечисление, сижу ломаю голову, как лучше это сделать..
1 Агент Инфостарта
 
02.06.12
21:40
Как-то так, схематично

ИсточникДанных.СтоимостьПриход *
(ВЫБОР КОГДА ИсточникДанных.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкаНДС.Ставка18) ТОГДА
 0.18
ИНАЧЕ
 0
КОНЕЦ)
2 bodik911
 
02.06.12
21:41
Используй ЗНАЧЕНИЕ в Запросе
3 suvolod
 
02.06.12
21:46
громоздко как-то получается.. у меня на самом деле будет кучаполей полей
ИсточникДанных.СтоимостьНачальныйОстатокБезНДС
ИсточникДанных.СтоимостьНачальныйОстатокНДС
ИсточникДанных.СтоимостьПриходБезНДС
ИсточникДанных.СтоимостьПриходНДС
... и т.д

С учетом того, что ставок в конфигураторе 8, на каждое такое поле придется прописывать кучу "ВЫБОР", теперь помножим на сами поля и получим страх божий :)
4 Живой Ископаемый
 
02.06.12
21:49
для этого можно создать ресурсы... ну, в смысле ресурсы,а не "ресурсы"
5 suvolod
 
02.06.12
21:50
про ресурсы не понял.. на какой объект их создать?
6 ChAlex
 
02.06.12
21:59
Можно через СКД. В СКД можно испльзовать вычисляемые поля, а в них функции модулей. функцию написать не проблема, отсюда будет элегантно. остается тлько проверить производительность :)
7 МихаилМ
 
02.06.12
22:05
в использовании реляционных субд
каждый чих - таблица

создайте таблицу сответствий ставка - процент
8 shuhard
 
02.06.12
22:15
(7) + 1
ВТ для этого в самый раз
ВЫБРАТЬ
   СтавкиНДС.Ссылка,
   0.18 КАК Ставка
ПОМЕСТИТЬ ТНДС
ИЗ
   Перечисление.СтавкиНДС КАК СтавкиНДС
ГДЕ
   СтавкиНДС.Ссылка = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   СтавкиНДС.Ссылка,
   0.1
ИЗ
   Перечисление.СтавкиНДС КАК СтавкиНДС
ГДЕ
   СтавкиНДС.Ссылка = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   НДСНачисленный.СчетФактура,
   НДСНачисленный.СтавкаНДС,
   НДСНачисленный.СуммаБезНДС * (1 + ТНДС.Ставка) КАК Нечто,
   НДСНачисленный.СуммаБезНДС + НДСНачисленный.НДС КАК Поле1
ИЗ
   РегистрНакопления.НДСНачисленный КАК НДСНачисленный
       ЛЕВОЕ СОЕДИНЕНИЕ ТНДС КАК ТНДС
       ПО НДСНачисленный.СтавкаНДС = ТНДС.Ссылка
9 suvolod
 
02.06.12
22:18
Мне надо поправить универсальный отчет, а это не СКД, так-что отпадает..

За код спасибо.. сам делаю нечто подобное прямо сейчас. Хочу запрос (ниже) поместить во ВремТаб и соединить его с основным запросом

ВЫБРАТЬ
   Номенклатура.Ссылка КАК Номенклатура,
   ВЫБОР
       КОГДА Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
               ИЛИ Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
           ТОГДА 0.18
       КОГДА Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
               ИЛИ Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
           ТОГДА 0.1
       КОГДА Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0)
               ИЛИ Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)
           ТОГДА 0
       КОГДА Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
               ИЛИ Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20_120)
           ТОГДА 0.2
       ИНАЧЕ 0
   КОНЕЦ КАК СтавкаНДС
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.ЭтоГруппа = ЛОЖЬ
10 shuhard
 
02.06.12
23:01
(9) бред
11 МихаилМ
 
02.06.12
23:45
ИНАЧЕ 0 - почему ноль, а не NULL
12 hhhh
 
03.06.12
00:09
(11) прикалываешься?
13 МихаилМ
 
03.06.12
01:28
(12) нет

классическая ошибка.

не припомню что бы я с Вами переходили на "*аешься"
14 ЧашкаЧая
 
03.06.12
01:39
(13) И зачем там NULL? А если потом это завернуть во вложенный запрос и потом сделать умножение на ставку НДС, что получим тогда?
15 МихаилМ
 
03.06.12
02:51
(14) получим что положено - NULL
16 catena
 
03.06.12
06:06
(15)Кем положено?
17 ChAlex
 
03.06.12
13:01
(9) - а зачем лишнюю информацию во временную таблицу запихивать? Во временную таблицу запихнуть 2 колнки: ставкаНДС и числовое значение ее (4 строчки). А в основном запросе просто соединять со внутренней таблице по полю "СтавкаНДС"
18 experimentator76
 
03.06.12
13:22
(0) вот за это за все я терпеть не могу перечисления
имхо давно пора переходить на справочники с предопределенными элементами
гибкость возрастает В РАЗЫ
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс