Имя: Пароль:
1C
 
Переменное имя переменной
0 1С: Новичок
 
06.12.04
14:40
Существует цикл:
Для а = 1 По тз.КоличествоСтрок() Цикл
..............
КонецЦикла;

Как можно внутри цикла сделать переменную, имя которой выглядело примерно так Выб_1, Выб_2, .... Выб_а, где а - текущая строка тз.
1 Kopyl
 
06.12.04
14:41
А с массивами разобраться пробывал?
2 Лошадка в пальто
 
06.12.04
14:41
Для чего может подобный экстремальный трах понадобиться?
3 Kopyl
 
06.12.04
14:43
Оператор объявления переменной

Перем

Объявление переменной в явном виде.

Синтаксис:
Перем <Имя_переменной> [[<Размерность>]] [Экспорт];
Англоязычный синоним:
Var:
Параметры


<Имя_переменной>    Имя переменной.
[<Размерность>]    Необязательная числовая константа (записывается в квадратных скобках), указывается только в том случае, если объявляется массив и должна представляться в виде положительного целого числа.
4 1С: Новичок
 
06.12.04
14:43
(2) Массивы - это хорошо, но не хочется. Есть какой-то метод, я не помню.
5 Лошадка в пальто
 
06.12.04
14:44
Надо 427 поискать у него должны еще куи были остаться.... Чтоб и эту веточку не обделил :)
6 GrayT
 
06.12.04
14:45
Через Шаблон выпендривайся
7 Бивень
 
06.12.04
14:45
(4) Использовать массив для твоей задачи мог посоветовать только чайник ...
И (3) только подтверждает моё предположение ...
8 Бивень
 
06.12.04
14:46
(6) Ну-ка, ну-ка ... Как через Шаблон()?
9 1С: Новичок
 
06.12.04
14:47
(7) Был какой-то способ - совершенно точно. Я даже его видел.. Но забыл :(
10 Kopyl
 
06.12.04
14:47
(7) что то самоваров у нас развелось....
11 Бивень
 
06.12.04
14:48
(9) Добавь к своей тз служебную колонку, в неё и пиши ...
12 Бивень
 
06.12.04
14:49
(10) Если ты чайник, читай, что отвечают другие, учись, думай ...
Успеешь ещё ..., наотвечаешься ...
13 1С: Новичок
 
06.12.04
14:50
(8) Я знаю, что ты можешь помочь ;) Всю задачу целиком приводить - это очень долго и утомительно. Мне осталось только вот эту проблему решить и все - отчет готов и все довольны.
14 Kopyl
 
06.12.04
14:50
(11) дак это ж не "Переменное имя переменной"
15 1С: Новичок
 
06.12.04
14:50
(12) Опоздал ;) Спасибо.
16 1С: Новичок
 
06.12.04
14:51
(14) Да, ты прав.
17 Diter
 
06.12.04
14:53
(9) А ты не хочешь сделать список значений или ТЗ, в которых будешь хранить номер переменной или её название и значение. Тогда в цикле ты можешь получать имя следующей переменной и устанавливать её значение в той же ТЗ или списке. Потом будешь обращаться к ним. А значение установить просто ТЗ.УстановитьЗначение(...) По моему должно сработать :)
18 1С: Новичок
 
06.12.04
14:54
(17) Хорошая идея! Сейчас попробую :)
19 Kopyl
 
06.12.04
14:55
(11) это просто значение в таблице значений, которое потом придется использовать как "ссылочное значение"
А вот из оригинального вопроса (я так понял)
"Для а = 1 По тз.КоличествоСтрок() Цикл
КонецЦикла; "
То бы-ло  бы самым удобным сделать так:
Для а = 1 По тз.КоличествоСтрок() Цикл
   Выб_[a]=нужное значение4;
КонецЦикла;
20 SnarkHunter
 
06.12.04
14:57
Я в шоке...
21 Kopyl
 
06.12.04
14:57
(17) работать то оно будет, а вот только это то что нужно вопрошаещему?
22 1С: Новичок
 
06.12.04
14:57
(19) Если поставить значение в [..] то получается массив, с которыми не хотелось бы завязываться...
23 1С: Новичок
 
06.12.04
14:58
(20) От чего?
24 Kopyl
 
06.12.04
15:00
тяжело судить о способах решения не зная саму , исходную задачу....
25 Бивень
 
