Имя: Пароль:
1C
1С v8
Аналог перечислений для использования во время выполнения без записи в базу, варианты?
0 RetardedToBoot
 
25.05.20
01:17
Подчастую в коде можно наблюдать передачу режимов выполнения в процедуру типа:

Процедура Печать(Режим = 0)

Где, Режим = 0 - один вариант печати, = 1 - другой, и т.д.
Не наглядно.

Другой вариант:
Процедура Печать(Режим = "ПростаяНакладная")

Уже лучше, но все равно использование строковых констант для этих целей как-то напрягает.
И в буковке можно где-нибудь ошибиться и не заметить, и усложнение посмотреть все варианты централизовано.

Есть еще вариант, где режим используется как строковые константы, но сверяется
с полями структуры:
Если Режим = Варианты.ПростаяНакладная Тогда // где Варианты.ПростаяНакладная = "ПростаяНакладная" и объявлена как переменная модуля

Этот вариант мне нравится больше всего, но проблемно когда нужно использовать на клиенте.

Какие еще варианты можете предложить?
1 Aleksey
 
25.05.20
01:55
ТКВ
3 palsergeich
 
25.05.20
03:48
(0) Удобнее перечисления ничего нет
4 palsergeich
 
25.05.20
03:49
Благо предопределенное значение на клиенте кешируется, а на сервере старый баг,когда это не рекомендовалось - давным давно поправлен, по моему даже из стандартов убрали запрет на ПредопределенноеЗначение на сервере
5 Chameleon1980
 
25.05.20
04:32
6 Garykom
 
гуру
25.05.20
08:19
(0) Структуры.
Проблема не в том что использовать а как чтобы не объявлять в модулях а использовать из одного общего модуля.

Фактически тут удобнее функции использовать.
Делается общий модуль Режим с экспортными функциями ОдинВариантПечати() и ДругойВариантПечати(), которые возвращают 0 и 1.

Далее банально:
Печать(Режим.ОдинВариантПечати());

Кому не нравятся скобки (лично мне пофиг) может сделать через Перем и/или структуры, будет красивей.
Печать(Режим.ВариантыПечати.Один);
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн