Каталог решений - Мощность коллекции 1с8

Мощность коллекции 1с8

Мощность коллекции 1с8

В наличии

Неплохо было бы иметь платформенную функцию для вычисления размера коллекции, но пока этого нет, напишем функцию для мощности сами.

Категория:

Описание

Иногда при отладке нужно посчитать мощность коллекции. В 1С8 коллекции должны быть ограничены в размерах.

В сложных структурах сложно на глаз вычислить размер, а он все растет, и растет, причем непонятно где. Поэтому возможность вычислить мощность коллекции очень полезна.

Код по вычислению мощности выглядит так:

Функция обМощностьКоллекции(К) Экспорт

                Перем Р, Эл, Кол;

                Р = 0;

                Попытка

                Для Каждого Эл Из К Цикл //Список, Структура, Соответствие, ТЗ

                               Попытка

                                               Р = Р + обМощностьКоллекции(Эл.Значение); //Список, Структура, Соответствие

                               Исключение

                               КонецПопытки;

                               Попытка

                                               Для Каждого Кол Из К.Колонки Цикл

                                                               Р = Р + обМощностьКоллекции(Эл[Кол.Имя]);

                                               КонецЦикла;

                               Исключение

                               КонецПопытки;

                              

                               Р = Р + 1; //Один элемент есть

                КонецЦикла;

                Исключение

                КонецПопытки;

                Возврат Р;

               

КонецФункции

 

Для проверки можно использовать структуру мощностью 10:

П = Новый Структура();

П.Вставить("ТЗ", Новый ТаблицаЗначений());

П.ТЗ.Колонки.Добавить("Зн");

Стр = П.ТЗ.Добавить();

Стр.Зн = Новый СписокЗначений();

Стр.Зн.Добавить(1);

Стр.Зн.Добавить(2);

 

СС = Новый Структура();

СС.Вставить("Ага", 1);

СС.Вставить("БугАга", 2);

 

Стр = П.ТЗ.Добавить();

Стр.Зн = Новый Соответствие();

Стр.Зн.Вставить(1,1);

Стр.Зн.Вставить(2, СС);

 

Стр = П.ТЗ.Добавить();

Стр.Зн = "Маша";

 

Сообщить(обМощностьКоллекции(П));

 

Буду благодарен за выявленные ошибки.

has been added to your cart:
Оформление заказа