06.12.04
15:00
(21) Ты ведь знаешь, наверно, что массив нужно ещё объявлять? ...
Как ты это делать собираешься?
26 Diter
 
06.12.04
15:00
(21) значешь в чём приемущество по сравнению с массивом? В динамичности. Сколько хочешь столько и делай номеров переменной.
27 Бивень
 
06.12.04
15:01
(23) От выдающихся познаний в программировании Kopyl'а, Diter' и GrayT ...
28 1С: Новичок
 
06.12.04
15:02
Ребята, все это правильно, но я точно помню, что был какой-то более красивый способ присвоения одной переменной в конец имени другой переменной. Я вот не помню где, но я точно это видел.
29 Diter
 
06.12.04
15:03
(27) Что в этот раз не так?
30 GrayT
 
06.12.04
15:03
(23)От хранения имени переменной в ТЗ наверное
31 Kopyl
 
06.12.04
15:03
(25) ведь есть "тз", есть "КоличествоСтрок()"
Вызываем процедуру перебор( тз.КоличествоСтрок() )
А в процедуре
перем [тз.КоличествоСтрок()]
а потом цикл...
32 Дуч
 
06.12.04
15:04
Я такое делал. Начал с того что посмотрел вот здесь.
http://www.sinor.ru/~my1c/knowhow/shablon.html
В результате получилось и работает.
33 1С: Новичок
 
06.12.04
15:04
Есть такое высказываение: "Разумный прячет знание".... К большому сожалению остальных.... :)
34 Бивень
 
06.12.04
15:04
(29) А зачем ты предлагаешь создавать лишние сз или тз?
35 GrayT
 
06.12.04
15:05
(27)Не понял? То что его задача скорее всего решается простой ТЗ - сказали еще в самом начале. А я вроде помалкивал. Что не так? ;)
36 Бивень
 
06.12.04
15:05
(32) Ещё один! :))
Вот это сборище ... :))
37 Лошадка в пальто
 
06.12.04
15:05
Странно, что никто мне так и не ответил на вопрос из (2)
38 1С: Новичок
 
06.12.04
15:05
(32) Вот именно здесь я это и видел в первый раз :)) Спасибо!
39 Rovan
 
гуру
06.12.04
15:05
(13) Делай через список значений - можешь даже представление туда запехать "Выб_1", "Пук_2", "Х_3".
40 Diter
 
06.12.04
15:05
(28) Ты ничего не путаешь? Речь шла именно о переменных а не об атрибутах формы или реквизитах документа? Может это были идентификаторы колонок в ТЗ?
41 Бивень
 
06.12.04
15:06
(35) А кто про шаблоны гнал? Я чтоль?
42 1С: Новичок
 
06.12.04
15:06
(37) Очень утомительно и долго рассказывать. Времени нет.
43 GrayT
 
06.12.04
15:07
(41)А что не взлетит чтоль?
44 1С: Новичок
 
06.12.04
15:07
(40) Именно о переменных. Ответ в (32)
45 Бивень
 
06.12.04
15:07
(43) Нет ...
46 GrayT
 
06.12.04
15:08
Ну вот. Все, испортили настроение
47 GrayT
 
06.12.04
15:09
(44)Какая несправедливость
48 Бивень
 
06.12.04
15:09
(46) Ну, извини, извини ...
Я ж не знал, что оно хорошее у тебя было ...
49 Kopyl
 
06.12.04
15:10
Жуть...
"http://www.sinor.ru/~my1c/knowhow/shablon.html"
И это ты называеш "Переменное имя переменной"
50 Бивень
 
06.12.04
15:11
(44) А в (32) тоже чайник выступил ..., не обращай внимания ..., их тут много ...
И чем вопрос проще, тем больше их слетается ...
51 1С: Новичок
 
06.12.04
15:12
(49, 50) Да... я уже понял, когда попытался сейчас на практике реализовать то, что написано.
52 1С: Новичок
 
06.12.04
15:12
то что написано в (32)
53 Kopyl
 
06.12.04
15:13
как класно, "вокруг одни чайники", один Бивень- "бивнем" называется...
54 Бивень
 
06.12.04
15:15
(53) Сам удивляюсь ...
55 Дуч
 
06.12.04
15:15
(36) А ты как хотел. Нас много. Человек спрашивает. Отвечаем, а надо ему это или нет это уже другой вопрос. Извраты разные бывают. Вот к примеру если у тебя 10 картинок на форме надо показать, что же каждой прописывать? А так можно извратиться.
56 1С: Новичок
 
