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