Как найти все документы, в движениях которых использовался объект метаданных ПВХ Статья Расходов?
По теме из базы знаний
Найденные решения
(1) Он точно отработает этот запрос в списке? Я вот написал этот текст запроса для списка
Но его даже конструктор запроса хавал несколько десятков секунд. У меня в ерп получилось объединение 185 таблиц
ТипыЗнченияПВХ = Метаданные.ПланыВидовХарактеристик.СтатьиРасходов.Тип;
ИменаРегистров = Новый СписокЗначений;
Для Каждого Рег Из Метаданные.РегистрыНакопления Цикл
Для Каждого Изм Из Рег.Измерения Цикл
ТипыЗначенияИзмерения = Изм.Тип.Типы();
Если ИменаРегистров.НайтиПоЗначению(Рег.Имя) <> Неопределено Тогда
Прервать;
КонецЕсли;
Для Каждого Тип Из ТипыЗначенияИзмерения Цикл
Если ТипыЗнченияПВХ.СодержитТип(Тип) Тогда
ИменаРегистров.Добавить(Рег.Имя);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Всего = ИменаРегистров.Количество();
Если Всего > 0 Тогда
ТекстЗапроса = "ВЫБРАТЬ ТаблицаРегистра.Регистратор КАК Регистратор ПОМЕСТИТЬ ВТ ИЗ РегистрНакопления."+ ИменаРегистров.Получить(0).Значение + " КАК ТаблицаРегистра";
Если Всего > 1 Тогда
Для й = 1 По Всего - 1 Цикл
ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + "ВЫБРАТЬ ТаблицаРегистра.Регистратор КАК Регистратор ИЗ РегистрНакопления."+ ИменаРегистров.Получить(й).Значение + " КАК ТаблицаРегистра";
КонецЦикла;
КонецЕсли;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + ";" + Символы.ПС + "ВЫБРАТЬ ВТ.Регистратор КАК Регистратор ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Регистратор"
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Он точно отработает этот запрос в списке? Я вот написал этот текст запроса для списка
Но его даже конструктор запроса хавал несколько десятков секунд. У меня в ерп получилось объединение 185 таблиц
ТипыЗнченияПВХ = Метаданные.ПланыВидовХарактеристик.СтатьиРасходов.Тип;
ИменаРегистров = Новый СписокЗначений;
Для Каждого Рег Из Метаданные.РегистрыНакопления Цикл
Для Каждого Изм Из Рег.Измерения Цикл
ТипыЗначенияИзмерения = Изм.Тип.Типы();
Если ИменаРегистров.НайтиПоЗначению(Рег.Имя) <> Неопределено Тогда
Прервать;
КонецЕсли;
Для Каждого Тип Из ТипыЗначенияИзмерения Цикл
Если ТипыЗнченияПВХ.СодержитТип(Тип) Тогда
ИменаРегистров.Добавить(Рег.Имя);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Всего = ИменаРегистров.Количество();
Если Всего > 0 Тогда
ТекстЗапроса = "ВЫБРАТЬ ТаблицаРегистра.Регистратор КАК Регистратор ПОМЕСТИТЬ ВТ ИЗ РегистрНакопления."+ ИменаРегистров.Получить(0).Значение + " КАК ТаблицаРегистра";
Если Всего > 1 Тогда
Для й = 1 По Всего - 1 Цикл
ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + "ВЫБРАТЬ ТаблицаРегистра.Регистратор КАК Регистратор ИЗ РегистрНакопления."+ ИменаРегистров.Получить(й).Значение + " КАК ТаблицаРегистра";
КонецЦикла;
КонецЕсли;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + ";" + Символы.ПС + "ВЫБРАТЬ ВТ.Регистратор КАК Регистратор ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Регистратор"
Показать
(3) я пробовал так, таблиц получилось 8. КА 2
тут, наверное, у меня косяк где-то
тут, наверное, у меня косяк где-то
МассивИменРегистров = Новый Массив;
ПодчинениеРегистратору = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору;
Для каждого РегистрС Из Метаданные.РегистрыСведений Цикл
Если РегистрС.РежимЗаписи = ПодчинениеРегистратору Тогда
Для Каждого ИзмеренияС Из РегистрС.Измерения Цикл
Если ИзмеренияС.Тип.ПривестиЗначение() = ПланыВидовХарактеристик.СтатьиРасходов.ПустаяСсылка() Тогда
//Сообщить(РегистрС.ПолноеИмя());
//СчетчикРегистров = СчетчикРегистров + 1;
Если СтрНайти(РегистрС.ПолноеИмя(), "далить") = 0 Тогда
МассивИменРегистров.Добавить(РегистрС.ПолноеИмя());
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для каждого РесурсС Из РегистрС.Ресурсы Цикл
Если РесурсС.Тип.ПривестиЗначение() = ПланыВидовХарактеристик.СтатьиРасходов.ПустаяСсылка() Тогда
//Сообщить(РегистрС.ПолноеИмя());
//СчетчикРегистров = СчетчикРегистров + 1;
Если СтрНайти(РегистрС.ПолноеИмя(), "далить") = 0 Тогда
МассивИменРегистров.Добавить(РегистрС.ПолноеИмя());
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Для каждого РегистрН Из Метаданные.РегистрыНакопления Цикл
//Если РегистрН.РежимЗаписи = ПодчинениеРегистратору Тогда
Для Каждого ИзмеренияН Из РегистрН.Измерения Цикл
Если ИзмеренияН.Тип.ПривестиЗначение() = ПланыВидовХарактеристик.СтатьиРасходов.ПустаяСсылка() Тогда
//Сообщить(РегистрН.ПолноеИмя());
//СчетчикРегистров = СчетчикРегистров + 1;
МассивИменРегистров.Добавить(РегистрН.ПолноеИмя());
КонецЕсли;
КонецЦикла;
Для каждого РесурсН Из РегистрН.Ресурсы Цикл
Если РесурсН.Тип.ПривестиЗначение() = ПланыВидовХарактеристик.СтатьиРасходов.ПустаяСсылка() Тогда
//Сообщить(РегистрН.ПолноеИмя());
//СчетчикРегистров = СчетчикРегистров + 1;
МассивИменРегистров.Добавить(РесурсН.ПолноеИмя());
КонецЕсли;
КонецЦикла;
//КонецЕсли;
КонецЦикла;
МассивИменРегистров = УдалитьПовторяющиесяЭлементыМассива(МассивИменРегистров);
Сообщить(МассивИменРегистров.Количество());
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот