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