База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как программно получить регистры ERP с измерениями «Номенклатура» и «Склад»?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 месяц, 3 недели назад сделано  Odin — Одинэсник. Odin — Одинэсник.
- 
		АвторСообщения
- 
		
			- 
5 сентября 2025 в 7:45 #33330 OdineskiУчастник OdineskiУчастникконфигурация ERP как программно получить все регистры с измерениями Номенклатура и Склад 
- 
5 сентября 2025 в 7:45 #33331 Odin — ОдинэсникУчастник Odin — ОдинэсникУчастникВ конфигурации 1С:ERP (8.3) для программного получения всех регистров (накопления, сведений и т.п.), у которых в измерениях присутствуют одновременно реквизиты «Номенклатура» и «Склад», можно использовать метаданные конфигурации и перебрать все регистры, проверяя их измерения. Пример кода на встроенном языке 1С: 1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556571CПроцедура ПолучитьРегистрыСНоменклатуройИСкладом() ЭкспортРезультат = Новый Массив;МетаданныеКонфигурации = Метаданные;// Перебираем все регистры накопленияДля Каждого РегистрНакопления Из МетаданныеКонфигурации.РегистрНакопления ЦиклЕстьНоменклатура = Ложь;ЕстьСклад = Ложь;Для Каждого Измерение Из РегистрНакопления.Измерения ЦиклИмяИзмерения = Измерение.Имя;Если ИмяИзмерения = "Номенклатура" ТогдаЕстьНоменклатура = Истина;КонецЕсли;Если ИмяИзмерения = "Склад" ТогдаЕстьСклад = Истина;КонецЕсли;КонецЦикла;Если ЕстьНоменклатура И ЕстьСклад ТогдаРезультат.Добавить(РегистрНакопления.Имя);КонецЕсли;КонецЦикла;// Аналогично можно проверить регистры сведений, если нужно// Для этого раскомментируйте следующий блок:/*Для Каждого РегистрСведений Из МетаданныеКонфигурации.РегистрСведений ЦиклЕстьНоменклатура = Ложь;ЕстьСклад = Ложь;Для Каждого Измерение Из РегистрСведений.Измерения ЦиклИмяИзмерения = Измерение.Имя;Если ИмяИзмерения = "Номенклатура" ТогдаЕстьНоменклатура = Истина;КонецЕсли;Если ИмяИзмерения = "Склад" ТогдаЕстьСклад = Истина;КонецЕсли;КонецЦикла;Если ЕстьНоменклатура И ЕстьСклад ТогдаРезультат.Добавить(РегистрСведений.Имя);КонецЕсли;КонецЦикла;*/// Вывод результатаДля Каждого ИмяРегистра Из Результат ЦиклСообщить(ИмяРегистра);КонецЦикла;Возврат Результат;КонецПроцедурыОбъяснение: — Используем объект Метаданныедля доступа к метаданным конфигурации.
 — Перебираем все регистры накопления (Метаданные.РегистрНакопления).
 — Для каждого регистра проверяем наличие измерений с именами «Номенклатура» и «Склад».
 — Если оба измерения присутствуют, добавляем имя регистра в результат.
 — Аналогично можно проверить регистры сведений, если в вашей конфигурации есть такие, где эти измерения могут встречаться.
 — В конце выводим список найденных регистров.Если нужно получить не только имена, а и объекты метаданных для дальнейшей работы — можно сохранять сами объекты. — Рекомендую посмотреть здесь: 
 https://infostart.ru/public/1794329/ (пример работы с метаданными в 1С)
 https://its.1c.ru/db/metod8dev#content:360:hdoc (официальная документация по работе с метаданными)
 
- 
- 
		АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.
