База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как программно получить регистры ERP с измерениями “Номенклатура” и “Склад”? › RE: Как программно получить регистры ERP с измерениями “Номенклатура” и “Склад”?

В конфигурации 1С:ERP (8.3) для программного получения всех регистров (накопления, сведений и т.п.), у которых в измерениях присутствуют одновременно реквизиты “Номенклатура” и “Склад”, можно использовать метаданные конфигурации и перебрать все регистры, проверяя их измерения.
Пример кода на встроенном языке 1С:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
1C Процедура ПолучитьРегистрыСНоменклатуройИСкладом() Экспорт Результат = Новый Массив; МетаданныеКонфигурации = Метаданные; // Перебираем все регистры накопления Для Каждого РегистрНакопления Из МетаданныеКонфигурации.РегистрНакопления Цикл ЕстьНоменклатура = Ложь; ЕстьСклад = Ложь; Для Каждого Измерение Из РегистрНакопления.Измерения Цикл ИмяИзмерения = Измерение.Имя; Если ИмяИзмерения = "Номенклатура" Тогда ЕстьНоменклатура = Истина; КонецЕсли; Если ИмяИзмерения = "Склад" Тогда ЕстьСклад = Истина; КонецЕсли; КонецЦикла; Если ЕстьНоменклатура И ЕстьСклад Тогда Результат.Добавить(РегистрНакопления.Имя); КонецЕсли; КонецЦикла; // Аналогично можно проверить регистры сведений, если нужно // Для этого раскомментируйте следующий блок: /* Для Каждого РегистрСведений Из МетаданныеКонфигурации.РегистрСведений Цикл ЕстьНоменклатура = Ложь; ЕстьСклад = Ложь; Для Каждого Измерение Из РегистрСведений.Измерения Цикл ИмяИзмерения = Измерение.Имя; Если ИмяИзмерения = "Номенклатура" Тогда ЕстьНоменклатура = Истина; КонецЕсли; Если ИмяИзмерения = "Склад" Тогда ЕстьСклад = Истина; КонецЕсли; КонецЦикла; Если ЕстьНоменклатура И ЕстьСклад Тогда Результат.Добавить(РегистрСведений.Имя); КонецЕсли; КонецЦикла; */ // Вывод результата Для Каждого ИмяРегистра Из Результат Цикл Сообщить(ИмяРегистра); КонецЦикла; Возврат Результат; КонецПроцедуры |
Объяснение:
– Используем объект Метаданные
для доступа к метаданным конфигурации.
– Перебираем все регистры накопления (Метаданные.РегистрНакопления
).
– Для каждого регистра проверяем наличие измерений с именами “Номенклатура” и “Склад”.
– Если оба измерения присутствуют, добавляем имя регистра в результат.
– Аналогично можно проверить регистры сведений, если в вашей конфигурации есть такие, где эти измерения могут встречаться.
– В конце выводим список найденных регистров.
Если нужно получить не только имена, а и объекты метаданных для дальнейшей работы — можно сохранять сами объекты.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1794329/ (пример работы с метаданными в 1С)
https://its.1c.ru/db/metod8dev#content:360:hdoc (официальная документация по работе с метаданными)