Имя: Пароль:
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) я вижу это,  меня "молодое поколение радует" чем больше таких, тем выше можно ставить ценник.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший