Имя: Пароль:
1C
1С v8
Как в цикле присвоить значение переменным с именами "Перем1","Перем2",..
0 Cerera
 
16.12.12
16:50
в одном модуле есть много переменных с одинаковыми именами "Перем1", "Перем2", .... "Перем20"

Как в цикле присвоить им одинаковое значение, чтото типа

Для Инд=1 По 20 Цикл
  УстановитьЗначение("Перем"+Инд,"");
КонецЦикла;

Подскажите а то я чтото не могу вспомнить и найти.
1 PR
 
16.12.12
16:53
Вспоминай в сторону массива.
2 Nexux
 
16.12.12
16:53
Выполнить?
3 France
 
16.12.12
16:53
и чо, что есть?? они в теле модуля описаны, или по процедурам разбросаны??
4 Нуф-Нуф
 
16.12.12
16:55
наличие таких переменных в коде - признак гаввнокода
5 zak555
 
16.12.12
16:56
> в одном модуле

в каком ?
6 Wobland
 
16.12.12
16:57
(4) что переменные? ресурсы у регистра видел: размер42, размер44...
7 zak555
 
16.12.12
16:58
(6) для размера обуви нужно было добавить характеристику в измерения РП
8 zak555
 
16.12.12
16:58
*рн
9 Нуф-Нуф
 
16.12.12
16:58
(6) гыгыгыгы
10 France
 
16.12.12
16:59
Нуф-Нуф категоричен.. на мисте, кажись,  было определение категоричности - поищи его..
11 Wobland
 
16.12.12
17:00
причём на мисте во второй половине года. кого не ломает в поиск сходить? ;)
12 Undefined vs NULL
 
16.12.12
17:00
хотя из типовых есть Табель, там хз сколько полей с "коэффициентами" от 1 до 31
13 GANR
 
16.12.12
17:00
(0) см.(2) Выполнить / Вычислить в помощь.
14 Нуф-Нуф
 
16.12.12
17:01
(10) давай пример неободимости использования УГ из сабжа
15 France
 
16.12.12
17:02
(14) это может оправдать категоричность?))...
16 Нуф-Нуф
 
16.12.12
17:03
(15) да причем здесь категоричность. есть признаки гаввнокода (в силу необпытности, тупости, невнимательности).
в сабже один из них. запросы в цикле кстати один из них
17 Wobland
 
16.12.12
17:04
а я поддержу Нуф-Нуфа. (0) - это симптом, автору следует задуматься. больше на меня сегодня тут не рассчитывайте ;)
18 Нуф-Нуф
 
16.12.12
17:05
(17) а чего так? садишься в синий трамвай?
19 Cerera
 
16.12.12
17:05
(3)в одной процедуре сидят. Тупо так
Перем1="";
Перем2="";
Перем3="";
....

(13)не выходит
   Для Инд=1 По 12 Цикл
       Выполнить("Перем"+Инд+"=22");
   КонецЦикла;

потому что переменные не объявлены
20 France
 
16.12.12
17:05
(16) ок, для начала чем не кошерен код в сабже, и второе - в чем отсутствие кошерности в запросе в цикле?)) только без рефлексии типа "да это же все понятно, уже сто раз наступали на грабли"))
21 DrShad
 
16.12.12
17:05
(17) +1
22 DrShad
 
16.12.12
17:06
давай всю процедуру
23 GANR
 
16.12.12
17:07
24 Нуф-Нуф
 
16.12.12
17:07
(20) на троллинг не поведусь. если на самом деле не понимаешь что не так в сабже - аминь тебе судья
25 Wobland
 
16.12.12
17:08
(18) синий трамвай - это что? что-то из области кожаных флейт? ;)
срачей не хочу
26 Нуф-Нуф
 
16.12.12
17:08
Правила образования имен переменных

1. Имена переменных следует образовывать от терминов предметной области таким образом, чтобы из имени переменной было понятно ее назначение.

2. Имена следует образовывать путем удаления пробелов между словами. При этом, каждое слово в имени пишется с прописной буквы. Предлоги и местоимения из одной буквы также пишутся прописными буквами.
Пример:

Копировать в буфер обмена
Перем ДиалогРаботыСКаталогом; // Диалог работы с каталогом
Перем КоличествоПачекВКоробке; // Количество пачек в коробке

Примеры некорректных имен переменных:

Копировать в буфер обмена
масРеквизитов, соотвВидИмя, новСтр

3. Имена переменных запрещается начинать с подчеркивания.

4. Имена переменных не должны состоять из одного символа. Использование коротких имен переменных допускается только для счетчиков циклов.

5. Переменные, отражающие состояние некоторого флага, следует называть так, как пишется истинное значение этого флага.
Например:

Копировать в буфер обмена
Перем ЕстьОшибки; // Признак наличия ошибок в процедуре.
Перем ЭтоТоварТара; // Признак, что товар относится к возвратной таре.
27 France
 
