Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как заполнить перечисление программно
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Klotilda
Здравствуйте! Мне надо из файла заполнить перечисление. Такой код не помогает
  СтавкиНДС            =Перечисления.СтавкиНДС.Получить(ЗначСтавкаНДС);
          Если СтавкиНДС    = Неопределено ИЛИ СокрЛП(ЗначСтавкаНДС)="" Тогда
        ЗначениеНДС            =СтавкиНДС.БезНДС;
              
          КонецЕсли;


Очень прошу помощи
Нонна
СокрЛП работает со строкой, а метод Получить работает с индексом (числом). Это правильно?
Klotilda
ЗначСтавкаНДС это строка. мне надо сравнить , есть такое значение в Перечислении и если нет записать. Никак не получается сделать
Petre
Опишите переменные.
VikingKosmo
Цитата(Klotilda @ 27.11.15, 15:27) необходимо зарегистрироваться для просмотра ссылки
Здравствуйте! Мне надо из файла заполнить перечисление. Такой код не помогает
  СтавкиНДС            =Перечисления.СтавкиНДС.Получить(ЗначСтавкаНДС);
          Если СтавкиНДС    = Неопределено ИЛИ СокрЛП(ЗначСтавкаНДС)="" Тогда
        ЗначениеНДС            =СтавкиНДС.БезНДС;
              
          КонецЕсли;


Очень прошу помощи


Собственно приведенный код и не должен работать. А искать ссылку на значение перечисления по имени можно, например, так:
Функция НайтиВидСообщения(прм_имя)
    имя=СокрЛП(прм_имя);
    Для Каждого эл из Метаданные.Перечисления.ИмяПеречисления.ЗначенияПеречисления Цикл
        Если СокрЛП(эл.Синоним)=имя Тогда
            Возврат Вычислить("Перечисления.ИмяПеречисления."+эл.Имя);
        КонецЕсли;    
    КонецЦикла;
    Возврат Неопределено;
КонецФункции
Petre
Цитата(Klotilda @ 27.11.15, 17:10) необходимо зарегистрироваться для просмотра ссылки
ЗначСтавкаНДС это строка. мне надо сравнить , есть такое значение в Перечислении и если нет записать. Никак не получается сделать

Во-первых, что содержит строка? Число индекса, предположительное имя значения перечисления, предположительный синоним значения перечисления.
Во-вторых, что значит "если нет записать"? Значения перечислений создаются на уровне конфигурации.
Klotilda
спасибо большое
Klotilda
Цитата(VikingKosmo @ 27.11.15, 17:11) необходимо зарегистрироваться для просмотра ссылки
Собственно приведенный код и не должен работать. А искать ссылку на значение перечисления по имени можно, например, так:
Функция НайтиВидСообщения(прм_имя)
    имя=СокрЛП(прм_имя);
    Для Каждого эл из Метаданные.Перечисления.ИмяПеречисления.ЗначенияПеречисления Цикл
        Если СокрЛП(эл.Синоним)=имя Тогда
            Возврат Вычислить("Перечисления.ИмяПеречисления."+эл.Имя);
        КонецЕсли;    
    КонецЦикла;
    Возврат Неопределено;
КонецФункции


код не работает. можно как-то проще сделать?
lex2707
Попытка

НайденоЗначение = Перечисления.СтавкиНДС[СокрЛП(ИмяСтавкиДляПоиска)]
//выполняем действия если значение найдено
Исключение
//выполняем действия если значение не найдено
Конецпопытки
Нонна
Цитата(Klotilda @ 30.11.15, 11:05) необходимо зарегистрироваться для просмотра ссылки
код не работает. можно как-то проще сделать?

Вместо: Вычислить("Перечисления.ИмяПеречисления."+эл.Имя); попробуйте: Вычислить("""Перечисления.ИмяПеречисления.""+эл.Имя");

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.