Имя: Пароль:
1C
 
Перечисление по индексам
,
0 terletskiyab
 
21.05.18
09:40
Если Семестр = Перечисления.Семестры.ПервыйСеместр ИЛИ Семестр = Перечисления.Семестры.ВторойСеместр Тогда
        КурсСеместра  = Перечисления.Курсы.ПервыйКурс
    ИначеЕсли  Семестр = Перечисления.Семестры.ТретийСеместр ИЛИ Семестр = Перечисления.Семестры.ЧетвертыйСеместр Тогда
        КурсСеместра  = Перечисления.Курсы.ВторойКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ПятыйСеместр ИЛИ Семестр =  Перечисления.Семестры.ШестойСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ТретийКурс
    ИначеЕсли Семестр =  Перечисления.Семестры.СедьмойСеместр ИЛИ Семестр = Перечисления.Семестры.ВосьмойСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ЧетвертыйКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ДевятыйСеместр ИЛИ Семестр = Перечисления.Семестры.ДесятыйСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ПятыйКурс
    ИначеЕсли Семестр =  Перечисления.Семестры.ОдиннадцатыйСеместр ИЛИ  Семестр = Перечисления.Семестры.ДвенадцатыйСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ШестойКурс
    ИначеЕсли Семестр =  Перечисления.Семестры.ТринадцатыйСеместр ИЛИ Семестр = Перечисления.Семестры.ЧетырнадцатыйСеместр Тогда
         КурсСеместра = Перечисления.Курсы.СедьмойКурс;
        
    КонецЕсли;
    Возврат КурсСеместра;

Как из этого сделать перечисление по индексам?
1 xXeNoNx
 
21.05.18
09:47
что такое "перечисление по индексам"?
2 Сти
 
21.05.18
09:52
Индекс = Перечисления["Семестры"].Индекс(Перечисления.Семестры.ПервыйСеместр);
3 Сти
 
21.05.18
09:53
(2) Точнее
Индекс = Перечисления["Семестры"].Индекс(Семестр);

Ну а дальше с полученным индексом возишься.
4 terletskiyab
 
21.05.18
09:56
Спасибо, Сергей! А как мне подбить эти данные с индексами под выше мой цикл, чтобы точно также работало только индексами
5 Мыш
 
21.05.18
09:58
(4) Сделай соответствие вместо кейса.
6 terletskiyab
 
21.05.18
09:59
Может вот так? Индекс = Перечисления.Семестры.Получить(ПервыйСеместр);
7 Сти
 
21.05.18
10:05
(4) Ну, если хочется вообще коротко в одну строчку, то

Возврат Перечисления.Курсы[Окр(Перечисления.Семестры.Индекс(Семестр)/2-0.5, 0)]
8 Сти
 
21.05.18
10:06
(7) осталась такая вот дурацкая привычка писать кратко, но непонятно со времен, когда на Perl мутил всякое
9 Малыш Джон
 
21.05.18
10:14
(5) +1

Я бы тоже добавил соответствие. Наглядно и легко дорабатывается.
10 singlych
 
21.05.18
10:24
(7) Главное, порядок значений не менять.
11 Сти
 
21.05.18
11:02
(10) Конечно. Но поскольку это метаданные, доступ к которым должен быть только у разработчика, который должен понимать что делает (требовать это от обычных юзеров практически бесполезно), то в общем-то не опасно :)
12 terletskiyab
 
21.05.18
11:02
А зачем вот тут:Квадратные скобки и -0,5 ОБЪЯСНИТЕ :) Заранее спасибо,  Возврат Перечисления.Курсы[Окр(Перечисления.Семестры.Индекс(Семестр)/2-0.5, 0)]
13 Йохохо
 
21.05.18
11:04
(8) у перлистов тяжелое детство, а у 1сников другие фломастеры, не нужно тебе это
14 Сти
 
21.05.18
11:05
(12) Квадратные скобки - получение значения по индексу.При этом в 1С иногда можно использовать имя, а совсем иногда - наоборот, нельзя. -0,5 для того чтобы округлялось всегда вниз, то есть получение целой части числа (3/2 = 1,5 и без -0.5 округление будет давать 2, а не требуемое 1).
15 Сти
 
21.05.18
11:09
(13) для того, кто паял на коряво сделанных платах ZХ-Spectrumы и АОНы в лихие годы перестройки и правил программы в машинных кодах, perl совсем не тот черт, каким его малюют! 1С сложнее. Ну да, и парадигма тут другая, и знания разнообразнее )
16 Йохохо
 
21.05.18
11:17
(15) строить связь по индексу перечисления это бредовейший бред
17 Сти
 
21.05.18
12:01
(16) Все зависит от задачи и входящих данных. В данном случаем, по условиям в (0) и описываемым в них сущностям, это оптимально и безопасно. В других - полный бред. А вообще, на вкус и цвет все те самые фломастеры из (13) разные.
18 igorPetrov
 
21.05.18
12:27
(0) ТС темы просто плодит https://www.forum.mista.ru/topic.php?id=818944
19 igorPetrov
 
21.05.18
12:27
(0) Чем старая тема не устроила?
20 Малыш Джон
 
21.05.18
12:31
(19) ну там было три курса, а тут уже семь.
Разве это не достойно новой темы?)
21 Малыш Джон
 
21.05.18
12:31
+(20) хотя нет, там тоже до седьмого добрались...
Программист всегда исправляет последнюю ошибку.