16.12.12
17:08
(24) ясно.. ответил ровно так, как и ожидалось))
28 Нуф-Нуф
 
16.12.12
17:09
давайте хоть срач устроим. единственная живая ветка на форуме
29 Нуф-Нуф
 
16.12.12
17:09
(27) красава. иди в экстрасенсы на тнт
30 France
 
16.12.12
17:10
(26) а если код формируется на лету на стороне 1С предприятия?? и затем компилируется и выполняется??
31 France
 
16.12.12
17:10
ну, компилируется - не правильно написал, конечно же..
32 Нуф-Нуф
 
16.12.12
17:11
(30) не совсем понял, что ты имеешь ввиду, поясни
33 Cerera
 
16.12.12
17:12
(22)да ничего в ней такого нет. просто к наименованию при выводе на печать добавляет дополнительные параметры из табличной части.

       Размеры1="";
       Размеры2="";
       Размеры3="";
       Размеры4="";
       Размеры5="";                
       Размеры6="";
       Размеры7="";
       Размеры8="";
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.А) И ЗначениеЗаполнено(ВыборкаСтрокТовары.В) Тогда
           Размеры1 = СокрЛП(ВыборкаСтрокТовары.А)+"*"+СокрЛП(ВыборкаСтрокТовары.В);
       КонецЕсли;
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.А1) И ЗначениеЗаполнено(ВыборкаСтрокТовары.В1) Тогда
           Размеры2 = СокрЛП(ВыборкаСтрокТовары.А1)+"*"+СокрЛП(ВыборкаСтрокТовары.В1);
       КонецЕсли;
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Толщина) Тогда
           Если ВыборкаСтрокТовары.ТипМеталла=1 Тогда
               Размеры3 = "черн. " + СокрЛП(ВыборкаСтрокТовары.Толщина);
           Иначе
               Размеры3 = СокрЛП(ВыборкаСтрокТовары.Толщина);                
           КонецЕсли;
       КонецЕсли;                                                                   Выполнить
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Л) Тогда
           Размеры4 = СокрЛП(Формат(ВыборкаСтрокТовары.Л,"ЧГ=0"));
       КонецЕсли;
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Количество) Тогда
           Размеры5 = СокрЛП(Формат(ВыборкаСтрокТовары.Количество,"ЧГ=0"));
       КонецЕсли;
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Тип_Изделия) Тогда
           Размеры6 = СокрЛП(ВыборкаСтрокТовары.Тип_Изделия);
       КонецЕсли;
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Тип) Тогда
           Размеры7 = СокрЛП(ВыборкаСтрокТовары.Тип);
       Иначе
       КонецЕсли;
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Угол) Тогда
           Размеры8 = СокрЛП(ВыборкаСтрокТовары.Угол);
       КонецЕсли;
       Размеры9="";
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Гш) Тогда
           Размеры9 = СокрЛП(ВыборкаСтрокТовары.Гш);
       КонецЕсли;
       Размеры10="";
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.А2) Тогда
           Размеры10 = СокрЛП(ВыборкаСтрокТовары.А2);
       КонецЕсли;

           Размеры11="";
           Если ЗначениеЗаполнено(ВыборкаСтрокТовары.В2) Тогда
               Размеры11 = СокрЛП(ВыборкаСтрокТовары.В2);
           КонецЕсли;
           
           Размеры12="";
           Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Смещ) Тогда
               Размеры12 = СокрЛП(ВыборкаСтрокТовары.Смещ);
           КонецЕсли;
           
           Размеры13="";
           Если ЗначениеЗаполнено(ВыборкаСтрокТовары.ВрезкаПар1) Тогда
               Размеры13 = СокрЛП(ВыборкаСтрокТовары.ВрезкаПар1);
           КонецЕсли;
           
           Размеры14="";
           Если ЗначениеЗаполнено(ВыборкаСтрокТовары.ВрезкаПар2) Тогда
               Размеры14 = СокрЛП(ВыборкаСтрокТовары.ВрезкаПар2);
           КонецЕсли;
           
           Размеры15="";
           Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Покраска) Тогда
               Размеры15 = СокрЛП(ВыборкаСтрокТовары.Покраска);
           КонецЕсли;
           
           Размеры16="";
           Если ЗначениеЗаполнено(ВыборкаСтрокТовары.ФланецТип) Тогда
               Размеры16 = СокрЛП(ВыборкаСтрокТовары.ФланецТип);
           КонецЕсли;
   
           Размеры17="";
           Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Примечание) Тогда
               Размеры17 = СокрЛП(ВыборкаСтрокТовары.Примечание);
           КонецЕсли;

           ОбластьМакетаСтрока.Параметры.ТоварНаименование = НаименованиеТовара+ ?(Размеры6="",""," "+Размеры6) + ?(Размеры1="","",", "+Размеры1)+
           ?(Размеры2="","",", "+Размеры2)+
           ?(Размеры10="",""," "+Размеры10)+
           ?(Размеры11="","","*"+Размеры11)+
           
           
           ?(Размеры3="",""," "+Размеры3+"мм")+?(Размеры4="",""," L="+Размеры4+"мм")
           +?(Размеры7="",""," Тип"+Размеры7)+?(Размеры8="",""," "+Размеры8+"гр")+?(Размеры9="",""," Lш="+Размеры9)+
           
           ?(Размеры12="",""," Смещ="+Размеры12)+
           ?(Размеры13="",""," "+Размеры13)+
           ?(Размеры14="",""," "+Размеры14)+
           ?(Размеры15="",""," "+Размеры15)+
           ?(Размеры16="",""," "+Размеры16)+                
           ?(Размеры17="",""," "+Размеры17);
34 Фокусник
 
16.12.12
17:13
(19) что мешает вместо n переменных сделать 1 массив, или 1 структуру, или 1 соответствие?
35 zak555
 
16.12.12
17:13
(33) обувь ?
36 DrShad
 
16.12.12
17:13
(34) +100500
37 Нуф-Нуф
 
16.12.12
17:14
УХЕББАТЬ
38 YV
 
16.12.12
17:16
(4) +100500
39 France
 
16.12.12
17:17
да, чел решал в лоб)) знакомый стиль))
40 DrShad
 
16.12.12
17:18
(39) в лоб!? ЧЕРЕЗ ЖПО он решал
41 France
 
16.12.12
17:21
(40) ну, не скажи... считается "результат дал"...
зы правда, после такого результата приходится разгребать неделями..
42 Cerera
 
16.12.12
17:23
(34)(38)(39)да эта процедура была уже. точнее это кусок кода из модуля печати торг12 нетиповой. а я переношу его в глобальник потому что используется ещё в других документах. и вот эти переменные бесят. часть вначале программы присовены а часть посередине кода были. вот я и хотел сократить длину кода лишь. а не переделывать сам код.
43 Cerera
 
16.12.12
17:23
похоже нереально решить это.
44 DrShad
 
16.12.12
17:24
(43) а чем тебе ответ в (34) нереален?
45 EvgeniuXP
 
16.12.12
17:25
(0) Соответствие.
46 Нуф-Нуф
 
16.12.12
17:27
перепиши код
47 Нуф-Нуф
 
16.12.12
17:27
будь мужиком, блеать!
48 Cerera
 
16.12.12
17:31
(44)это мне придется весь код править. а у меня на это нет времени. я больше эту базу не увижу ниразу.
49 zak555
 
16.12.12
17:32
Cerera это обувь ?
50 Web00001
 
16.12.12
17:33
(0)Если переменная объявлена то Выполнить спасет отца русской демократии, если не объявлена, то извините.
Тебе тут правильно говорят в (45), соответствие твое все. Или таблица значений и код в таком стиле
ТаблицаСПеременными[НомерПеременной].ЛюбоеНазваниеКолонки
51 DrShad
 
16.12.12
17:35
(48) какого куя ты тогда сюда пишешь?
52 Cerera
 
16.12.12
17:38
(49)да это хуже чем обувь. это производство воздухоотводов ) трубы такие сделанные из уголков )
(50)это я и понял. а вот объявление уже не сделать через "выполнить".
(51)чтобы узнать как групповое присваивание по имени сделать в цикле. и уже узнал, что через "Выполнить". Но этого оказалось недостаточно, поскольку переменные не объявлены.
53 DrShad
 
16.12.12
17:40
ясно все с тобой, только учти что тот кто будет работать с этой базой после тебя - спишет все косяки на тебя
54 Фокусник
 
16.12.12
17:44
(48) если через структуру, то не так уж много правок: к каждому РазмерN слева приписать струкРазмеры.РазмерN
Зато потом можно пользоваться Область.Параметры.Заполнить(ст рукРазмеры) и в цикле получать/присваивать через струкРазмеры["Размер"+n]
55 DrShad
 
16.12.12
17:54
да и не нужно ее в глобальник затягивать, достаточно через объект обращаться к экспортной функции печати, а еще лучше сделать ВПФ
56 КонецЦикла
 
16.12.12
18:11
(53) Неправильно
Если есть косяки - их надо переписать, желательно без косяков
А валить годами на ушедшего сотрудника - признак недалекого ума или лени, я бы таких "программистов" выипал и выгнал
57 Cerera
 
16.12.12
18:54
(54)ну так то да. вы правы
58 kiruha
 
17.12.12
00:09
Ну бывает нужно  Пар1... Пар9 для универсальных обработок
Например для 7.7 -
СводныйОстаток(Пар1,Пар2,,,,Пар6) смотрится намного лучше
чем СводныйОстаток(Праметры[1],Параметры[2],,,Параметры[6])

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