Имя: Пароль:
LIFE
 
OFF: Где вы объявляете переменные?
0 ЗлобнийМальчик
 
15.02.13
14:16
1. По ходу процедуры 59% (20)
2. Другое 26% (9)
3. В начале процедуры 9% (3)
4. В конце процедуры 6% (2)
Всего мнений: 34

по работе пришлось читать очень много чужого кода. И я заметил одну особенность которуя я до этого не соблюдал. Все переменые вынесены в начало процедуры и по ходу процедуры не объявляются. Я в свое время читал книжку мак конелла совершенный код и там наоборот рекомендовалось переменные по ходу процедуры объявлять прямо рядом с местом использования.
А как делаете вы?
1 Aleksey
 
15.02.13
14:17
это как?
2 Wobland
 
15.02.13
14:17
мак коннелы нам не указ. и потом, наверняка он про человечьи языки с нормальной типизацией

В начале процедуры
3 ЗлобнийМальчик
 
15.02.13
14:17
перем 1
перем 2
перем 3
перем 4

код код код
перем 1 = перем 2 + перем 3
4 Eugene_life
 
15.02.13
14:18
в зависимости от настроения.
5 Бешеная Нога
 
15.02.13
14:19
всегда походу. пока я не понимаю необходимость размещения
Перем МояПеременная в начале процедуры

По ходу процедуры
6 Aleksey
 
15.02.13
14:19
(3) Мы сейчас про переменные которые объявляются в разделе "перем" или просто присвоение по тексту, типа
спр=создатьОбъект()
7 ЗлобнийМальчик
 
15.02.13
14:19
(6) объявляются
9 Rie
 
15.02.13
14:20
(0)  А на каком языке пишешь-то? В 1Сике переменные можно только в начале процедуры объявлять. Иначе ругается - низзя, мол... И в разнообразных паскалях - то же самое. А ежели С или Java - тут есть варианты.
10 ЗлобнийМальчик
 
15.02.13
14:22
(9) упс. Забыл я эту особенность одноэсии...
Я на абапе клепаю. Но в принципе пример той же С# или жабы меня устроил
11 HeroShima
 
15.02.13
14:23
(0) поближе к месту использования

По ходу процедуры
12 Aleksey
 
15.02.13
14:24
(10) ТОгда к чему весь этот опрос?
13 ЗлобнийМальчик
 
15.02.13
14:27
(12) ну тогда ни о чем.
14 Rie
 
15.02.13
14:27
(10) Совсем другая ситуация. В шарпе и жабе видимость переменных - не в процедуре, а в блоке {...}. Поэтому там вытаскивать в начало процедуры переменные, используемые лишь в каком-то конкретном блоке - смысла нет. А поскольку блоки - обычно небольшие, то и смысла нет заморачиваться этим вопросом.
15 Проггер
 
15.02.13
14:28
Есть языки которым необходимо инициализация переменных для обозначения типа (delphi,vb). 1с к таким языкам не относится поэтому объявлять их можно поближе к месту использования

Другое
16 Джордж1
 
15.02.13
14:29
я так объявляю, причем вот так Паременная="";

По ходу процедуры
17 milan
 
15.02.13
14:30
А правильно ли я делаю ? может на самом деле переменные надо объявить в начала процедуры и тогда Движения.Записать() отработает в 100500 раз быстрее ?

По ходу процедуры
18 IVT_2009
 
15.02.13
14:30
Так удобней. За исключением тех что надо занулить в начале процедуры по каким то причинам.

По ходу процедуры
19 Rie
 
15.02.13
14:32
Господа! Поделитесь, пожалуйста, секретом, как вам удаётся _объявлять_ переменные в 1Сике "по ходу процедуры".
20 Сергей Д
 
15.02.13
14:33
Привык к Паскалю. Нужно, чтобы все было в одном месте. Это дисциплинирует.

В начале процедуры
21 orefkov
 
15.02.13
14:33
(0)
Типа у нас есть выбор, где это делать?
22 HeroShima
 
15.02.13
14:36
(20) объявлять параметры циклов в разделе переменных - это они неподумавши
23 ЗлобнийМальчик
 
15.02.13
14:36
(21) см (9)
24 Сергей Д
 
15.02.13
14:40
(22) Почему же? Объявляю одну переменную и использую ее во всех циклах (если они не вложенные, конечно).
25 Эмбеддер
 
15.02.13
14:41
Это вопрос про Си конечно?
26 HeroShima
 
15.02.13
14:42
(24) а тут уже второй вопрос назревает об утилизации неиспользуемых переменных
27 HeroShima
 
15.02.13
14:43
+(26) хорошим тоном считается одно объявление переменной = одна сущность
28 Сергей Д
 
15.02.13
14:46
Вот за что я люблю Паскаль - так это за дисциплину. Все переменные - вместе. Константы - вместе. Не объявил - фиг используешь. И всегда определенность с типами. Не то что в современных языках.
29 Rie
 
15.02.13
14:46
(26) Не назревает. Умный оптимизатор (если разработчики транслятора об этом позаботились) сам разберётся. Как в Delphi, к примеру, сделано. А если такового нет - то можно лишь посокрушаться.
30 Rie
 
15.02.13
14:48
(28) В каких "современных языках"?
Если ты о cях, жабе или шарпе - так там тоже есть своя дисциплина. Просто чуток другая. Не лучше, не хуже - просто другая.
31 HeroShima
 
15.02.13
14:49
(29) так компилятор и с местами объявления может разобраться - вопрос о читабельности текста
(28) аду рекомендую
32 MaxS
 
15.02.13
14:50
Зависит от назначения переменной и области действия.
Чем шире область действия, тем выше она объявляется.
Нельзя объявлять переменную внутри какого-нибудь условия, если она используется вне его.

Другое
33 Сергей Д
 
15.02.13
14:50
(30) PHP, да и в 1С с типизацией беда. Бывает глядишь описание процедуры и думаешь: чего она такое возвращает?
34 Сергей Д
 
15.02.13
14:56
В САП, кстати, тоже беда.
Пример. Есть переменная типа строка(50). Входной параметр процедуры строка(100). Напрямую передать нельзя. Нужно объявить переменную типа строка(100), ей присвоить значение переменной строка(50), а потом уже строку(100) передать в процедуру.
Как говорит один наш сотрудник, "убил бы".
35 Лефмихалыч
 
15.02.13
14:57
это не трубопаскаль...

По ходу процедуры
36 Rie
 
15.02.13
15:01
(33) Так это - не проблема "места объявления переменных". Это - вопрос о статической и динамической типизации. И опять же - у каждой есть свои достоинства или недостатки. В (34) - как раз пример того, как излишняя строгость мешает. Когда идёт работа с _произвольной_ базой данных - то статическая типизация осложняет жизнь, поскольку какие там типы у полей - станет известно только после подключения к базе.
37 HeroShima
 
15.02.13
15:01
(34) строгая типизация, чо
38 Сергей Д
 
15.02.13
15:04
(37) Даже слишком.
Не, там можно описать тип параметра как "любая строка". Но далеко не везде это сделано.
39 HeroShima
 
15.02.13
15:06
(38) угу. если память мне ни с кем не изменила, в турбопаскале та же история была
40 H A D G E H O G s
 
15.02.13
15:15
В зависимости от графика.
По четным дням - в начале процедуры, по нечетным - перед использованием, в выходные - прямо во время использования.

Автор, ветка гениальна в своей глупости.

Другое
41 Сергей Д
 
15.02.13
15:29
А в каких языках переменные описываются в конце процедуры, т.е. когда они уже не нужны?
42 HeroShima
 
15.02.13
15:39
(41) теоритически, возможно в пределах блока где необходимо знать тип переменной
43 Nirvana
 
15.02.13
18:14
Я использую неявное объявление переменных.
Пожалуй, стоит сказать за это спасибо разработчикам.

По ходу процедуры
44 Rie
 
15.02.13
18:17
(43) На ситуацию, когда имя переменной внутри процедуры случайно совпало с именем глобальной переменной - не нарывались? Повезло, однако...
45 GROOVY
 
15.02.13
18:18
Пофиг как вы объявляете переменные, компилятор полюбасу их сгенерит в таблицу переменных до начала интерпретации процедуры.
46 Nirvana
 
15.02.13
18:23
(44) "Случайно" может совпасть только там, где имеет место бардак в названиях переменных. А при системном подходе к переменным совпадения исключаются за счёт различия в стандартах имён глобальных и локальных переменных.
47 shadowfiend10
 
15.02.13
18:24
(44) Телепат/Снегопат покажут коли есть такая в глобальных или уже в объявленных, спасибо orefkov
48 orefkov
 
15.02.13
18:48
(47)
Пожалуйста:)
49 Rie
 
15.02.13
18:59
(47) Вот именно, что "или". Некто правит (это существенно - код был написан год назад, теперь пришлось к нему вернуться; а память человеческая - небезгранична) _большую_ процедуру и пишет
МояПеременная = 1;
Телепат подсказывает, что переменная - уже объявлена. Вот только где? В процедуре? В этом модуле? В Глобальном модуле? Да, выделит конечно цветом _в некоторых случаях_.
Ко всему прочему не у всех стоит Телепат (например, процедуру приходится править не дома в комфортных условиях, а у заказчика, о всяких Телепатах и не слыхивавшего).
50 EvgeniuXP
 
15.02.13
19:00
в параметрах процедуры.

Другое
51 Rie
 
15.02.13
19:01
(46) А единороги кушают радугу и какают бабочками...
Оно понятно, что если ошибок нет - то их нет, и все счастливы. Но речь-то как раз и идёт о том, как их избежать.
52 MMM9000
 
15.02.13
19:03
понадобилась переменная объявляю и сразу использую, если сильно надо, делаю ёё уровня модуль объекта. Жаль, что в 1с8 убили глобальные переменные, в 7 активно их использовал.

По ходу процедуры
53 Команданте
 
15.02.13
19:05
Ессно
А ваще нужно функции укорачивать. Я их так укорачиваю, что у меня нет процедур длиннее одного монитора, грубо говоря, а ваще где-то 15 строк

По ходу процедуры
54 Тролль главный
 
15.02.13
19:21
Все не читал, но есть что сказать

Процедура Тест()
 Перем А;
 А = 10; //я уверен, что идет присвоение локальной переменной
//если же объявление выше убрать, то вдруг я реквизит изменил?
55 fisher
 
15.02.13
19:25
Титры должны идти в конце фильма.

В конце процедуры
56 EvgeniuXP
 
15.02.13
19:25
Процедура МояПроцедура(Знач Перем1, Знач Перем2, Знач Перем3 и т.д.)
57 Sakura
 
15.02.13
19:25
Значимые - в начале.
Мелкие временные типа счетчика для цикла - можно и по ходу.
Кмк, так проще разбираться, чем по ходу вникать в смысл появления новых переменных.

В начале процедуры
58 Тролль главный
 
15.02.13
19:27
(57) это только в пьесах всех действующих лиц объявляют вначале)))
59 Sakura
 
15.02.13
19:30
(58) да понятно, что можно по-разному)
но мне даже самой неудобно по ходу их создавать, тем более, что временным переменным я часто даю не особо осмысленные имена, и искать потом, а не объявлена ли у меня еще где переменная с именем tmp, например - не то, на что хочется тратить время)))
60 Тролль главный
 
15.02.13
19:32
(59) ну в сях разных вроде ругается, если область видимости перекрывается, если не ошибкой то предупреждением
61 vicof
 
15.02.13
19:33
(59) f12 спасает
62 Sakura
 
15.02.13
19:33
(60) я на С++ и пишу в основном)))
63 Тролль главный
 
15.02.13
19:33
(62) я предугадывал это
64 aka MIK
 
15.02.13
19:37
Так читабельнее. Исключение - для переопределения глобальных, но это очень редко, "ТемпТЗ" или "Сч" у меня в глобальных или в реквизитах не будет, да и подсвечиваются они (спасибо орефкову!)

По ходу процедуры
65 orefkov
 
15.02.13
19:47
(64)
Подсвечиваются - спасибо не мне. Metaeditor'у.
66 sda553
 
15.02.13
20:45
(0) Я считаю, что переменная должна объявляться и инициализироваться недалеко от первого использования. А то в сях раздражает мотать портянку с кодом туда сюда, когда в коде разбираешься
67 Nirvana
 