06.12.04
15:15
Я вот думаю: выходит, что решения этой проблемы не существует и зря я трачу время? Нельзя составить переменную из двух других, а потом результирующей присвоить значение?
57 Дуч
 
06.12.04
15:17
(56) А так ты вот о чем.
58 Бивень
 
06.12.04
15:18
(55) Имхо, ответ на вопрос, не отвечающий на этот вопрос, ответом на вопрос не является ...
59 SnarkHunter
 
06.12.04
15:18
(37)Скажем, из любви к искусству...
60 1С: Новичок
 
06.12.04
15:18
(57) Да. Я об этом :)
(58) Красиво сказано ;)
61 GrayT
 
06.12.04
15:19
ЧТо это было "Нельзя составить переменную из двух других"?
С шаблоном проблема одна, имхо, переменные должны быть определены
62 1С: Новичок
 
06.12.04
15:21
Для а = 1 По тз.КоличествоСтрок() Цикл
ДатаНач = "ДатаНач"+а;
ДатаНач = тз.ПолучитьЗначение(а, "ДатаНач");
Сообщить(ДатаНач);
КонецЦикла;

Все работает! Только что проверил :)
63 Дуч
 
06.12.04
15:21
Вот только красиво говорить и можем.
64 Наблюдатель
 
06.12.04
15:22
1С:Новичек старательно подлизывает Бивню... и язык при деле и Рупору хорошо...
65 Лошадка в пальто
 
06.12.04
15:23
Что означает вот это внизу веток "Script time
0.005 "? Вчера еще не было такого
66 GrayT
 
06.12.04
15:23
А слабо теперь до 100 дотянуть :)
67 Дуч
 
06.12.04
15:23
Для а = 1 По тз.КоличествоСтрок() Цикл
ДатаНач = тз.ПолучитьЗначение(а, "ДатаНач");
Сообщить(ДатаНач);
КонецЦикла;
А так работает?
68 GrayT
 
06.12.04
15:24
(65)?????? Я уж месяца 4 (если не больше) как перестал на это внимане обращать :)
69 Дуч
 
06.12.04
15:25
(65) Волшебник отладчиком балуется :-)
70 1С: Новичок
 
06.12.04
15:25
(64) Продолжай наблюдение :)
71 1С: Новичок
 
06.12.04
15:25
(67) Для дальнейшей обработки переменных в запросе мне нужно именно
ДатаНач1 = <значение>
ДатаНач2 = <значение> и т.д.
72 Лошадка в пальто
 
06.12.04
15:25
68. Да? И все же вопрос в силе. Спросила бы у Владельца Ресурса, но его нет в аське
73 Бивень
 
06.12.04
15:26
(63) Можем и некрасиво ...
(67) Вау ..., а как ты до этого допёр? ... Не иначе тоже волшебник ...
74 Бивень
 
06.12.04
15:27
(72) Было! Давно оно уже ...
Поиском поищи ...
75 Дуч
 
06.12.04
15:33
(71) и как это связано с (62)
76 1С: Новичок
 
06.12.04
15:34
(75) Так, что в цикле изменяется имя переменной
77 Diter
 
06.12.04
15:40
(73) Так я чего то не понял. Ты чего меня чайником обозвал если я подсказал тоже самое что и ты, только в отдельном СЗ или ТЗ? А главное то что (0) это и надо было?
78 Бивень
 
06.12.04
15:44
(77) Я никогда не забираю свои слова взад ..., таков уж мой принцип ...
Увы, теперь тебе придётся носить пожизненно этот позорный ярлык ...
79 Дуч
 
06.12.04
15:48
(75)    Тз=СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("ДатаНач");
   Для а = 1 По 10 Цикл
       ТЗ.НоваяСтрока();
       ТЗ.ДатаНач=ТекущаяДата()+а;
   конеццикла;
   Для а = 1 По тз.КоличествоСтрок() Цикл
       ДатаНач = "ДатаНач"+а;
       Сообщить(""+ДатаНач);
       ДатаНач = тз.ПолучитьЗначение(а, "ДатаНач");
       Сообщить(""+ДатаНач);
   КонецЦикла;
