Имя: Пароль:
1C
1С v8
Зачем так делают? Переменные в модуле объекта
0 formista2000
 
10.04.25
14:49
Вначале модуля объекта пишут:

Перем мСтавкиНДС;

И после процедур и функций в основной части модуля пишут:

мСтавкиНДС = Перечисления.СтавкиНДС;

И работают потом с мСтавкиНДС, но ведь если этого не знать и не посмотреть, то программист так и будет в коде использовать Перечисления.СтавкиНДС.НДС20 например.

Зачем такое делают? Какой скрытый смысл?
1 СвинТуз
 
10.04.25
14:53
Тяжёлое наследие 1с 7.7
2 Kigo_Kigo
 
10.04.25
14:56
Приставка "м" значит переменнная модуля и существует только в модуле, к примеру есть реквизит объекта СтавкиНДС, а надо поигратся с перменной СтавкиНДС, и что бы его не трогать (и не запутаться) делают переменную мСтавкиНДС
ПыСы   типа правило этики программирования, что бы код был читаем
3 Ненавижу 1С
 
гуру
10.04.25
14:55
Выпендриваются.

Перечисления.СтавкиНДС это статический объект менеджер и обращение к нему стоит копейки, чтобы выделять прямую переменную
Используйте Перечисления.СтавкиНДС - так понятнее
4 Злопчинский
 
10.04.25
15:12
(1) это отчего вдруг тяжкое наследи клюшек?
.
"глУслуга" просто тупо удобнее писать чем Перечисление.ВидыНоменклатуры.Услуга
5 Ненавижу 1С
 
гуру
10.04.25
15:14
(4) там не конкретное значение перечисления, а менеджер одного типа перечисления
Но даже в этом случае все относительно - писать помогает IDE, а вот читать в силу особенностей языка - никто не помогает
6 Злопчинский
 
10.04.25
15:16
(5) ну, как переменную назвали, так она и поплывет...
7 Andy13
 
10.04.25
15:22
Скорее не наследие клюшек, а наследие малых ресурсов и файловых баз с отсутствием кэша.
В приведеном примере одно считывание из базы данных и дальнейшее использование.
Иначе будет считываться каждый раз при обращении. Что в реалиях файловой базы - тормоза.
Ну в целом - наследие тощих времен...
8 Ненавижу 1С
 
гуру
10.04.25
15:23
(7) что конкретно считывается из базы данных в строке:

мСтавкиНДС = Перечисления.СтавкиНДС;

?
9 Конструктор1С
 
10.04.25
18:13
(2) древний говнищенский стиль, собезъяненый с других языков (от него уж отказались), не делает код читаемым
10 Конструктор1С
 
10.04.25
18:22
Префикс m_ использовали в сишных языках в древности, когда кодили в примитивных IDE. Но некоторые уникумы зачем-то испозьзуют эту хрень до сих пор. То ли в блокноте кодят, то ли что
11 Bigbro
 
10.04.25
20:04
не знаю что у вас за модуль и зачем так сделано
но вот есть к примеру обработка диадока.
которая на всяких разных конфигурациях должна работать
в которых эти перечисления со ставками НДС разные или их вообще может не быть.
но унифицировать как то модуль надо и вызовы к нему из других модулей.
поэтому там много на первый взгляд странных решений
а есть такие которые странные и на 2 и на 3 взгляд ))
12 ptiz
 
10.04.25
23:18
(10) Префикс "м" в мПеременная дает однозначное указание, что это переменная уровня формы или модуля объекта. Такой код легче читать и сопровождать. Более того, я - за то, чтобы визуально различать реквизиты объекта или формы и обычные переменные, чтобы избегать путаницы и глюков в коде. Жаль, что нет таких практик.
13 SleepyHead
 
гуру
11.04.25
08:56
(0) Возможно, когда-то было другое перечисление. потом перешли на новое.

Можно везде в коде поменять Перечисления.СтавкиНДС_Прежнее на Перечисления.СтавкиНДС_Новое, а можно один раз в переменной.
14 Stepashkin
 
11.04.25
08:59
(0) Ну нравится им так.
15 vis
 
11.04.25
09:11
(12) Почему нет?
Каждый может сам практиковать так, как ему удобнее.
16 alex73
 
11.04.25
10:31
(15) Нет - потому, что работа программиста 1С и всегда была, и с годами становится все более и более коллективной. Вероятность того, что в твоем "гениальном коде" никто после тебя не будет никогда разбираться - близка к нулю. А в случае более-менее больших проектов - даже становится и практически равна нулю.

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

С почтением, ваш Кэп.
17 Serg_1960
 
11.04.25
10:34
(13) +1
Такого рода переменные позволяют отделить логику от данных и писать универсальные, переиспользуемые, изменяемые алгоритмы для различных конфигураций.
2 + 2 = 3.9999999999999999999999999999999...