Имя: Пароль:
1C
1С v8
Создание массива структур
0 2dolist
 
02.04.18
10:55
Добрый день. Создаю массив структур в цикле

Пока Выборка.Следующий() Цикл            
  ТестСтруктура = Новый Структура("Выборка", Выборка);
  ТестМассив.Добавить(ТестСтруктура);
КонецЦикла;

В результате получается массив из одинаковых структур потому что ТестСтруктура переписывается. А как передать разные структуры?

Пример упростил, вообещ структура там потому что надо ряд значений передавать, но сейчас не принципиально.
1 Cool_Profi
 
02.04.18
10:56
А зачем ты туда пишешь Выборку, которая при следующей итерации цикла изменится?
Создавай поля и заполняй их...
2 Diman000
 
02.04.18
10:58
Это не из-за структуры, а из-за того что ты туда пихаешь Выборку.
3 Diman000
 
02.04.18
10:58
Новый Структура дальше ЗаполнитьЗначенияСвойств и все взлетит.
4 2dolist
 
02.04.18
11:01
я и не подумал на выборку и правда. Спасибо.
5 Волшебник
 
02.04.18
11:02
Пока Выборка.Следующий() Цикл            
  ТестСтруктура = Новый Структура("Поле1, Поле2", Выборка.Поле1, Выборка.Поле2);
  ТестМассив.Добавить(ТестСтруктура);
КонецЦикла;
6 ПегийЛунь
 
02.04.18
11:05
В частности смотрим БП 3.0.
Общий модуль "ОбщегоНазначения"
Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт
    
    Массив = Новый Массив();
    СтруктураСтрокой = "";
    НужнаЗапятая = Ложь;
    Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
        Если НужнаЗапятая Тогда
            СтруктураСтрокой = СтруктураСтрокой + ",";
        КонецЕсли;
        СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;
        НужнаЗапятая = Истина;
    КонецЦикла;
    Для Каждого Строка Из ТаблицаЗначений Цикл
        НоваяСтрока = Новый Структура(СтруктураСтрокой);
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
        Массив.Добавить(НоваяСтрока);
    КонецЦикла;
    Возврат Массив;

КонецФункции
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn