Имя: Пароль:
1C
1С v8
Поиск объектов конфигурации
0 nAPACEHAK
 
14.09.17
10:50
Добра всем

Есть большая конфигурация. тыщу раз пиленая-перепиленая.
в ней есть остатки объектов конфигурации - справочники, документы, перечисления итд, которыми когда то пользовались наверно, но потом успешно забыты.

Есть идеи как можно все это "добро" выловить?
например, есть справочник, но к нему нигде нет обращений; или перечисление, которое уже давно забыто. ну итд.

в общем хотелось бы избавиться от хлама
1 DrShad
 
14.09.17
10:53
проверку конфигурации кури
2 nAPACEHAK
 
14.09.17
10:55
(1) наверно не то
на данном этапе пока не интересуют пустые обработчики, неиспользуемые функции итд
а неиспользуемый справочник (целиком), например, проверка вроде как и не находит
3 Numerus Mikhail
 
14.09.17
10:58
(2) вероятнее всего ваш неиспользуемый справочник будет использоваться в другом неиспользуемом справочнике. А тот справочник еще в какому-нибудь заброшенном документе. В итоге это всё закрутится в такой клубок, который вы не распутаете никогда :)
4 nAPACEHAK
 
14.09.17
11:01
(3) возможно.
но как то надо хоть понять масштаб трагедии )
5 DrShad
 
14.09.17
11:07
(4) тогда самому написать обходом по всем метаданным и искать вхождение типа в реквизиты объекта метаданных
6 Рэйв
 
14.09.17
11:12
(0)Сделай копию и попробуй удалить один справочник  и посмотреть на предупреждения которые будут писаться при попытки скормить это дело базе. Там должно быть видно где используется и какие ошибки вызовет.Вот так по одному и удаляй.
а на перечисления тупо поищи ссылки
7 nAPACEHAK
 
14.09.17
11:17
(6) при таком количестве существующих я боюсь до ледникового периода буду справочники то по одному удалять )))

(4) эмм... а примерно можете набросать? в смысле что б понять примерно как что где искать
8 DrShad
 
14.09.17
11:20
(7) могу, но не буду
9 DrShad
 
14.09.17
11:21
&НаСервереБезКонтекста
Функция ПоискСсылокНаОбъект(ОбъектМетаданных,СтрСвязей)
    Коллекции = Новый Массив;
    Коллекции.Добавить(Метаданные.Справочники);
    Коллекции.Добавить(Метаданные.Документы);
    Коллекции.Добавить(Метаданные.РегистрыБухгалтерии);
    Коллекции.Добавить(Метаданные.РегистрыНакопления);
    Коллекции.Добавить(Метаданные.РегистрыСведений);
    Сч = 2;
    СтрокаТекУзла = "";
    Для Каждого Коллекция Из Коллекции Цикл
        Для Каждого Объект Из Коллекция Цикл
            СтрПолей = "";
            Попытка
                Для Каждого Реквизит Из Объект.СтандартныеРеквизиты Цикл
                    Если Реквизит.Имя = "Ссылка" Тогда
                        Продолжить;
                    КонецЕсли;
                    
                    Для Каждого ТипРеквизита Из Реквизит.Тип.Типы() Цикл
                        Если ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипРеквизита) Тогда
                            ДобавитьРеквизит(СтрПолей,Реквизит);
                            СтрСвязей = СтрСвязей + "struct"+Сч+":"+Реквизит.Имя+" -> struct1:""f0"" [dir = back];
                            |";
                            Продолжить;
                        КонецЕсли;
                    КонецЦикла;    
                КонецЦикла;
            Исключение
            КонецПопытки;
            Попытка
                Для Каждого Реквизит Из Объект.Реквизиты Цикл
                    Для Каждого ТипРеквизита Из Реквизит.Тип.Типы() Цикл
                        Если ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипРеквизита) Тогда
                            ДобавитьРеквизит(СтрПолей,Реквизит);
                            СтрСвязей = СтрСвязей + "struct"+Сч+":"+Реквизит.Имя+" -> struct1:""f0"" [dir = back];
                            |";
                            Продолжить;
                        КонецЕсли;
                    КонецЦикла;    
                КонецЦикла;
            Исключение
            КонецПопытки;
            Попытка
                Для Каждого Реквизит Из Объект.Измерения Цикл
                    Для Каждого ТипРеквизита Из Реквизит.Тип.Типы() Цикл
                        Если ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипРеквизита) Тогда
                            ДобавитьРеквизит(СтрПолей,Реквизит);
                            СтрСвязей = СтрСвязей + "struct"+Сч+":"+Реквизит.Имя+" -> struct1:""f0"" [dir = back];
                            |";
                            Продолжить;
                        КонецЕсли;
                    КонецЦикла;    
                КонецЦикла;
            Исключение
            КонецПопытки;
            Попытка
                Для Каждого Реквизит Из Объект.Ресурсы Цикл
                    Для Каждого ТипРеквизита Из Реквизит.Тип.Типы() Цикл
                        Если ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипРеквизита) Тогда
                            ДобавитьРеквизит(СтрПолей,Реквизит);
                            СтрСвязей = СтрСвязей + "struct"+Сч+":"+Реквизит.Имя+" -> struct1:""f0"" [dir = back];
                            |";
                            Продолжить;
                        КонецЕсли;
                    КонецЦикла;    
                КонецЦикла;
            Исключение
            КонецПопытки;
10 DrShad
 
14.09.17
11:22
взято из обработки, которая по выбранному объекту метаданных выводит графически где используется сам объект и какие объекты использует он
11 VladZ
 
14.09.17
11:23
(0) Ну не используется и не надо. Смысл удалять? Чтобы глаза не мозолило? Убьешь кучу времени на "наведение красоты". Через какое-то время нагенеришь такую же кучу неиспользованных объектов. Переводи задачу в категорию "фоновая несрочная" и потихоньку удаляй лишнее.