Добрый день, форумчане!
ERP, очень сильно перепиленная, используется как управленка. Возникла задача:
Как обойти все метаданные (Справочники, Модули, Документы и т.д.), чтобы проверить длину наименования на количество больше определенного значения?
Заранее благодарю.
---
тут много не нужных элементов, которые не могут обойтись в виде коллекции, скажем "АвторскиеПрава" или "Версия", возьмите то, что явно есть в дереве объектов конфигурации
или ставить точку останова, смотреть на какой строке ("элем") падает, и комментировать этот элемент массива.
---
```1c
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить("Документы");
    МассивОбъектов.Добавить("Константы");
    //... и т.д.

    Для каждого Элем из МассивОбъектов Цикл
    для Каждого ТекОбъект из Метаданные[Элем] Цикл

    Если СтрДлина(ТекОбъект.Имя) > 123 тогда
    //что-то делаем
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Спасибо огромное, попробую!
---
Выдает ошибку:

{ВнешняяОбработка.ВнешняяОбработкаМетаданных.Форма.Форма.Форма(83)}: Итератор для значения не определен
 для Каждого ТекОбъект из Метаданные[Элем] Цикл

что может быть?
---
У глобального свойства Метаданные вроде нет обхода по итератору. Можно попробовать так

```1c
    Процедура ВыполнитьПроверкуМетаданных()

    ПроверитьКоллекциюМетаданных(Метаданные.Документы);
    ПроверитьКоллекциюМетаданных(Метаданные.Справочники);
    //....

    КонецПроцедуры

    Процедура ПроверитьКоллекциюМетаданных(КоллекциМетаданных)

    Для Каждого ОбъектМетаданных Из КоллекциМетаданных Цикл

    Если СтрДлина(ОбъектМетаданных.Имя) > ПредельнаяДлина Тогда // ПредельнаяДлина какое-то значение.
    // Необходимые действия...
    КонецЕсли

    КонецЦикла;

    КонецПроцедуры
```
---
Весь код скопировали ? У меня он работает без ошибок
(5) да вроде обходится, проверил под отладчиком, Коллекция
---
скопировал весь, добавил только всю структуру построчно.

```1c
    &НаСервере
    Процедура СформироватьНаСервере()
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить("WebСервисы");
    МассивОбъектов.Добавить("WSСсылки");
    МассивОбъектов.Добавить("АвторскиеПрава");
    МассивОбъектов.Добавить("АдресИнформацииОКонфигурации");
    МассивОбъектов.Добавить("АдресИнформацииОПоставщике");
    МассивОбъектов.Добавить("АдресКаталогаОбновлений");
    МассивОбъектов.Добавить("БизнесПроцессы");
    МассивОбъектов.Добавить("ВариантВстроенногоЯзыка");
    МассивОбъектов.Добавить("Версия");
    МассивОбъектов.Добавить("ВключатьСправкуВСодержание");
    МассивОбъектов.Добавить("Документы");
    МассивОбъектов.Добавить("ДополнительныеСловариПолнотекстовогоПоиска");
    МассивОбъектов.Добавить("ЖурналыДокументов");
    МассивОбъектов.Добавить("Задачи");
    МассивОбъектов.Добавить("Заставка");
    МассивОбъектов.Добавить("Имя");
    МассивОбъектов.Добавить("Интерфейсы");
    МассивОбъектов.Добавить("Комментарий");
    МассивОбъектов.Добавить("Константы");
    МассивОбъектов.Добавить("КраткаяИнформация");
    МассивОбъектов.Добавить("КритерииОтбора");
    МассивОбъектов.Добавить("Логотип");
    МассивОбъектов.Добавить("МодульВнешнегоСоединения");
    МассивОбъектов.Добавить("МодульПриложения");
    МассивОбъектов.Добавить("МодульСеанса");
    МассивОбъектов.Добавить("НумераторыДокументов");
    МассивОбъектов.Добавить("Обработки");
    МассивОбъектов.Добавить("ОбщиеКартинки");
    МассивОбъектов.Добавить("ОбщиеМакеты");
    МассивОбъектов.Добавить("ОбщиеМодули");
    МассивОбъектов.Добавить("ОбщиеФормы");
    МассивОбъектов.Добавить("ОсновнаяРоль");
    МассивОбъектов.Добавить("ОсновнаяФормаКонстант");
    МассивОбъектов.Добавить("ОсновнойИнтерфейс");
    МассивОбъектов.Добавить("ОсновнойСтиль");
    МассивОбъектов.Добавить("ОсновнойЯзык");
    МассивОбъектов.Добавить("Отчеты");
    МассивОбъектов.Добавить("ПакетыXDTO");
    МассивОбъектов.Добавить("ПараметрыСеанса");
    МассивОбъектов.Добавить("Перечисления");
    МассивОбъектов.Добавить("ПланыВидовРасчета");
    МассивОбъектов.Добавить("ПланыВидовХарактеристик");
    МассивОбъектов.Добавить("ПланыОбмена");
    МассивОбъектов.Добавить("ПланыСчетов");
    МассивОбъектов.Добавить("ПодпискиНаСобытия");
    МассивОбъектов.Добавить("ПодробнаяИнформация");
    МассивОбъектов.Добавить("Подсистемы");
    МассивОбъектов.Добавить("Последовательности");
    МассивОбъектов.Добавить("Поставщик");
    МассивОбъектов.Добавить("РегистрыБухгалтерии");
    МассивОбъектов.Добавить("РегистрыНакопления");
    МассивОбъектов.Добавить("РегистрыРасчета");
    МассивОбъектов.Добавить("РегистрыСведений");
    МассивОбъектов.Добавить("РегламентныеЗадания");
    МассивОбъектов.Добавить("РежимАвтонумерацииОбъектов");
    МассивОбъектов.Добавить("РежимУправленияБлокировкойДанных");
    МассивОбъектов.Добавить("РодительскиеКонфигурации");
    МассивОбъектов.Добавить("Роли");
    МассивОбъектов.Добавить("СвойстваОбъектов");
    МассивОбъектов.Добавить("Синоним");
    МассивОбъектов.Добавить("Справка");
    МассивОбъектов.Добавить("Справочники");
    МассивОбъектов.Добавить("Стили");
    МассивОбъектов.Добавить("ЭлементыСтиля");
    МассивОбъектов.Добавить("Языки");

    МассивОбъектов.Добавить("Константы");
    //... и т.д.

    Для Каждого Элем из МассивОбъектов Цикл
    для Каждого ТекОбъект из Метаданные[Элем] Цикл
    Если СтрДлина(ТекОбъект) > 80 тогда
    Сообщить(ТекОбъект);
    //что-то делаем
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;

    КонецПроцедуры

    &НаКлиенте
    Процедура Сформировать(Команда)
    СформироватьНаСервере();
    КонецПроцедуры
```
---
тут много не нужных элементов, которые не могут обойтись в виде коллекции, скажем "АвторскиеПрава" или "Версия", возьмите то, что явно есть в дереве объектов конфигурации
или ставить точку останова, смотреть на какой строке ("элем") падает, и комментировать этот элемент массива.
---
ОК. только не пойму - почему ошибку выдает...
---
Цикл "для Каждого " предназначен для обхода коллекций, и когда попадается Не коллекция то происходит ошибка
---
ПолучитьСтруктуруХраненияБазыДанных() как вариант.
---
Повыкидывал через отладчик и в результате список структуры очень сократился.
---
Походу итератор не везде нужен и поэтому получил искомое. огромное спасибо всем за обсуждение.
---
Есть ли возможность не заполнять МассивОбъектов через МассивОбъектов.Добавить("WebСервисы"), например Метаданные.ПолучитьВсеИмена()?