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

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