15.02.13
22:16
(51) Элементарно избежать, если придерживаться разных стандартов в именах глобальных и локальных переменных. Понятно ли я выражаюсь, или ещё нужно объяснять, что такое "стандарт" в именах переменных?
68 HeroShima
 
15.02.13
22:27
(67) кто сильнее, стандарт, или форсмажор?
69 Невский
 
15.02.13
22:32
и это правильно

По ходу процедуры
70 Рэйв
 
15.02.13
22:36
(0)
Ламер.

Там где это нужно

Другое
71 Sakura
 
15.02.13
22:39
(63) когда на 1С кодила - так же делала
72 Рэйв
 
15.02.13
22:40
+(70)В зависимости от области видимости. Если тебе это о чем то говорит:-)
73 Nirvana
 
15.02.13
22:46
(68) Зависит от программиста, от того, насколько он организован.
74 sevenup
 
15.02.13
23:33
(41) Когда пишу на asm, всегда объявляю в конце - после заверного ret
75 Индиго
 
16.02.13
00:36
(74) пиндишь:-)
76 Hans
 
16.02.13
00:41
Не знаю откуда у меня эта привычка, но я привык определять- присваивать начальные значения перед использованием переменной. наверное еще с турбо паскаля пошло.

По ходу процедуры
77 Torquader
 
16.02.13
00:58
В 1С нужно объявлять переменные, только если они передаются в функцию, так как иначе происходит ошибка.
Что касается наложения, то если все глобальные переменные начинать с буквы г, переменные модуля с буквы м, локальные с буквы л, а параметры процедуры или функции начинать с п, то никогда на наложение не нарваться.
Чтобы не было проблем можно процедуры и функции тоже указывать с префиксом, так как имя переменной может совпасть с именем процедуры или функции.
P.S. ещё можно в начале в префиксе указывать тип, например, спр для справочника и т.д.
78 France
 
16.02.13
01:45
(40) плюсЫл.
Рай, жгЫ дальЩЭ
79 France
 
16.02.13
01:46
77, врешь же
80 HeroShima
 
16.02.13
10:05
(74) объявление переменной и выделение под неё памяти - разные вещи
81 i-rek
 
16.02.13
10:22
я не люблю когда в начале процедуры объявляют.
считаю что это замусоривает код и делает чтение сложнее

По ходу процедуры
82 i-rek
 
16.02.13
10:23
вот эту энергию которые люди прикладывают к размещению переменных в начале процедуры - пусть потратят на нормальные имена, содержащие в себе информацию о локальности/глобальности и типе
83 GANR
 
16.02.13
14:47
как правило

По ходу процедуры
84 Rie
 
16.02.13
14:48
(82) Венгерская нотация хороша - когда типов немного. В противном случае для (к примеру) экспортируемой переменной модуля объекта, принимающей значения типа СправочникСсылка.Контрагенты и СправочникСсылка.Организации - префикс будет несколько монструозным. Либо же будет простым - но не будет содержать нужной и полезной информации.
На мой взгляд, проблема в том, что конфигуратор 1С, в отличие от многих более других IDE, не даёт грамотных подсказок - насчёт типа и т.д. (Очень жаль, что ЗАО "1С" не привлекло orefkov'а к работе над Intellisense). Ну а раз так - то явное описание - которое можно сопроводить комментарием и на которое можно быстро прыгнуть по F12 - весьма небезполезно.
В остальном же - эта ветка сильно напоминает спор между "остроконечниками" и "тупоконечниками".
85 Rie
 
16.02.13
14:54
+(84) Ну и - всё сильно зависит от того, на каком языке человек пишет. В C-подобных языках есть возможность _объявлять_ переменные "по ходу процедуры". А в паскалях , васиках и 1Сиках - такой возможности просто нет.
Причём "по ходу процедуры" - это сильно неправильное название. Например,
int a = f(x);
if (a == 0) {
   int i = 1;
   // здесь переменная i существует
} else {
   int j = 0;
   // а вот здесь переменная j есть, а переменная i - тю-тю
}
Console.Out.WriteLine(i.ToString()+" "+j.ToString());
// и получите ошибку - поскольку тут ни i, ни j не существуют
86 Torquader
 
17.02.13
01:20
(84) Так в префикс мы в любом случае пишем "спр", а какого вида справочник - будет ясно из названия переменной.
В восьмёрке с типами вообще перемудрили - видимо - создатели почитали описания ядра NT, где для каждого объекта создаётся специальный объект "Тип", описывающий характеристики объекта.
87 DGorgoN
 
17.02.13
12:29
(19)  СуммаПоСтроке=0;
88 mikecool
 
17.02.13
12:30
(0) переменные следует объявлять в той области видимости, в которой они будут использоваться
89 Rie
 
17.02.13
12:31
(87) Это - не _объявление_ переменной.
90 mikecool
 
17.02.13
12:32
(89) Почему? 1с объявляет переменную в месте ее первого использования, если она не была объявлена ранее
91 Эльниньо
 
17.02.13
12:37
(88) Казалось бы. Но сотню постов чего-то обсуждают же.
92 mikecool
 
17.02.13
12:38
(91) а я все не читал )))
93 Nirvana
 
