Имя: Пароль:
1C
 
как написать функцию которая получит данные из "Перечесления.СтавкиНДС"
, , ,
0 Sv4org
 
04.08.16
09:51
Здравствуйте,началл изучать 1с и дошёл до функций и немножко подвис
Подскажите кто нибудь как написать функцию которая получит данные из "Перечесления.СтавкиНДС" и выведет числовое значение
1 Горогуля
 
04.08.16
09:52
Функция ПолучитьДанные()
Возврат Данные;
КонецФункции
2 Горогуля
 
04.08.16
09:53
а числовое значение ставки из перечисления только перебором
3 Любопытная
 
04.08.16
09:53
Забавно. Чем функция получения ставки НДС отличается от любой другой функции?
4 Lexey_
 
04.08.16
09:54
(0) например, так:
Функция ПолучитьДанныеИзПеречЕсления()
    Возврат Перечисления.СтавкиНДС[0];
КонецФункции;
5 Sv4org
 
04.08.16
09:55
Спасибо сейчас попробую
6 Быдло замкадное
 
04.08.16
09:55
первые 4 комментатора читать не умеют. ТС числовое значение в перечислении Ставка НДС не хранится.
7 mastodont
 
04.08.16
09:56
(6) +1
8 Любопытная
 
04.08.16
09:57
(6) Да неужели?! Как первое предложение в (0) соотносится со вторым?
9 Jokero
 
04.08.16
09:58
(0) посмотреть, как это в типовых реализовано))
Например УТ10 - Общий модуль УчетНДС функция получить НДС

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

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

    Возврат 0;

КонецФункции // ПолучитьСтавкуНДС()
10 mastodont
 
04.08.16
09:59
(8) они не связаны особо)
человек же написал: "выведет числовое значение"
11 CMblCL
 
04.08.16
10:03
(0) ТС, не ты ли это был?
http://1c.mista.ru/users.php?id=109039
аж с 3 темами по НДС?
12 Sv4org
 
04.08.16
10:04
(9) Судя по вашему примеру если мне понадобиться добавить новое значение скажем НДС6 то мне прийдётся и в коде прописывать "ИначеЕсли"
А нужно сделать так чтобы ставка НДС6 работала нне изменяя код
13 Горогуля
 
04.08.16
10:04
(12) не нужно
14 DomovoiVShoke
 
04.08.16
10:05
(12)Лучше чтоб она работала быстрее. А в код тебе все равно придется лезть, чтоб в перечисление ставку добавлять.
15 Горогуля
 
04.08.16
10:06
Число(Сред(Строка(Перечисления.СтавкиНДС.НДС18), 1, Найти(Строка(Перечисления.СтавкиНДС.НДС18), "%")-1))
16 Горогуля
 
04.08.16
10:07
(15) на "без НДС", разумеется всё поломается ;)
17 Любопытная
 
04.08.16
10:10
(10) человек написал, что дошел до функций и у него случился затык. А дальше вопрос, который к функциям имеет весьма отдаленное отношение.
18 Sv4org
 
04.08.16
17:43
Народ помогите ещё раз
Вот код:

&НаКлиенте
Процедура ТоварСтавкиНДСПриИзменении(Элемент)
    
    ТекущиеДанные = Элементы.Товар.ТекущиеДанные;
    
    ТекущиеДанные.СуммаНДС = ТекущиеДанные.Сумма * УчётНДС.ПолучитьСтавкуНДС("ЗначениеПеречисления");//На функцию
    ТекущиеДанные.Итого = ТекущиеДанные.Сумма + ТекущиеДанные.СуммаНДС;
    
КонецПроцедуры

//////////////////////////////////////////////////////////
Функция ПолучитьСтавкуНДС(ЗначениеПеречисления)Экспорт

    
    Если ЗначениеПеречисления = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС20") Тогда
        Возврат 0.2;
        
    ИначеЕсли ЗначениеПеречисления = ПредопределенноеЗначение ("Перечисление.СтавкиНДС.НДС6") Тогда
        Возврат 0.06;
        
    ИначеЕсли ЗначениеПеречисления = ПредопределенноеЗначение ("Перечисление.СтавкиНДС.НДС8") Тогда
        Возврат 0.08;
        
    ИначеЕсли ЗначениеПеречисления = ПредопределенноеЗначение ("Перечисление.СтавкиНДС.БезНДС") Тогда
        Возврат 0;
        
    КонецЕсли;
    
    
КонецФункции
//////////////////////////////////////////////////
выдаёт следующую ошибку:
{Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(43)}: Преобразование значения к типу Число не может быть выполнено
    ТекущиеДанные.СуммаНДС = ТекущиеДанные.Сумма * УчётНДС.ПолучитьСтавкуНДС("ЗначениеПеречисления");

В чём я  ошибся?
19 Джинн
 
04.08.16
17:46
(18) Жесть!
20 Волшебник
 
модератор
04.08.16
17:48
(18) в функции не хватает простого Иначе

При вызове функции ковычки лишние
21 НеБорис Нуралиев
 
04.08.16
18:40
(18) ТекущиеДанные.СтавкаНДС скорее всего, а не "ЗначениеПеречисления"
22 Garykom
 
гуру
04.08.16
18:47
В какой то загранице совсем нет 1С-ников?
23 FIXXXL
 
05.08.16
08:33
(12) заведи РС соответствия значений перечислений и цифирок
запросом получай данные
24 b_ru
 
05.08.16
09:16
Маузер то закономерно зафейлился. Есть в цыганской 1С модуль "УчетНДС" :)