Результат
ДатаНач1
07.12.04
ДатаНач2
08.12.04
ДатаНач3
09.12.04
ДатаНач4
10.12.04
ДатаНач5
11.12.04
ДатаНач6
12.12.04
ДатаНач7
13.12.04
ДатаНач8
14.12.04
ДатаНач9
15.12.04
ДатаНач10
16.12.04

Где здесь меняется имя переменной?
80 1С: Новичок
 
06.12.04
15:51
ДатаНач1.....ДатаНач10 Разве нет?
81 NS
 
06.12.04
15:53
Некоторые черезчур умные люди не в курсе - что запись/получение значения из массива - раз этак в шесть быстрее, чем из ТЗ.
82 Дуч
 
06.12.04
15:54
(80) Так это значения переменной ДатаНач на различных этапах
83 1С: Новичок
 
06.12.04
15:56
"ДатаНач1....ДатаНач10" - это не значение, это имя. Значение: "07.12.04 .. 16.12.04"
84 Дуч
 
06.12.04
15:57
Тип значения ДатаНач на этапе...  
ДатаНач1   Строка
07.12.04   Дата
ДатаНач2   Строка
08.12.04   Дата
ДатаНач3   Строка
09.12.04   Дата
ДатаНач4   Строка
10.12.04   Дата
ДатаНач5   Строка
11.12.04   Дата
ДатаНач6   Строка
12.12.04   Дата
ДатаНач7   Строка
13.12.04   Дата
ДатаНач8   Строка
14.12.04   Дата
ДатаНач9   Строка
15.12.04   Дата
ДатаНач10   Строка
16.12.04   Дата

(80) ни о чем не говорит?
85 Дуч
 
06.12.04
15:59
(83) и как же мне получить ДатаНач1

работает ? Сообщить(ДатаНач1)
86 1С: Новичок
 
06.12.04
16:00
(84) Конечно говорит. Переменная сначала имеет тип "Строка", что вполне логично. Потом ей присваивают значение типа "Дата" и она тоже приобретает тип "Дата".
87 1С: Новичок
 
06.12.04
16:00
(85) Не пробовал
88 mszsuz
 
06.12.04
16:05
(81) У массива есть одно неприятное свойство - у него фиксированный размер.
89 NS
 
06.12.04
16:08
(88) Эт 1С исправила...
90 Бивень
 
06.12.04
16:12
(89) ?
91 NS
 
06.12.04
16:13
8.0
92 GrayT
 
06.12.04
16:13
(89)Т.е. масив может быть динамическим?
Нарисуй пример, плиз
93 GrayT
 
06.12.04
16:14
(91)Ну и как тебя обозвать? :)
94 NS
 
06.12.04
16:15
А еще соответствие добавили... классная штука - она точно индексированная на простых типах...
95 1С: Новичок
 
06.12.04
16:17
А счастье было так возможно.... :(
96 mszsuz
 
06.12.04
16:31
(0) Юзай СписокЗначений
СЗ = СоздатьОбъект("СписокЗначений");
Для н = 1 по 5 Цикл
СЗ.Установить("Выб_"+н,н);
КонецЦикла;
и потом:
Для н = 1 по 5 Цикл
Сообщить(СЗ.Получить("Выб_"+н));
КонецЦикла;
97 1С: Новичок
 
06.12.04
16:33
(96) Ок. Попробую.
98 Дуч
 
06.12.04
16:46
Что-то монстры куда-то убежали:)
99 NS
 
06.12.04
16:49
(96) Это медленней, чем ТЗ...
Для данного случая - самое быстрое - XBase - из штатных.... если не пугает размер - то массив, получить() - очень плохой метод - перебирает весь список - лучше уж в соответствующей строке брать значение. (если значения именно 1..N)
100 Бивень
 
06.12.04
17:01
100!
101 YamMike
 
06.12.04
17:03
(100) долго думал... считал...
102 Дуч
 
06.12.04
17:12
Да это достижение. Гордись.
103 Бивень
 
06.12.04
17:18
(102) Тьфу на тебя, идиот!
104 1С: Новичок
 
06.12.04
17:22
В общем сделал я через функцию, которая возвращает имя переменной в зависимости от номера текущей строки ТЗ, потом все это шлется в запрос. Все работает.
105 Ёжик в тумане
 
06.12.04
23:42
Ну наконец-то...
Изобрели-таки велосипед...
...надо было мне пари с кем-нибудь заключить...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.