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

28.04.22

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

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

Скачать файлы

Наименование Файл Версия Размер
Поиск ссылок в метаданных конфигурации:
.epf 10,75Kb
10
.epf 1 10,75Kb 10 Скачать
Поиск ссылок в метаданных конфигурации:
.epf 13,34Kb
73
.epf 1.41 13,34Kb 73 Скачать

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

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 .

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

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

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

13000 руб.

02.09.2020    119924    656    389    

701

Infostart PrintWizard

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

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

18000 руб.

06.10.2023    7010    20    6    

37

Infostart УДиФ: Управление данными и формами

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

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

10000 руб.

10.11.2023    3249    10    1    

31

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177342    1070    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99205    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17914    6    8    

38

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27945    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23490    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 208 07.06.18 12:58 Сейчас в теме
Схематично можно написать такой код. (Пример из реальной обработки -)
[&НаСервере
Процедура СозданиеТаблицыСсылок(МассивКУдалению, ЗаполнитьСтатистику)

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

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

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

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

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


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

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

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

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

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