Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
McGoblin
5 / 5 / 2
Регистрация: 18.05.2012
Сообщений: 61
1

Переменное имя переменной в 1с

11.09.2017, 16:46. Просмотров 772. Ответов 5
Метки нет (Все метки)

Всем привет.
Такой вопрос, возможно ли создать переменное имя переменой
Допустим мне надо
Индекс1 = ФИндекс
и далее по адресу
Квартира1 = ФКвартира

Индекс2 = ПИндекс
и далее по адресу
Квартира2 = ПКвартира

Так вот как видно, разница в 1 символ там и там, можно ли этот символ как то присабачить переменной программно?

Хочу вынести заполнение в функцию
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2017, 16:46
Ответы с готовыми решениями:

переменное имя переменной
есть переменные вида: $a $b $c . . $n $a_page $b_page

Переменное имя таблицы
Подскажите, как сохранить результаты запроса в таблице с именем = переменной (у...

Создание переменной, имя которой включает имя другой переменной
Вот пример кода var y = 1; var x = 'p' + y; eval( 'var' + x + '= 123' );к...

Присвоить имя переменной такое же как имя файла
x = cell(1,100); %подготовим массив для хранения данных for go = 1:10...

Как присвоить имя переменной равное аргументу другой переменной?
В общем вопрос такой: Допустим есть переменная string i= "qwer", хочу создать...

5
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
11.09.2017, 16:52 2
1C
1
2
сч=1;
Вычислить("Индекс"+сч+" = ФИндекс");
1
McGoblin
5 / 5 / 2
Регистрация: 18.05.2012
Сообщений: 61
11.09.2017, 16:59  [ТС] 3
Т.е. он будет считать
У меня код такой
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Строка.ФактическийАдрес = Сотрудник.ФАдрес ;
        Строка.Индекс = Сотрудник.ФИндекс ;
        Строка.Регион = Сотрудник.ФОбласть ;                     
        Строка.Район = Сотрудник.ФРайон ;
        Строка.Город = Сотрудник.ФГород ;
        Строка.НаселенныйПункт = Сотрудник.ФСело ;
        Строка.Улица = Сотрудник.ФУлица ;
        Строка.Дом = Сотрудник.ФДом ;
        Строка.Корпус = Сотрудник.ФКорпус ;
        Строка.Квартира = Сотрудник.ФКвартира ;
        
        Строка.АдресПрописки = Сотрудник.ПАдрес ;
        Строка.Индекс1 = Сотрудник.ПИндекс ;
        Строка.Регион1 = Сотрудник.ПОбласть ;
        Строка.Район1 = Сотрудник.ПРайон ;
        Строка.Город1 = Сотрудник.ПГород ;
        Строка.НаселенныйПункт1 = Сотрудник.ПСело ;
        Строка.Улица1 = Сотрудник.ПУлица ;
        Строка.Дом1 = Сотрудник.ПДом ;
        Строка.Корпус1 = Сотрудник.ПКорпус ;
        Строка.Квартира1 = Сотрудник.ПКвартира ;
Если я заменяю его вот так
1C
1
2
3
4
5
6
7
8
9
10
//Этот кусок будет заполнятся в ЕслиТоИначе
Тип адреса = "фактическийАдрес";
Сч = "1";
Префикс = "Ф"
//Этот кусок заполнился в ЕслиТоИначе
 
                Вычислить (Строка.+"ТипАдреса"+ = Сотрудник.+"Префикс"+Адрес) ;
        Вычислить (Строка.Индекс+"Сч"+ = Сотрудник.+"Префикс"+ФИндекс) ;
        //,,,
//И так далее по списку
То он у меня расчитает? и поставит все?
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
11.09.2017, 17:48 4
1C
1
2
3
4
5
6
7
8
Функция абракадабра(Строка, Сотрудник, Префикс, Постфикс)
 
    Строка["Индекс"+Постфикс] = Сотрудник[Префикс+"Индекс"];
 
КонецФункции
 
абракадабра(Строка, Сотрудник, "Ф", "1");
абракадабра(Строка, Сотрудник, "П", "2");
Добавлено через 54 секунды
Цитата Сообщение от McGoblin Посмотреть сообщение
Строка.Индекс
Это не переменная, а свойство какого-то объекта.

Не путайте понятия Переменная и Свойство
1
McGoblin
5 / 5 / 2
Регистрация: 18.05.2012
Сообщений: 61
11.09.2017, 21:25  [ТС] 5
Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

А мне надо именно переменную.
Вот в PHP есть такое
PHP
1
2
3
4
function foo (){};
$A = "fo";
$A += "o";
$$A(); //вызов вункции Foo
Мне нужен подобный механизм

Свойство формы, вот мне и надо. что бы туда дописывался символ, что бы я в нужное свойство записал данные
из выборки запроса

Добавлено через 31 минуту
Решение подсказали на другом форуме.

Я оставлю это тут, вдруг кому то еще пригодится
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Переменная1=Неопределено;
    Переменная2=Неопределено;
    Переменная3=Неопределено;
    
    НазваниеПеременной="Переменная"+"1";
    Выполнить(НазваниеПеременной+"=22");
    
    НазваниеПеременной="Переменная"+"2";
    Выполнить(НазваниеПеременной+"=555");
    
    Выполнить("Переменная3=""СУперМегастрока""");
    
    Сообщить("Переменная1="+Переменная1);
    Сообщить("Переменная2="+Переменная2);
    Сообщить("Переменная3="+Переменная3);
Dethmontt, большое спасибо за отзывчивость и помощь.
0
wwall
195 / 189 / 13
Регистрация: 29.05.2014
Сообщений: 982
12.09.2017, 07:33 6
Цитата Сообщение от McGoblin Посмотреть сообщение
Мне нужен подобный механизм
Параолимпиада по программированию на PHP - в другом разделе. Тут тупят на 1С.
И второе - если вам потребовалось менять AST программы - вы что-то не так придумали. 1С - это не лисп. Выполнить/Вычислить очень плохие операторы для начинающего.
1
12.09.2017, 07:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2017, 07:33

Использовать значение строковой переменной как имя новой переменной
Есть некий объект (ob = ) и строка (st ="name"). Так вот нужно, чтобы name...

Увеличение int переменной зная её имя в char переменной
Здравствуйте, у меня есть 23 int переменных b1 b2 b3 .... b23 в неком...

Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение п
Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru