Вход | Регистрация
 

Затираю значения в массиве

Затираю значения в массиве
Я
   HelpMePlz
 
28.12.20 - 15:15
Добрый день. Моя задача получить из регистра сведений 2 записи о выгрузке и загрузке.
Когда я получаю одну из записей, то он ее сохраняет в массив и все хорошо, но когда он доходит до второй записи то он ее записывает но почему то и первую запись меняет на свои параметры.
Код {

    Результат = Неопределено;
    Запрос = Новый Запрос;
    Структура = Новый Структура;
    Массив = Новый Массив;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |*
    |ИЗ
    |    РегистрСведений.ОбменССайтомПоПродажеЗапчастей.СрезПоследних КАК ОбменССайтом";
    Выборка = Запрос.Выполнить().Выбрать();    
    Пока Выборка.Следующий() Цикл                                                              
        Если Выборка.ВидОбмена = "Выгрузка" И Массив.Количество() < 2 И (Массив.Количество() = 0 ИЛИ Массив[0].ВидОбмена <> "Выгрузка") Тогда
            Структура.Вставить("ВидОбмена",Выборка.ВидОбмена);
            Структура.Вставить("ДатаНачалаОбмена",Выборка.ДатаНачалаОбмена);
            Структура.Вставить("ДатаКонцаОбмена",Выборка.ДатаКонцаОбмена);
            Структура.Вставить("ДатаУдачногоОбмена",Выборка.ДатаУдачногоОбмена);
            Структура.Вставить("ИнформацияОбмена",Выборка.ИнформацияОбмена);
            Структура.Вставить("РезультатОбмена",Выборка.РезультатОбмена);
            Структура.Вставить("ТипНоменклатуры",Выборка.ТипНоменклатуры);                                      
        ИначеЕсли Выборка.ВидОбмена = "Загрузка" И Массив.Количество() < 2 И (Массив.Количество() = 0 ИЛИ Массив[0].ВидОбмена <> "Загрузка")  Тогда
            Структура.Вставить("ВидОбмена",Выборка.ВидОбмена);
            Структура.Вставить("ДатаНачалаОбмена",Выборка.ДатаНачалаОбмена);
            Структура.Вставить("ДатаКонцаОбмена",Выборка.ДатаКонцаОбмена);
            Структура.Вставить("ДатаУдачногоОбмена",Выборка.ДатаУдачногоОбмена);
            Структура.Вставить("ИнформацияОбмена",Выборка.ИнформацияОбмена);
            Структура.Вставить("РезультатОбмена",Выборка.РезультатОбмена);
            Структура.Вставить("ТипНоменклатуры",Выборка.ТипНоменклатуры);        
        КонецЕсли;
        Массив.Добавить(Структура);
        Если Массив.Количество() = 2 Тогда
            Результат = Массив;
            Возврат Результат;
            Прервать;
        КонецЕсли;
    КонецЦикла;    
    Возврат Результат;
Код }
 
 Партнерская программа EFSOL Oblako
   Fragster
 
1 - 28.12.20 - 15:17
Структура = Новый Структура; внутрь цикла
   HelpMePlz
 
2 - 28.12.20 - 15:21
(1) Спасибо огромное, а как это работает? Я получал запрос, но записывал туда старую структуру?
   ДенисЧ
 
3 - 28.12.20 - 15:22
(2) Открой для себя ссылки на объекты..
   fisher
 
4 - 28.12.20 - 15:35
(2) Да. Записывал ССЫЛКУ на старую структуру. Оператор Новый - создает в памяти новый объект. А оператор присваивания копирует значение только для примитивных типов. Для объектов копируется ссылка на объект (адрес объекта). Это во многих языках программирования так.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.