17.02.13
12:38
СуммаПоСтроке=0 - это называется "неявное объявление переменной".
94 HeroShima
 
17.02.13
12:46
(93) к тому же, в некоторых языках переменные только так и объявляются
95 Rie
 
17.02.13
12:56
(93) Смотря в каком языке - есть ведь разная терминология.
Что касается 1Сика, то описание языка утверждает:
"Операторы языка в программном модуле можно подразделить на две категории: операторы объявления переменных и исполняемые операторы.
Операторы объявления переменных создают имена переменных, которыми манипулируют исполняемые операторы".
И далее:
"Процедура <Имя_процедуры>([[Знач] <Парам1> [=<ДефЗнач>], ... ,[Знач] <ПарамN> [=<ДефЗнач>]])[Экспорт]
    // Объявления локальных переменных;
    // Операторы;
    ...
    [Возврат;]
    // Операторы;
    ...
    КонецПроцедуры"
...
// Объявления локальных переменных
    Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры (см. оператор Перем)".
96 Xapac_2
 
17.02.13
12:57
(0) это из дильфинария пришедшие, они лошары. их код гумно. не обращай внимание

По ходу процедуры
97 Nirvana
 
17.02.13
13:10
(95) "В языке переменные не обязательно объявлять в явном виде. Неявным определением переменной является первое ее появление в левой части оператора присваивания. Тип переменной оп­ределяется типом присвоенного ей значения. Не допускается использование в выражениях переменных не объявленных ранее в явном или неявном виде."
http://1c-pro.ru/wiki/index.php/Перем
98 Rie
 
17.02.13
13:19
(97) О чём и речь. Вопрос терминологии. "Описание встроенного языка" говорит одно, сайт http://1c-pro.ru - другое.
Прежде чем спорить - надо бы придти к единой терминологии, иначе получается "я ему про Фому, он мне - про Ерёму".
99 HeroShima
 
17.02.13
13:39
И тема не ограничена языком 1С, как ранее выяснено.
100 Тролль главный
 
17.02.13
13:46
100
101 Jump
 
17.02.13
15:35
(0)Переменные разные бывают.
Некоторые есть смысл объявить в начале, обычные проходные переменные, обычно объявляются перед использованием.
Т.е все зависит от смысловой нагрузки переменной, и области видимости.

Другое
102 Поросенок Петр
 
17.02.13
15:38
Размещать в начале - атавизм.

По ходу процедуры
103 _Ramzes
 
17.02.13
18:03
По ходу

По ходу процедуры
104 EvgeniuXP
 
17.02.13
18:20
(103) очень плохой стиль программирования, нужно делать код защищенным :)
105 ptrtss
 
18.02.13
05:38
(0) В 1С имеет смысл объявлять переменные в начале процедуры, чтоб быть уверенным, что не цепанешь нечаянно какую-нибудь глобальную или какой-нибудь реквизит
106 mishaPH
 
18.02.13
05:58
по разному. зависит от обстоятельств

Другое
107 DJ Anthon
 
