Имя: Пароль:
1C
1С v8
Перечисления НДС не получается перевести в числовой формат
, , ,
0 ksru
 
10.11.16
10:41
Как можно сделать чтоб НДС считалось если оно заданно в перечислениях?
Если можно то скиньте пример.
1 torgm
 
10.11.16
10:44
(0) УТ 10 Функция в учетНДС

// Функция возвращает ставку НДС.
//
// Параметры:
//  СтавкаНДС - Ставка НДС.
//
// Возвращаемое значение:
//  Число.
//
Функция ПолучитьСтавкуНДС(СтавкаНДС) Экспорт

    Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
        Возврат 20;
    ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
        Возврат 10;
    ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118 Тогда
        Возврат 18;
    КонецЕсли;

    Возврат 0;

КонецФункции // ПолучитьСтавкуНДС()
2 ksru
 
10.11.16
10:56
а для тупых можно еще раз

// Функция возвращает ставку НДС.
Функция ПолучитьСтавкуНДС(СтавкаНДС) Экспорт
Если СтавкаНДС = Перечисления.НДС.Процент18 Тогда
Возврат 0.18;
ИначеЕсли СтавкаНДС = Перечисления.НДС.Процент10 Тогда
Возврат 010;
ИначеЕсли СтавкаНДС = Перечисления.НДС.БезНДС Тогда
Возврат 0;
КонецЕсли;
Возврат 0;
КонецФункции

&НаКлиенте
Процедура ЗаказанныйТоварЦенаСНДСПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ЗаказанныйТовар.ТекущиеДанные;
СтрокаТабличнойЧасти.ЦенаСНДС=СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.НДС+СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
3 torgm
 
10.11.16
11:30
(2)  первый косяк

Если СтавкаНДС = Перечисления.НДС.Процент18 Тогда
Возврат 0.18;
ИначеЕсли СтавкаНДС = Перечисления.НДС.Процент10 Тогда
Возврат 010;

второй косяк

Процедура ЗаказанныйТоварЦенаСНДСПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ЗаказанныйТовар.ТекущиеДанные;
СтрокаТабличнойЧасти.ЦенаСНДС=СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.НДС+СтрокаТабличнойЧасти.Цена;
4 ksru
 
11.11.16
09:42
(3) если честно то я ничего не понял что вы написали про косяки
вы имеете в виду
Возврат 010;
косяк или что?
5 shadow_sw
 
11.11.16
09:46
(4) у тебя функция возвращает переменную ставкаНДС, а в условии ты возвращаешь число, которое никуда не присвоено
6 h-sp
 
11.11.16
09:47
(4) чем 010 отличается от 10? и где у тебя здесь 018?
7 DDwe
 
11.11.16
09:49
(6) 010 строка видимо, а 10 может и число.
8 ksru
 
11.11.16
10:10
(5) и каким образом это положение исправить возможно?
9 ksru
 
11.11.16
10:58
как-то так должно быть?

Функция ПолучитьСтавкуНДС(СтавкаНДС) Экспорт
СтрокаТабличнойЧасти=Элементы.ЗаказанныйТовар.ТекущиеДанные;
Если СтрокаТабличнойЧасти.НДС = Перечисления.НДС.Процент18 Тогда
СтрокаТабличнойЧасти.НДС=18;
ИначеЕсли СтавкаНДС = Перечисления.НДС.Процент10 Тогда
СтрокаТабличнойЧасти.НДС= 10;
ИначеЕсли СтавкаНДС = Перечисления.НДС.БезНДС Тогда
СтрокаТабличнойЧасти.НДС= 0;
Иначе
СтрокаТабличнойЧасти.НДС= 0;
КонецЕсли;
КонецФункции
10 h-sp
 
11.11.16
11:09
(9) так не бывает. не может одновременно быть СтрокаТабличнойЧасти.НДС и перечислением и числом. Если там перечисление, то должно быть перечисление, число вы туда уже не запишете.

Может СтрокаТабличнойЧасти.СтавкаНДС там у вас есть?
11 ksru
 
11.11.16
11:14
(10) нет у меня есть Перечисления.НДС. Процент18, Процент10, БезНДС и поле ссылка которое ведет на перечисления называется НДС и имеется поле ЦенаСНДС которое нужно рассчитать как-то

СтрокаТабличнойЧасти.ЦенаСНДС=СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.НДС+СтрокаТабличнойЧасти.Цена;
12 ksru
 
11.11.16
11:15
но поле НДС имеет не числовой формат
13 shadow_sw
 
11.11.16
11:16
(10)(11) ух как все запущено...срочно читать про типы данных
14 torgm
 
11.11.16
11:18
пипец конечно , ну ладн

СтрокаТабличнойЧасти.ЦенаСНДС=СтрокаТабличнойЧасти.Цена*(100+ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС))/100
15 shadow_sw
 
11.11.16
11:19
(14) сломал всю интригу
16 torgm
 
11.11.16
11:20
(14) я практически сутки терпел :) 12 минут не хватило
17 ksru
 
11.11.16
11:30
(16)

Функция ПолучитьСтавкуНДС(СтавкаНДС) Экспорт
Если СтавкаНДС = Перечисления.НДС.Процент18 Тогда
Возврат 18;
ИначеЕсли СтавкаНДС = Перечисления.НДС.Процент10 Тогда
Возврат 10;
ИначеЕсли СтавкаНДС = Перечисления.НДС.БезНДС Тогда
Возврат 0;
КонецЕсли;
Возврат 0;
КонецФункции

Процедура ЗаказанныйТоварЦенаСНДСПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ЗаказанныйТовар.ТекущиеДанные;
СтрокаТабличнойЧасти.ЦенаСНДС=СтрокаТабличнойЧасти.Цена*(100+ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС))/100
КонецПроцедуры

так будет?
18 torgm
 
11.11.16
11:40
(17) да почему же "ЗаказанныйТоварЦенаСНДСПриИзменении"???
ты ж обыкновенную цену меняешь или нет?
19 h-sp
 
11.11.16
11:47
СтрокаТабличнойЧасти.ЦенаСНДС=СтрокаТабличнойЧасти.Цена*(100+ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.НДС))/100
20 ksru
 
11.11.16
11:59
(18) нет с НДС
&НаКлиенте
Процедура ЗаказанныйТоварНДСПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ЗаказанныйТовар.ТекущиеДанные;
СтрокаТабличнойЧасти.ЦенаСНДС=СтрокаТабличнойЧасти.Цена*(100+ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.НДС))/100
КонецПроцедуры
21 torgm
 
11.11.16
12:00
(20) Меняешь Значения в какой колонке?
22 shadow_sw
 
11.11.16
12:07
(21) не мучайся, пациент не хочет учиться, он хочет зеленую кнопку - напиши ему и всего делов :)
23 torgm
 
11.11.16
12:10
(22) я вижу это,  меня "молодое поколение радует" чем больше таких, тем выше можно ставить ценник.