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