18.02.13
06:11
(105) а толку? все равно не поможет. вот, например, обработка КонсольЗаданий, ИТСная, между прочим, создает переменную Пользователи, а в БГУ есть такой глобальный модуль, соответственно, обработка в ней не открывается без правки. Так что, как ни обзывай, все равно может понадобиться правка кода, где бы ни объявлял переменную. Предпочитаю объявлять так, чтобы не пересечься, например, Для СчетчикТаблицыОстатков = 0 По.... (Можно, конечно, запросом, но для разовых задач предпочитаю перебор, легче отлаживать).
Все счетчики стараюсь использовать единожды, никода не использую коротких переменных, типа аа = итог("а"),
и проблем с кодом не испытываю. Еще выравнивание по табуляции для удобочитаемости кода и все замечательно.
Соответственно, не вижу смысла объявлять в начале процедуры переменные, так как она может быть очень большой.

По ходу процедуры
108 VladZ
 
18.02.13
06:35
(0) Объявляю только глобальные. Объявлять локальные не вижу смысла.
109 orefkov
 
18.02.13
06:53
(89) (93)
Это не объявление переменной.
Это присваивание.
И только если 1С не найдет ничего с этим именем, она заведет переменную.
110 D_Pavel
 
18.02.13
07:05
Зачем объявлять переменные в процедуре?
Я вообще так не делаю.

Другое
111 Nirvana
 
18.02.13
12:26
(109) В TFM это давно называют "неявным объявлением переменной". Не вижу причин для обструкции этого понятия.
112 orefkov
 
18.02.13
12:35
(111)
В TFM есть много несуразностей, недомолвок, неточностей и тп, что теперь, все на веру брать?
Я смотрю не на то, как 1С это называет, а то, как это работает.
А работает оно так: переменная в данном случае неявно создается только если не найдено других переменных, свойств контекста и т.п. с этим именем. Если бы оно создавало переменную всегда - тогда бы это было "неявным объявлением переменной".
113 1Сергей
 
18.02.13
12:37
афигенный пункт голосовалки

В конце процедуры
114 Сниф
 
18.02.13
12:45
(108)...Объявлять локальные не вижу смысла - Выборка.Ссылка.ПолучитьОбъект() - как без локальной переменной с объектом работаешь?
115 VladZ
 
18.02.13
12:55
(114) ты сейчас про объявление переменной? Или про присваивание?
116 ice777
 
18.02.13
12:56
ничего в 1с объявлять не надо, даже тип. Специально для убогих сделано.)

Другое
117 Сниф
 
18.02.13
13:21
(115) это я затупил, вопрос снимаю.
118 tdm
 
18.02.13
13:30
по аналогии с типовыми конфигурациями...не хочу свой код выпячивать

По ходу процедуры
119 VladZ
 
18.02.13
13:31
(113) Ага..  В разделе "В фильме снимались..."
120 McNamara
 
18.02.13
13:39
Еще в универе после паскаля так приятно было на сях писать for(int i;i++;i<10).

По ходу процедуры
121 DJ Anthon
 
19.02.13
15:44
вот, нарыл у себя

   Перем ДатаНачалаПериода;
   Перем ТекущийКонтент;
   Перем СписокПрерываний;
   Перем РасшифровкаНачислений;
   Перем РасшифровкаНачисленийПоСрезу;
   Перем РасшифровкаЛьгот;
   Перем РасшифровкаЛьготПоСрезу;
   Перем УчтенноеКоличествоПоВидуРасчета;
   Перем ОбщаяСумма100ПоВсемПрерываниям;
   Перем СтрокаПрерывания;
   Перем НачалоПериода;
   Перем КонецПериода;
   Перем КоличествоДнейВПериоде;
   Перем КоличествоДнейВТекущемМесяце;
   Перем УчастиеВРасчете;
   Перем ВидТарифа;
   Перем ВидРасчета;
   Перем КоэффициентПериодаПрименяетсяККоличеству;
   Перем КоличествоЧеловекНаСубсидию;
   Перем ВидБлагоустройства;
   Перем ТипРасчетаТарифов;
   Перем ДнейВПериоде;
   Перем ОбщиеТарифы;
   Перем ТаблицаЖильцовДляРасчета;
   Перем ПрописаноЧеловек;
   Перем ТаблицаПорядкаРасчетаЖильцов;
   Перем ТаблицаВсехЛьготЛицевогоСчета;
   Перем ТаблицаЛьгот;
   Перем КПериода;
   Перем КПериодаДляТарифа;
   Перем КоэффициентНормы;
   Перем ПрименятьНорму;
   Перем ВидНормыПотребления;
   Перем Норма;
   Перем ВидНормы;
   Перем Месяцев;
   Перем КоэффициентПериодаДляКоличества;
   Перем ВидНормыУчетныхЕдиниц;
   Перем ОбщееКоличествоПоНорме;
   Перем СтруктураКоличества;
   Перем ТаблицаЖильцов;
   Перем КоэффициентПоПериодуДействияТарифа;
   Перем КоэффициентПериодаДляТарифа;
   Перем ТарифЦена;
   Перем ТарифПревышенияЦена;
   Перем КоличествоЧеловекДляРасчета;
   Перем СтрокаСЖильцом;
   Перем ОсталосьЖильцовДляРасчета;
   Перем ИсходноеКоличество;
   Перем ЕдиницаИзмеренияИсточника;
   Перем ЕдиницРасчета;
   Перем ЕдиницаИзмерения;
   Перем КоэффициентСкидки;
   Перем ЗнакЕдиницРасчета;
   Перем ИсходноеКоличествоУслуги;
   Перем ДанныеПоЛьготеДляЖильца;
   Перем СписокРеквизитовПоЛьготеДляЖильца;
   Перем ОбщаяСумма100;
   Перем ФлагИспользованияЕдиницПлощади;
   Перем РаспределитьРавнымиДолями;
   Перем ДоляУслугиЖильца;
   Перем СтруктураКоличествоПоИсточникам;
   Перем СуммаНачислено;
   Перем СуммаЛьготы;
   Перем СтрокаЖильцов;
   Перем Жилец;
   Перем ЭтоЛьготник;
   Перем РаспределенноеКоличествоУслугиЖильца;
   Перем СуммаЛьготыПоЖильцу;
   Перем Сумма100ПоЖильцу;
   Перем ДействующийПроцентЛьготы;
   Перем ДействующийПроцентЛьготыСверхНормы;
   Перем ИсточникДляВыбораКоличествоУслугиПоНорме;
   Перем СтрокаЛьготы;
   Перем НормаЖильца;
   Перем ПроцентЛьготы;
   Перем КоэффициентДействующейЛьготы;
   Перем ПроцентЛьготыСверхНормы;
   Перем Льготник;
   Перем ИсточникФинансирования;
   Перем ДействующаяЛьгота;
   Перем ДействующаяЛьготаНаУслугу;
   Перем ДействующийСпособРасчетаЛьготы;
   Перем КоэффициентДействующейЛьготыСверхНормы;
   Перем ТарифыДляРасчета;
   Перем КоличествоУслугиПоНорме;
   Перем КоличествоУслугиСверхНормы;
   Перем КоличествоПоЛьготе;
   Перем УслугаЖильца;
   Перем НачисленоПоНорме100;
   Перем НачисленоСверхНормы100;
   Перем НачисленоПоЛьготе;
   Перем НачисленоПоУслуге100;
   Перем НачисленоПоЛьготе100;
   Перем НачисленаяЛьгота100;
   Перем КоличествоБезЛьготы;
   Перем НачисленнаяЛьгота;
   Перем СтрокаРасшифровкиЛьготы;
   Перем ВладелецДействующаяЛьготаНаУслугу;
   Перем ДляРасчетаСоциальнойНормы;
   Перем КоличествоПоИсточнику;
   Перем УчаствуетВРасчетеСубсидии;
   Перем СтрокаРасшифровки;
   Перем КДнейВПериоде;
   Перем НачисленоПоНормеБезЛьготы;
   Перем НачислениеВПределахНорматива;
   Перем НачисленоПоНорме;
   Перем НачисленоСверхНормы;
   Перем Начислено;
   Перем Начислено100;
   Перем ДляРасчетаСубсидии;
   Перем КоличествоДляРасчетаСоциальнойНормы;
   Перем МинимальноеКоличествоДляРасчетаСоциальнойНормы;
   Перем КоэффициентПроживающихКИмеющимПравоНаСубсидию;
   Перем СоциальнаяНорма;
   Перем Результат;


как бы вы назвали такого программиста?
AdBlock убивает бесплатный контент. 1Сергей