Иногда при отладке нужно посчитать мощность коллекции. В 1С8
коллекции должны быть ограничены в размерах.
В сложных структурах сложно на глаз вычислить размер, а он
все растет, и растет, причем непонятно где. Поэтому возможность вычислить
мощность коллекции очень полезна.
Неплохо было бы иметь платформенную функцию для вычисления
размера коллекции, но пока этого нет, напишем функцию для мощности сами.
Код по вычислению мощности выглядит так:
Функция обМощностьКоллекции(К)
Экспорт
Перем Р, Эл, Кол;
Р
= 0;
Попытка
Для
Каждого Эл Из К Цикл //Список, Структура, Соответствие, ТЗ
Попытка
Р
= Р + обМощностьКоллекции(Эл.Значение);
//Список, Структура, Соответствие
Исключение
КонецПопытки;
Попытка
Для
Каждого Кол Из К.Колонки Цикл
Р
= Р + обМощностьКоллекции(Эл[Кол.Имя]);
КонецЦикла;
Исключение
КонецПопытки;
Р
= Р + 1; //Один элемент есть
КонецЦикла;
Исключение
КонецПопытки;
Возврат
Р;
КонецФункции
Для проверки можно использовать структуру мощностью 10:
П = Новый Структура();
П.Вставить("ТЗ", Новый ТаблицаЗначений());
П.ТЗ.Колонки.Добавить("Зн");
Стр = П.ТЗ.Добавить();
Стр.Зн = Новый СписокЗначений();
Стр.Зн.Добавить(1);
Стр.Зн.Добавить(2);
СС = Новый Структура();
СС.Вставить("Ага", 1);
СС.Вставить("БугАга", 2);
Стр = П.ТЗ.Добавить();
Стр.Зн = Новый Соответствие();
Стр.Зн.Вставить(1,1);
Стр.Зн.Вставить(2, СС);
Стр = П.ТЗ.Добавить();
Стр.Зн = "Маша";
Сообщить(обМощностьКоллекции(П));
Буду благодарен за выявленные ошибки.