Поиск ссылок в метаданных конфигурации

28.04.22

Разработка - Инструментарий разработчика

Обработка ищет ссылки на выбранный объект в метаданных конфигурации. Позиционируется как инструмент разработчика. Дополнительно может выступать в качестве аналога "Все функции" с расширенными возможностями и функцией поиска объектов по первым символам набора с клавиатуры. Обработка будет особенно полезна для изучения структуры и взаимосвязей обновленных релизов и незнакомых конфигураций. В удобной форме, предоставлена возможность просмотра подписок на события объектов конфигурации.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Поиск ссылок в метаданных конфигурации:
.epf 10,75Kb ver:1
11
11 Скачать (2 SM) Купить за 2 150 руб.
Поиск ссылок в метаданных конфигурации:
.epf 13,34Kb ver:1.41
78
78 Скачать (4 SM) Купить за 2 750 руб.

     Универсальная обработка, работает на "Управляемых формах", любой конфигурации. Обработка ищет ссылки на выбранный объект в дереве метаданных конфигурации для «Документов»,  "Обработок", "Планов Видов Характеристик", "Планов Обмена", «Справочников». Для «Регистров сведений и накопления», осуществляется поиск документов регистраторов.

1. Версия 1

         Тестирование версии проводилось на базе платформы 8.3.5-8.3.6 .

                Поиск осуществляется нажатием кнопки "Найти ссылки" или "двойным кликом", на строке дерева метаданных. Первоначально в дерево загружается все объекты метаданных "Документы", "Регистры накопления", "Регистры сведений", "Справочники". При нажатии кнопки "Показать не пустые объекты", в дерево метаданных грузятся только объекты, имеющие хотя бы один экземпляр в базе данных, одновременно заполняется поле количество (объектов метаданных). При этом поиск ссылок ограничивается , данными усеченного дерева метаданных

"Двойной клик" на строке таблицы найденных ссылок, открывает форму списка объектов. То же самое происходит при нажатии кнопки "Список объектов", только список открывается для текущей строки из дерева объектов метаданных.

Обработка будет особенно полезна для изучения структуры и взаимосвязей в незнакомых конфигурациях. 

2. Версия 1.2

Тестирование проводилось на базе платформы 8.3.6-8.3.9 .

Изменения в версии 1.2.

1. Таблица значений «Ссылки на объект» заменена, полем дерева значений «Список метаданных» с типом «Таблица значений» . 

2. Поскольку штатными средствами , а именно с помощью кнопки "Вывести список...", не удалось организовать печать поля дерева значений «Список метаданных» - «Ссылки на метаданные»-появляется ошибка "недостаточно памяти" и программа закрывается, был реализован код печати таблицы значений поля без создания макета:

&НаКлиенте
Процедура ПечатьСсылок(Команда)
	
	ТекСтрока = Элементы.ТипыМетаданных.ТекущиеДанные;
	ТекСтрокаСсылок = ТекСтрока.СсылкиНаМетаданные;
	Если ТекСтрокаСсылок.Количество()=0 Тогда
		Возврат;
	КонецЕсли;
	Заголовок = ТекСтрока.ПредставлениеМетаданных;
	Родитель =  ТекСтрока.ПолучитьРодителя().ПредставлениеМетаданных;

	ПечатьСсылокНаСервере(ТекСтрокаСсылок, Заголовок, Родитель).Показать()
	
КонецПроцедуры

