Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 авг 2022, 12:18

Как присвоить переменной значение?

Автор Ликол, 22 июл 2022, 22:56

0 Пользователей и 1 гость просматривают эту тему.

Ликол

Есть две процедуры, одна создает массив и называет его СписокЧисел. Я хочу запустить в другой процедуре цикл, в котором переменной x последовательно присваивается значения чисел из этого массива.

Для н = 0 по 99 Цикл
       
 
х = СписокНомеров[н];

Конфигуратор выдает сообщение:

{ОбщаяФорма.Форма2.Форма(26,7)}: Переменная не определена (СписокНомеров)
      х = <<?>>СписокНомеров[н];


Что я делаю не так?

alexandr_ll

Ликол, Список Номеров разве равно Список Чисел?

Ликол

alexandr_ll, это я сейчас оговорился.

СписокНомеров первая процедура называет, так что решение, увы, не в этом...

alexandr_ll

Ликол, Если вы хотите одну переменную использовать в разных процедурах, в самом начале модуля объявите ее
Перем СписокНомеров;https://capitally.ru/1c-development/izuchenie-1s/language-1c/1s-obyavlenie-peremennyh/

Ликол

alexandr_ll, определить переменную перед процедурами? Сейчас у меня начало кода стало выглядеть вот так:

Перем СписокНомеров;//определим переменную

&НаКлиенте
Процедура СоздатьМассив(Команда)
   // Вставить содержимое обработчика.

    СписокНомеров = Новый Массив(100);
 
     
   Для n=0 по 99 Цикл
    СписокНомеров[n] = n; // заполним массив данными
     
        КонецЦикла;
 
КонецПроцедуры

&НаКлиенте
Процедура АвтобусыТроллейбусы(Команда)
Строка1="Автобусы";
Строка2="Троллейбусы";

Для н = 0 по 99 Цикл
        //Сообщить(СписокНомеров [н]);
      
      х = СписокНомеров[н];

Когда программа доходит до этого места, все равно выдает сообщение, что переменная не определена.

Чувствую, что здесь какая-то тонкость передачи данных, которой я не знаю(


nvj84

&НаКлиенте
Перем СписокНомеров;

Ликол

nvj84, спасибо, сделал, как Вы посоветовали, а также прошелся по коду с целью выявить, нет ли где-то путаницы между кириллицей и латинницей (допустим, оказалось бы, что где-то я указываю х как латинскую букву, а где-то кириллицей)

Теперь сообщений про неопределенную переменную больше не выдает, но появилось сообщение:
"Получение элемента по индексу для значения не определено".

Не очень понимаю смысл этой фразы. Если в программе :
Для н = 0 по 99 Цикл
        //Сообщить(СписокНомеров [н]);
      
      x = СписокНомеров[н];

то по идее это должно значить, что x будут последовательно присваиваться значения из массива СписокНомеров, верно? В чем ошибка?

LexaK

Ликол,
что бы из массива брать какие-то значения, их туда сначала положить надо!  :befhbt:
по вашему коду, в момент ошибки, ваша переменная  СписокНомеров равна Неопределено!
если помогло нажмите: Спасибо!

Ликол

LexaK,тогда получается - эта процедура не работает?
 &НаКлиенте
Процедура СоздатьМассив(Команда)
   // Вставить содержимое обработчика.

    СписокНомеров = Новый Массив(100);
 
     
   Для n=0 по 99 Цикл
    СписокНомеров[n] = n; // заполним массив данными
     
        КонецЦикла;
 
КонецПроцедуры
 

Вообще, где нужно определять переменную СписокНомеров - в начале модуля для всех процедур, или после слов &НаКлиенте, как в предложении nvj84?

В последнем случае, определение действует только внутри данной процедуры?

LexaK

Ликол, вообще ваша задача ставит всех в тупик!
вроде по вашей регистрации вы программист 1С с 2017 года!
а задаете какие-то совсем уже элементарнейшие вопросы,

типа как переменной А присвоить значение 2, и почему мой код А = 2; не работает?
попробуйте сами ответить на эти вопросы
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск