Имя: Пароль:
1C
 
1С 8.3 Переменная не определена
🠗 (Волшебник 11.12.2017 10:53)
0 Urbina
 
11.12.17
10:50
Почему пишет: (Код далее)

Ошибка инициализации модуля: ОбщаяКоманда.Калькулятор.МодульКоманды
по причине:
{ОбщаяКоманда.Калькулятор.МодульКоманды(11,7)}: Переменная не определена (ПозицияОперации)
    Если <<?>>ПозицияОперации=1 или ПозицияОперации=СтрДлина(ИсходныеДанные) Тогда
{ОбщаяКоманда.Калькулятор.МодульКоманды(11,29)}: Переменная не определена (ПозицияОперации)
    Если ПозицияОперации=1 или <<?>>ПозицияОперации=СтрДлина(ИсходныеДанные) Тогда
{ОбщаяКоманда.Калькулятор.МодульКоманды(15,30)}: Переменная не определена (ПозицияОперации)
    Операнд1=Лев(ИсходныеДанные,<<?>>ПозицияОперации-1);
{ОбщаяКоманда.Калькулятор.МодульКоманды(16,31)}: Переменная не определена (ПозицияОперации)
    Операнд2=Сред(ИсходныеДанные,<<?>>ПозицияОперации+1);
{ОбщаяКоманда.Калькулятор.МодульКоманды(22,40)}: Переменная не определена (НомерОперации1)
        ТекущаяОперация=Сред(СтрокаОпераций, <<?>>НомерОперации1);

Код: (Калькулятор в учебной платформе.)

Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    Перем ИсходныеДанные;    
    
    ИсходныеДанные="";    
    //1.Вывести данные.
     Если НЕ ВвестиСтроку(ИсходныеДанные,"Что считать?") Тогда
        Возврат;
    КонецЕсли;    
    Если ПозицияОперации=1 или ПозицияОперации=СтрДлина(ИсходныеДанные) Тогда
        Сообщить ("Не хватает операндов.");
        Возврат;
    КонецЕсли;
    Операнд1=Лев(ИсходныеДанные,ПозицияОперации-1);
    Операнд2=Сред(ИсходныеДанные,ПозицияОперации+1);
    //2.Разобрать данные на операнды
    ПозицияОперации=0;
    СтрокаОпераций="+-*/^%";
    
    Для НомерОперации=1 По СтрДлина(СтрокаОпераций) Цикл
        ТекущаяОперация=Сред(СтрокаОпераций, НомерОперации1);
        ПозицияОперации=Найти(ИсходныеДанные,ТекущаяОперация);
        Если ПозицияОперации=0 Тогда
            Продолжить;
        Иначе
            Если ПозицияОперации=0 Тогда
                Сообщить("Операция"""+ТекущаяОперация+""" не найдена!");
                Возврат;
            КонецЕсли;
            
            ТекущаяОперация="^";
            ПозицияОперации=Найти(ИсходныеДанные,ТекущаяОперация);
            Если ПозицияОперации=1 или ПозицияОперации=СтрДлина(ИсходныеДанные) Тогда Сообщить("Не хватает операндов");
                Прервать;
            КонецЕсли;
            КонецЕсли;
        КонецЦикла;
//3.

КонецПроцедуры
1 Рэйв
 
11.12.17
10:52
А где определение переменных ПозицияОперации и НомерОперации1 перед использованием?
2 Urbina
 
11.12.17
11:26
А где они должны быть и как это должно выглядеть? Я повторяю видеоурок. Там код написан именно так и всё работает.
3 Волшебник
 
модератор
11.12.17
11:33
(2) Обратитесь к автору видеоурока
4 vicof
 
11.12.17
11:33
(2) Никто твой видеоурок не смотрел.
Может быть это реквизиты формы, может быть это переменные модуля, может быть глобальные переменные. Да куча вариантов.
5 Рэйв
 
11.12.17
11:34
(2)Прежде чем смотреть видеоуроки неплохо было бы узнать основы программирования вообще. Какой-нибудь бейсик погоняй хотя бы.
6 Urbina
 
11.12.17
11:37
Ещё одна флуд-компания!
7 Рэйв
 
11.12.17
11:40
(6)Добро пожаловать в наш говённый мир обратно!(С)Масяня
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн