Получение каталога объектов в 1С:Предприятие — одна из самых востребованных задач как для разработчиков, так и для администраторов систем. Без этого инструмента невозможно эффективное управление конфигурацией, отладка кода или интеграция с внешними сервисами. Однако способы извлечения каталога сильно зависят от версии платформы, типа конфигурации (управляемая/обычная форма) и даже от прав доступа пользователя.
В этой статье мы разберём все актуальные методы — от встроенных механизмов 1С до программных решений с использованием COM-соединения и OData. Особое внимание уделим типичным ошибкам (например, отсутствие прав на чтение метаданных в облачных версиях 1С) и альтернативным подходам для ограниченных сред. Если вам нужно не просто список объектов, а их структуру с реквизитами, табличными частями и правами — здесь вы найдёте решения для любых сценариев.
1. Стандартные способы получения каталога через интерфейс 1С
Начнём с самых простых методов, которые не требуют программирования. Они подойдут администраторам и пользователям с правами на просмотр метаданных.
В управляемых формах (начиная с версии 8.2) каталог объектов можно получить через меню Файл → Открыть → Конфигурацию. Здесь отобразится дерево метаданных со всеми справочниками, документами, регистрами и другими объектами. Для детального просмотра структуры (реквизитов, табличных частей) достаточно дважды кликнуть на нужный элемент.
- 📁 Плюсы: не требует прав разработчика, работает в большинстве конфигураций.
- ⚠️ Минусы: нельзя экспортировать каталог в файл (только просмотр), в облачных версиях может быть ограничен.
- 🔧 Нюанс: в 1С:ERP и 1С:КА 2.5 часть объектов скрыта по умолчанию — нужно включить отображение служебных элементов в настройках.
В обычных формах (версии до 8.1) путь другой: Сервис → Конфигуратор → Открыть конфигурацию. Здесь также доступно дерево объектов, но интерфейс менее удобен для анализа сложных конфигураций.
Если в дереве метаданных не отображаются некоторые объекты (например, регистры сведений), проверьте фильтр по подсистемам в верхней панели конфигуратора. Сбросьте его, нажав "Все подсистемы".
2. Экспорт каталога в файл через конфигуратор
Если вам нужно не только посмотреть, но и сохранить каталог объектов для дальнейшей работы, используйте встроенный экспорт метаданных. Этот метод работает во всех версиях 1С:Предприятие, но требует прав на изменение конфигурации.
Пошаговая инструкция:
- Откройте конфигуратор (
1CV8.EXE /CONFIG). - Перейдите в
Файл → Сохранить конфигурацию в файл. - Выберите формат:
- 📄
.cf— бинарный формат (полная копия конфигурации). - 📄
.xml— текстовый формат (удобен для анализа структуры).
- 📄
- Укажите путь для сохранения и подтвердите экспорт.
- 📋 Наименования и синонимы объектов.
- 🔧 Реквизиты, табличные части, измерения (для регистров).
- 🔒 Права доступа (если экспортировано с настройками безопасности).
Объект.Реквизиты— список реквизитов.Объект.ТабличныеЧасти— табличные части.Объект.Формы— формы объекта (только для управляемых форм).- 🔹 Общие модули — проверьте настройки экспорта.
- 🔹 Права доступа — экспортируйте с флагом
"Включить права". - 🔹 Внешние обработки/отчёты — они хранятся отдельно от конфигурации.
В полученном файле .xml будет полная структура метаданных, включая:
Убедиться в наличии прав на изменение конфигурации|
Закрыть все сеансы пользователей в базе|
Выбрать формат .xml для удобства анализа|
Проверить свободное место на диске (файл может весить 100+ МБ)-->
⚠️ Внимание: В облачных версиях 1С:Fresh и некоторых корпоративных решениях экспорт конфигурации может быть заблокирован политиками безопасности. В этом случае используйте альтернативные методы (см. раздел 4).
3. Программное получение каталога через встроенный язык
Для автоматизации или интеграции с другими системами часто требуется получить каталог объектов программно. В 1С это делается с помощью встроенного языка и объекта Метаданные.
Пример кода для вывода списка всех справочников с реквизитами:
Процедура ВывестиКаталогСправочников()
Метаданные = Метаданные();
Для Каждого Справочник Из Метаданные.Справочники Цикл
Сообщить(Справочник.Имя + " (" + Справочник.Синоним + ")");
// Выводим реквизиты
Для Каждого Реквизит Из Справочник.Реквизиты Цикл
Сообщить(" - " + Реквизит.Имя + " [" + ТипЗнч(Реквизит.Тип) + "]");
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Этот код можно выполнить в режиме 1С:Предприятие через Отладка → Выполнить код или в конфигураторе. Для вывода в файл замените Сообщить() на запись в текстовый документ.
| Тип объекта | Коллекция в метаданных | Пример доступа |
|---|---|---|
| Справочники | Метаданные.Справочники |
Метаданные().Справочники.Номенклатура |
| Документы | Метаданные.Документы |
Метаданные().Документы.ЗаказПокупателя |
| Регистры сведений | Метаданные.РегистрыСведений |
Метаданные().РегистрыСведений.ЦеныНоменклатуры |
| Отчёты и обработки | Метаданные.ОбщиеМодули, Метаданные.Отчёты |
Метаданные().Отчёты.ОборотноСальдоваяВедомость |
Для получения полной структуры (включая табличные части, реквизиты форм) используйте свойства объектов:
Для рекурсивного обхода всех объектов конфигурации используйте цикл по коллекции Метаданные().Дети. Это позволит получить даже скрытые или служебные элементы.
4. Альтернативные методы для ограниченных сред (облако, тонкий клиент)
В 1С:Fresh, тонком клиенте или при работе через веб-браузер стандартные методы могут не работать. В таких случаях используйте:
А. OData-сервис (для версий 8.3.10+):
Если в конфигурации включён OData-сервис, можно получить метаданные через HTTP-запрос. Пример URL:
http://[адрес_сервера]/[база]/odata/standard.odata/Catalog_Справочник?$metadata
Ответ будет в формате XML или JSON (в зависимости от заголовков запроса). Для авторизации используйте Basic Auth или токены.
Б. COM-соединение (для локальных установок):
Через V83.ComConnector (или V82.ComConnector для старых версий) можно подключиться к базе и извлечь метаданные внешней программой. Пример на C#:
V83.ComConnector conn = new V83.ComConnector();
dynamic comObject = conn.Connect("File=C:\\Bases\\MyBase");
dynamic meta = comObject.Metadata;
foreach (var catalog in meta.Catalogs)
{
Console.WriteLine(catalog.Name);
}
В. Внешние обработки:
Существуют готовые обработки (например, "Анализ метаданных" от Infostart), которые устанавливаются в базу и позволяют экспортировать каталог даже без прав на изменение конфигурации. Их можно найти на порталах 1С-сообщества.
Стандартный интерфейс 1С|
Встроенный язык (1С-код)|
OData или REST API|
COM-соединение/внешние обработки-->
5. Типичные ошибки и их решения
При работе с каталогом объектов пользователи часто сталкиваются с проблемами. Разберём самые распространённые:
⚠️ Внимание: В версиях 1С:Предприятие 8.3.20+ при программном доступе к метаданным может возникать ошибка"Недостаточно прав для чтения метаданных". Это связано с новыми политиками безопасности. Решение: запросите у администратора роль"Чтение метаданных"или используйтеВыполнитьПривилегированно().
| Ошибка | Причина | Решение |
|---|---|---|
Метаданные() не является допустимым значением |
Код выполняется в режиме 1С:Предприятие, где объект Метаданные недоступен. |
Перенесите код в конфигуратор или используйте ПолучитьМетаданные() для управляемых форм. |
Нет прав на чтение конфигурации |
Недостаточные права пользователя в облачной или корпоративной базе. | Используйте OData или запросите права у администратора. |
В экспортированном .xml отсутствуют реквизиты |
Экспорт выполнен без флага "Включить состав объектов". | При экспорте установите галочку "Сохранять состав объектов". |
Не удалось подключиться к COM-объекту |
Не установлен 1С:Предприятие на машине или заблокирован доступ. | Установите платформу и зарегистрируйте V83.ComConnector через regsvr32. |
Ещё одна частая проблема — неполный экспорт каталога. Например, в файле .xml могут отсутствовать:
Как экспортировать права доступа?
В конфигураторе при экспорте в файл .xml нажмите "Дополнительно" и установите галочку "Сохранять настройки прав доступа". В результате в файле появятся секции <Роли> и <Права> с полным описанием ролей и ограничений.
6. Автоматизация и интеграция с внешними системами
Если вам нужно регулярно получать каталог объектов для интеграции с BI-системами, ERP или документацией, рассмотрите следующие подходы:
А. Регулярный экспорт через регламентные задания:
Создайте обработку, которая:
- Экспортирует метаданные в
JSON/XML. - Сохраняет файл на сервере или отправляет по
FTP/email. - Запускается по расписанию через
РегламентныеЗадания.
Б. Использование REST API (для 1С:Fresh и корпоративных версий):
Пример запроса для получения списка справочников:
GET /[база]/hs/exchange/rest/метаданные/справочники
Headers:
Authorization: Basic [токен]
Accept: application/json
В. Генерация документации:
С помощью скриптов на Python или PowerShell можно парсить экспортированные метаданные и формировать:
- 📖 Markdown-документацию для Confluence или GitHub.
- 📊 ER-диаграммы (например, через PlantUML).
- 📑 Excel-отчёты со структурой реквизитов.
Для автоматизации рекомендуем библиотеку py1c (Python) или модуль OneScript.
Для интеграции с Power BI или Tableau удобнее использовать OData-подключение. Оно позволяет динамически получать не только структуру метаданных, но и сами данные из справочников.
7. Работа с каталогом в типовых конфигурациях (БП, УТ, ЗУП)
В типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:Зарплата и управление персоналом) каталог объектов может содержать сотни элементов. Чтобы не запутаться, используйте фильтры и специализированные обработки.
Примеры полезных обработок:
- 🔍 "Поиск по метаданным" — позволяет искать объекты по имени, синониму или типу.
- 📊 "Сравнение конфигураций" — полезно для анализа отличий между версиями.
- 🔗 "Построитель ER-диаграмм" — визуализирует связи между объектами.
В 1С:ERP и 1С:КА 2 часть объектов скрыта в подсистемах. Чтобы увидеть их все:
- Откройте конфигуратор.
- Перейдите в
Администрирование → Печать и отчёты → Настройки отображения. - Снимите галочку
"Скрывать служебные объекты".
Для анализа структуры регистров накопления (например, ТоварыНаСкладах) используйте следующий код:
Регистр = Метаданные().РегистрыНакопления.ТоварыНаСкладах;
Для Каждого Измерение Из Регистр.Измерения Цикл
Сообщить("Измерение: " + Измерение.Имя);
КонецЦикла;
FAQ: Частые вопросы по работе с каталогом 1С
Можно ли получить каталог объектов без прав администратора?
Да, но с ограничениями:
- В 1С:Предприятие (режим пользователя) доступен просмотр метаданных через
Файл → Открыть → Конфигурацию, но без возможности экспорта. - В облачных версиях (1С:Fresh) даже просмотр может быть ограничен. Используйте
ODataили запросите права у провайдера. - Для программного доступа без прав администратора подойдёт
COM-соединениес ограниченным набором методов.
Как экспортировать каталог в Excel?
Самый простой способ:
- Экспортируйте метаданные в
.xml(см. раздел 2). - Используйте Excel с надстройкой "Power Query" для импорта
XML. - Преобразуйте данные в таблицу с помощью запроса
XPath.
Альтернатива: напишите обработку на 1С, которая сохраняет данные в .xlsx через COM-объект Excel.Application.
Почему в экспортированном файле нет табличных частей?
Это типичная проблема при неполном экспорте. Проверьте:
- Установлен ли флаг
"Сохранять состав объектов"при экспорте. - Экспортируете ли вы в формат
.xml(в.cfтабличные части сохраняются, но не читаются без конфигуратора). - Не скрыты ли табличные части в настройках конфигурации (проверьте свойство
Объект.ТабличныеЧасти.Видимость).
Как получить каталог объектов из мобильного приложения 1С?
В мобильном клиенте 1С:Предприятие доступ к метаданным ограничен. Возможные решения:
- Используйте
REST APIилиOData, если они настроены на сервере. - Создайте на сервере обработку, которая отправляет каталог по запросу (например, в
JSON). - Для 1С:Мобильная платформа (версии 8.3.15+) доступен ограниченный набор методов
Метаданныечерез встроенный язык.
⚠️ Внимание: В мобильных приложениях 1С:Fresh программный доступ к метаданным заблокирован по умолчанию.
Можно ли получить историю изменений каталога объектов?
Да, но для этого нужны:
- 🔹 Система контроля версий (например, Git + экспорт конфигурации в
.xml). - 🔹 Журнал регистрации в 1С (настройте событие
"Изменение конфигурации"). - 🔹 Специализированные обработки (например, "Сравнение конфигураций" от Infostart).
В 1С:EDT (Eclipse-редактор) история изменений ведётся автоматически при работе с проектами.