Имя: Пароль:
1C
1С v8
Переменная сама изменяет значение
0 breezee
 
12.12.15
12:20
ВсегоСтрок = ЛистДанных.Cells(1,1).SpecialCells(11).Row;  
    НужнаяКолонка = 1;
    Тз = Новый ТаблицаЗначений;
    Тз.Колонки.Добавить("НовИмя", Новый ОписаниеТипов("Строка"));
    Тз.Колонки.Добавить("НомерВИерархии", Новый ОписаниеТипов("Число"));
    Для Строка = 2 По ВсегоСтрок Цикл       
        //Для Колонка = 1 По ВсегоКолонок Цикл
        КодС = СокрЛП(ЛистДанных.Cells(Строка,НужнаяКолонка).Value);
        КодС = УдалитьПоследнююТочку(КодС);    
        НаименованиеСправСмарт = СокрЛП(ЛистДанных.Cells(Строка,НужнаяКолонка+1).Value);    
        НСтрока = Тз.Добавить();
        НовСтрок1 = СформироватьНовИмя(КодС,НаименованиеСправСмарт);
        НСтрока.НовИмя = НовСтрок1;  
        НСтрока.НомерВИерархии = ПолучитьномерВИерархии(КодС);
    КонецЦикла;
    
Вот код. В отладке я включил в табло переменную "КодС"
Вот на это строчке "НовСтрок1 = СформироватьНовИмя(КодС,НаименованиеСправСмарт);" Переменной "КодС" присваивается строковое значение, которое возвращает функция "СформироватьНовИмя" "КодС" не является ни реквизитом формы не глобальной переменной. Что за ф*гня?
1 Irbis
 
12.12.15
12:21
Передавай по значению, если разбираться в своём же коде лень.
2 breezee
 
12.12.15
12:26
(1) Да мне не лень. Все заработало методом тыка. В функции, которая ниже, заменил "Стр" на "Стр1". Правда так и не понял, как функция может что-то изменять, за пределами самой себя? если это не реквизит или не глобальная переменная
Функция СформироватьНовИмя(Стр, СтрНаим)
    Стр = СтрЗаменить(Стр,".","_");
    Стр = СтрЗаменить(Стр,"/","_");
    Стр = СтрЗаменить(Стр,"\","_");
    Стр = СтрЗаменить(Стр," ","_");
    СтрНаим = СтрЗаменить(СтрНаим,".","_");
    СтрНаим = СтрЗаменить(СтрНаим,"/","_");
    СтрНаим = СтрЗаменить(СтрНаим,"\","_");
    СтрНаим = СтрЗаменить(СтрНаим," ","_");
    Стр1 = Стр +"_"+ СтрНаим;    
    Возврат Стр1;
КонецФункции
3 Garykom
 
гуру
12.12.15
12:32
(2) открой для себя ключевое слово "Знач"
4 Irbis
 
12.12.15
12:33
(2) Чему вас засранцев в школах только учат. Драть вас некогда и некому.
5 breezee
 
12.12.15
12:39
(3) НУ НИЧЕГО СЕБЕ! Т.е. всё это время я мог спокойно что-то изменять в своем коде и не зная об этом. Однако. Ладно, спасибо. Полезная штука оказывается. Можно не париться с возвратом массивов, а просто передавать все что мне нужно в параметрах и оно будет изменять параметры, если не буду указывать "Знач". Я же правильно понял?
6 Garykom
 
гуру
12.12.15
12:43
(5) ыыы, ну да :)
7 breezee
 
12.12.15
12:44
(6) Ок, спасибо еще раз!
8 Chameleon1980
 
12.12.15
19:04
товарыш
ниче что стр
9 Fragster
 
гуру
12.12.15
19:08
А еще интересное поведение при взаимодействии с сервером для непримитивных типов