Функция ПечатьСсылокНаСервере(ТекСтрока, Заголовок, Родитель)
	
	ТабЗнач = Новый ТаблицаЗначений();
	ТабЗнач.Колонки.Добавить("НомерСсылки",, "№ строки");
        ТабЗнач.Колонки.Добавить("ИмяСсылочногоРеквизита",, "Имя ссылочного реквизита");
	ТабЗнач.Колонки.Добавить("ТипПоляСсылочногоРеквизита",, "Тип ссылочного реквизита");	
        ТабЗнач.Колонки.Добавить("ИмяОбъектаМетаданныхСодеращегоРеквизит",, "Имя объекта метаданных содеращего реквизит");

	Для каждого Строка Из ТекСтрока Цикл
		
		СтрокаТз = ТабЗнач.Добавить();
		СтрокаТз.НомерСсылки = Строка.НомерСсылки;
		СтрокаТз.ИмяСсылочногоРеквизита = Строка.ИмяРеквизита;
		СтрокаТз.ИмяОбъектаМетаданныхСодеращегоРеквизит = Строка.ОбъектМетаданных;
		СтрокаТз.ТипПоляСсылочногоРеквизита = Строка.ТипПоля;

	КонецЦикла;	
	
	ТабДок  = Новый ТабличныйДокумент;
	ПострПечать = Новый ПостроительОтчета;
	ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабЗнач);
        ПострПечать.Выполнить();
	ПострПечать.ТекстЗаголовка = "Список ссылок на "+Родитель+" "+Заголовок;
	
	Для каждого Колонка Из ПострПечать.ВыбранныеПоля Цикл
		
		КолонкаИмя = ТабЗнач.Колонки[Колонка.Имя]; 
	  	Колонка.Представление = КолонкаИмя.Заголовок;
		
	КонецЦикла; 
	
        ПострПечать.Вывести(ТабДок); 
	Возврат ТабДок;	
	
КонецФункции

 

3. Версия 1.3

Тестирование проводилось на базе платформы 8.3.10-8.3.12 .

Изменения в версии 1.3.

  1. Добавлена функция поиска по первым символам набора с клавиатуры. 
  2. Добавлен элемент управления "Искать только прямые ссылки". Этот флаг фильтрует объекты в которых стоит ссылочный тип "Любая ссылка". Разницу в количестве найденных ссылок иллюстрируют два нижеследующих рисунка. Первый, без установленного флага, показывает количество найденных ссылок по справочнику "Валюты" - 318. Второй с установленным флагом, показывает количество найденных ссылок по справочнику "Валюты" - 172, при этом в поле "Имя реквизита" находится только прямая ссылка на справочник "Валюты".
  3. Добавлено поле "Отбор" в дерево "Список метаданных" и элемент управления "Искать по отбору". При установке этого флага и и отметки в поле отбор дерева, например, на строку "Обработки", поиск ссылок будет осуществляться только в подчиненных строках "Обработки". Флаг в поле "Отбор", установленный на верхнем уровне дерева "Список метаданных" является более приоритетным по отношению к флагам "Отбор" на нижних уровнях этого дерева. Это значит, что поиск ссылок при установленном флаге в поле "Отбор" на строке "Обработки" будет игнорировать флаги "Отбор"  на подчиненных строках.  Если снять флаг отбор с верхнего уровня, то поиск ссылок будет осуществляться по строкам нижнего уровня строки "Обработки", с установленным флагом "Отбор". Все это действует и для других объектах дерева метаданных.  
  4. В панель управления таблицы "Ссылки на метаданные", добавлена кнопка "Отметить в списке метаданных". Эта кнопка позволяет отмечать объекты дерева "Список метаданных" по списку объектов таблицы "Ссылки на метаданные". Например, выведем регистраторы регистра накопления  "Выручка и себестоимость продаж"

При нажатии кнопки "Отметить в списке метаданных", все документы таблицы "Ссылки на метаданные",  будут отмечены в дереве "список метаданных". 

Таким образом любой следующий выбранный объект дерева "Список метаданных", бедт искать ссылки только по выбранным строкам дерева.

        Всем известно, как не удобно пользоваться стандартной опцией "Все функции". Каждый раз приходится заходить в меню, и выбирать нужный объект. К тому же эта стандартная опция не имеет функции поиска, что тормозит выбор нужного объекта в дереве конфигурации. Дополнительным бонусом обработки, является возможность использования в качестве аналога "Все функции" с расширенными возможностями и функцией поиска объектов по первым символам набора с клавиатуры. При желании обработку можно разместить в дополнительных отчетах и обработках.

Пример использования данной обработки, в частности функционала "Отметить в списке метаданных", для разработки отчета из публикации "Продажи в динамике изменения цен номенклатуры за период" конфигурации "Управление торговлей 11" подрелизов 11.2.-11.4, рассмотрен в публикации здесь (Пример).

4. Версия 1.4

Тестирование проводилось на базе платформы 8.3.10-8.3.12 .

Изменения в версии 1.4.

 В удобной форме, предоставлена возможность просмотра подписок на события объектов конфигурации.

4. Версия 1.41

Тестирование проводилось на базе платформы 8.3.10-8.3.12 .

Добавлена возможность увидеть подписки на события выбранного объекта конфигурации.

