1С 8.3 Свернуть массив
Данные > Примеры кода 1С > 1С 8.3 Массив
Перейти в раздел примеры кода 1С 8.3:
Свертка Массива с помощью соответствия (пример №1) в 1С 8.3:
Процедура Свертка_Массива_через_Соответствие() Экспорт
МассивДляСвертки = Новый Массив;
МассивДляСвертки.Добавить(2);
МассивДляСвертки.Добавить(4);
МассивДляСвертки.Добавить(7); // Массив: (2, 4, 7)
СоответствиеДляСвертки = Новый Соответствие;
Для Каждого ЭлементМ Из МассивДляСвертки Цикл
СоответствиеДляСвертки.Вставить(ЭлементМ);
КонецЦикла;
МассивДляСвертки.Очистить();
Для Каждого ЭлементС Из СоответствиеДляСвертки Цикл
МассивДляСвертки.Добавить(ЭлементС.Ключ);
КонецЦикла;
КонецПроцедуры
МассивДляСвертки = Новый Массив;
МассивДляСвертки.Добавить(2);
МассивДляСвертки.Добавить(4);
МассивДляСвертки.Добавить(7); // Массив: (2, 4, 7)
СоответствиеДляСвертки = Новый Соответствие;
Для Каждого ЭлементМ Из МассивДляСвертки Цикл
СоответствиеДляСвертки.Вставить(ЭлементМ);
КонецЦикла;
МассивДляСвертки.Очистить();
Для Каждого ЭлементС Из СоответствиеДляСвертки Цикл
МассивДляСвертки.Добавить(ЭлементС.Ключ);
КонецЦикла;
КонецПроцедуры
Свертка Массива с помощью доп.массива (пример №2) в 1С 8.3:
Процедура Свертка_Массива_через_доп_Массив() Экспорт
МассивДляСвертки = Новый Массив;
МассивДляСвертки.Добавить(2);
МассивДляСвертки.Добавить(4);
МассивДляСвертки.Добавить(7); // Массив: (2, 4, 7)
МассивДополнительный = Новый Массив;
Для Каждого ЭлементМ Из МассивДляСвертки Цикл
Если МассивДополнительный.Найти(ЭлементМ) = Неопределено Тогда
//Если значения еще нет, то добавим его
МассивДополнительный.Добавить(ЭлементМ);
КонецЕсли;
КонецЦикла;
Сообщить(СтрСоединить(МассивДополнительный, ","));
// 2, 4, 7
КонецПроцедуры
МассивДляСвертки = Новый Массив;
МассивДляСвертки.Добавить(2);
МассивДляСвертки.Добавить(4);
МассивДляСвертки.Добавить(7); // Массив: (2, 4, 7)
МассивДополнительный = Новый Массив;
Для Каждого ЭлементМ Из МассивДляСвертки Цикл
Если МассивДополнительный.Найти(ЭлементМ) = Неопределено Тогда
//Если значения еще нет, то добавим его
МассивДополнительный.Добавить(ЭлементМ);
КонецЕсли;
КонецЦикла;
Сообщить(СтрСоединить(МассивДополнительный, ","));
// 2, 4, 7
КонецПроцедуры
Свертка Массива с помощью ТЗ (пример №3) в 1С 8.3:
Процедура Свертка_Массива_через_ТаблицуЗначений() Экспорт
МассивДляСвертки = Новый Массив;
МассивДляСвертки.Добавить(2);
МассивДляСвертки.Добавить(4);
МассивДляСвертки.Добавить(7); // Массив: (2, 4, 7)
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ВыгружаемоеЗначение");
// Заполняем строки ТЗ (по количеству элементов массива)
Для А = 0 По МассивДляСвертки.ВГраница() Цикл
ТЗ.Добавить();
КонецЦикла;
// Загружаем Массив в ТЗ и сворачиваем его
ТЗ.ЗагрузитьКолонку(МассивДляСвертки, "ВыгружаемоеЗначение");
ТЗ.Свернуть("ВыгружаемоеЗначение");
// Если нужно - сортируем
//ТЗ.Сортировать("ВыгружаемоеЗначение");
// Выгружаем ТЗ в Массив
МассивДляСвертки = ТЗ.ВыгрузитьКолонку("ВыгружаемоеЗначение");
Сообщить(СтрСоединить(МассивДляСвертки, ","));
// 2, 4, 7
КонецПроцедуры
МассивДляСвертки = Новый Массив;
МассивДляСвертки.Добавить(2);
МассивДляСвертки.Добавить(4);
МассивДляСвертки.Добавить(7); // Массив: (2, 4, 7)
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ВыгружаемоеЗначение");
// Заполняем строки ТЗ (по количеству элементов массива)
Для А = 0 По МассивДляСвертки.ВГраница() Цикл
ТЗ.Добавить();
КонецЦикла;
// Загружаем Массив в ТЗ и сворачиваем его
ТЗ.ЗагрузитьКолонку(МассивДляСвертки, "ВыгружаемоеЗначение");
ТЗ.Свернуть("ВыгружаемоеЗначение");
// Если нужно - сортируем
//ТЗ.Сортировать("ВыгружаемоеЗначение");
// Выгружаем ТЗ в Массив
МассивДляСвертки = ТЗ.ВыгрузитьКолонку("ВыгружаемоеЗначение");
Сообщить(СтрСоединить(МассивДляСвертки, ","));
// 2, 4, 7
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник