Имя: Пароль:
1C
1C 7.7
v7: Есть ли способы прямым запросом получить значение перечисления?
0 МастерВопросов
 
30.01.12
13:56
Нужна именно строка с идентификатором Перечисления, а не ссылка

Строка(ВыбНоменклатура.ВидНоменклатуры.Идентификатор());

Например: "Прочее", "Тара", "Услуга".


З.Ы.: Сам токма такое надумал:
CASE WHEN LTRIM(RTRIM(Номенклатура.sp2417))='2Q2' THEN 'Прочее' WHEN LTRIM(RTRIM(Номенклатура.sp2417))='2Q1' THEN 'Инвентарь' WHEN LTRIM(RTRIM(Номенклатура.sp2417))='2Q0' THEN 'Стройматериалы'ELSE Номенклатура.sp2417 END СтрВидНоменклатуры
1 Mikeware
 
30.01.12
14:00
Создай служебную таблицу...
2 МастерВопросов
 
30.01.12
14:08
(1) ты про "WITH", или что то другое?

Проблема, что если кто то когда то добавит новое перечисление, то надо будет дописывать код в (0)
3 Ковычки
 
30.01.12
14:12
подставь ид и не парься
4 МастерВопросов
 
30.01.12
14:12
+(2) "WITH yyy AS"
5 МастерВопросов
 
30.01.12
14:16
(3) это запрос из одной базы в другую, где ID не совпадают
6 Ковычки
 
30.01.12
14:20
тогда никак
только если служебную и при каждом чихе обновлять
7 antoneus
 
30.01.12
14:26
ну формируй строку динамически, как-то так

стрВыбор = "
|    case";
Для сч = 1 По Перечисление.ВидыНоменклатуры.КоличествоЗначений() Цикл
   Ид = Перечисление.ВидыНоменклатуры.ЗначениеПоНомеру(сч).Идентификатор();
   стрВыбор = стрВыбор + "
   |    when $Номенклатура.ВидНоменклатуры = $Перечисление.ВидыНоменклатуры."+Вид+" then '" + Вид + "'";        
КонецЦикла;
стрВыбор = стрВыбор + " end ВидНоменклатуры";
8 antoneus
 
30.01.12
14:28
очепятка
9 antoneus
 
30.01.12
14:28
when $Номенклатура.ВидНоменклатуры = $Перечисление.ВидыНоменклатуры."+Ид+" then '" + Ид + "'"
10 rs_trade
 
30.01.12
14:31
(2) а причем тут CTE вообще.
Основная теорема систематики: Новые системы плодят новые проблемы.