обработка поиск ссылок на объект в метаданных

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159414    872    399    

861

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7768    55    22    

66

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23432    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8500 руб.

10.11.2023    10417    36    21    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15396    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    187974    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17302    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7694    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sergey512 35 20.04.17 18:14 Сейчас в теме
Чем не устраивает стандартный "поиск ссылок на объект"?
2. jaroslav.h 180 20.04.17 20:00 Сейчас в теме
(1) а с предприятие разве есть поиск ссылок на объект?!
4. sergey512 35 21.04.17 14:45 Сейчас в теме
(2) а смысл это смотреть в предприятии, если ты ищешь ссылки на объект метаданных?
5. jaroslav.h 180 21.04.17 15:11 Сейчас в теме
8. IVC_goal 226 07.06.18 12:58 Сейчас в теме
Схематично можно написать такой код. (Пример из реальной обработки -)
[&НаСервере
Процедура СозданиеТаблицыСсылок(МассивКУдалению, ЗаполнитьСтатистику)

//МассивКУдалению - массив объектов которые удаляем
ТабЗнКУдалению = НайтиПоСсылкам(МассивКУдалению);
НомСтр = 0;

// Таблица найденных ссылок
Для каждого СтрокаУдаления Из ТабЗнКУдалению Цикл
НоваяСтрока = ТаблицаСсылок.Добавить();
НоваяСтрока.Ссылка = СтрокаУдаления.Ссылка;
НоваяСтрока.Данные = СтрокаУдаления.Данные;
НоваяСтрока.Метаданные = СтрокаУдаления.Метаданные.ПолноеИмя();
НомСтр = НомСтр+1;
НоваяСтрока.НомерСтроки = НомСтр;
КонецЦикла;

Если не ЗаполнитьСтатистику Тогда
Возврат;
КонецЕсли;

ТаблицаСсылок.Сортировать("Метаданные");
КрличествоСсылокВсего = ТаблицаСсылок.Количество();

//Далее индивидуально оаботамм с каждой ссылкой - выбираем действие или если есть
// возможеость типизыции действи для объектов, то ниже следующий код


ТабЗн = ТаблицаСсылок.Выгрузить();
ОписаниеТипа = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5));
ТабЗн.Колонки.Добавить("ЧислоСтрок", ОписаниеТипа);
ТабЗн.ЗаполнитьЗначения(1, "ЧислоСтрок");
ТабЗн.Свернуть("Метаданные", "ЧислоСтрок");
КоличествоНайденныхСсылок = ТабЗн.Итог("ЧислоСтрок");

//СтатистикаМеаданных = ТабЗнКУдалению.Скопировать();
СтатистикаМеаданных.Очистить();
Для Каждого СтрокаУдаления Из ТабЗн Цикл
НоваяСтрока = СтатистикаМеаданных.Добавить();
НоваяСтрока.ЧислоСтрок = СтрокаУдаления.ЧислоСтрок;
СтрокаМетаданных = СтрокаУдаления.Метаданные;
НоваяСтрока.Метаданные = СтрокаМетаданных;
// Ставим флаги действий
Если СтрНайти(СтрокаМетаданных, "Документ.") > 0 или СтрНайти(СтрокаМетаданных, "РегистрСведений.") > 0 Тогда
// Например документы удаляем
// Но перед удалением надо опять провести поиск ссылок
// И так по циклу
НоваяСтрока.Удалить = Истина;
ИначеЕсли СтрНайти(СтрокаМетаданных, "Справочник.") > 0 Тогда
// Для справочников например ставим пустую ссылку или заданный элемент справочника
НоваяСтрока.ЗаменитьСсылку = Истина;
КонецЕсли;
//ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаУдаления);
КонецЦикла;

СтатистикаМеаданных.Сортировать("Метаданные");
СсылкиЗагружены = Истина;

КонецПроцедуры ](7)
3. IVC_goal 226 21.04.17 08:59 Сейчас в теме
Производится поиск ссылок не на конкретный документ, а на ссылки в метаданных. Иначе говоря. в каких объектах метаданных может присутствовать ссылка на данный объект
user811769; +1 Ответить
6. IVC_goal 226 21.04.17 20:17 Сейчас в теме
Согласен. Если нет необходимости изучить структуру конфигурации, то и нет смысла искать ссылки на метаданные
7. zekrus 150 07.06.18 11:48 Сейчас в теме
Добрый день!
Тема весьма актуальная - пытаюсь нарисовать удалятор с контролем ссылок.
С уважением.
9. IVC_goal 226 07.06.18 14:35 Сейчас в теме
(7) Извините. ответил не тому. См. ответ (5) выше
10. Светлый ум 415 19.12.18 14:47 Сейчас в теме
Ошибки валятся:
{Обработка.МетаданныеСcылки.Форма.Форма.Форма(86,8)}: Процедура или функция с указанным именем не определена (СтрНайти)
		Если <<?>>СтрНайти(Менеджер,"Регистр")=1 Тогда
{Обработка.МетаданныеСcылки.Форма.Форма.Форма(189,7)}: Процедура или функция с указанным именем не определена (СтрНайти)
	Если <<?>>СтрНайти(МенеджерОбъекта,"Регистр")=1 Тогда
{Обработка.МетаданныеСcылки.Форма.Форма.Форма(303,9)}: Процедура или функция с указанным именем не определена (СтрНайти)
			Если <<?>>СтрНайти(ТипМетаданных, "Регистр") = 1  Тогда
{Обработка.МетаданныеСcылки.Форма.Форма.Форма(353,8)}: Процедура или функция с указанным именем не определена (СтрНайти)
		Если <<?>>СтрНайти(типХМЛ.ИмяТипа, "."+ИмяМетаданных) > 1 Тогда
Показать
12. Светлый ум 415 19.12.18 15:12 Сейчас в теме
(10) Разобрался - стоял режим совместимости с платформой 8.2.16, поменял на 8.3.8 и заработало

+ конструктором печати вывел печать списка метаданных (вывода в Таб.документ явно не хватает)
13. IVC_goal 226 19.12.18 15:35 Сейчас в теме
(10)
Судя по ошибке для данной конфигурации должна работать устаревшая функция Найти(Менеджер,"Регистр")=1 вместо СтрНайти(Менеджер,"Регистр")=1. К сожалению под рукой не имею БП 2.0. Более точный ответ смогу дать когда найду БП 2.0. В любом случае быстро мое предположение можно проверить открыв форму обработки в конфигураторе и заменить строку 86
Если <<?>>СтрНайти(Менеджер,"Регистр")=1 Тогда - на строку
Если <<?>>Найти(Менеджер,"Регистр")=1 Тогда И нажать кнопку проверки синтаксиса
11. Светлый ум 415 19.12.18 14:48 Сейчас в теме
БП 2.0,
платформа 8.3.11.3034
14. IVC_goal 226 19.12.18 15:36 Сейчас в теме
Обязательно подумаю над этим
15. Светлый ум 415 19.12.18 19:01 Сейчас в теме
По быстрому себе в сообщение вывел (с макетом долго возится):
&НаКлиенте
Процедура Команда_Печать_в_сообщении_(Команда)
	
	Сообщить(Элементы.ТипыМетаданных.ТекущиеДанные.СсылкиНаМетаданные[0].ИмяРеквизита);
	
	НомСтр = 1;
	Для Каждого ТекСтр из Элементы.ТипыМетаданных.ТекущиеДанные.СсылкиНаМетаданные Цикл
		Сообщить(СокрЛП(НомСтр) + "  " + ТекСтр.ОбъектМетаданных + " " + ТекСтр.ТипПоля );
		НомСтр = НомСтр + 1;
	КонецЦикла;
	Сообщить("Конец ----------");
		
КонецПроцедуры
Показать
16. IVC_goal 226 25.12.18 09:01 Сейчас в теме
(15) Добавлена кнопка "Печать ссылок" версия обновлена на 1.2, код реализации печати приведен в тексте описания обработки
user811769; Светлый ум; +2 Ответить
17. Alik_1c 16.01.23 09:20 Сейчас в теме
есть версия 1 и версия 1.41 в чем отличия?
18. IVC_goal 226 16.01.23 10:07 Сейчас в теме
(17)Версия 1 не актуальна. Все не дойдут руки удалить
19. Alik_1c 16.01.23 10:34 Сейчас в теме
нам надо для УПП 1.1 на обычных формах, что надо скачивать?
20. IVC_goal 226 16.01.23 10:51 Сейчас в теме
(19) К сожалению для обычных форм не подойдет.
Оставьте свое сообщение