Разработка и Конфигурация · 9 мин
Как описать структуру в 1С: от метаданных до объекта Структура
Как описать структуру в 1С: работа с деревом метаданных конфигурации и объектом Структура в коде — создание, свойства, типичные ошибки и примеры.
Под словосочетанием «описать структуру» в 1С обычно понимают две разные задачи. Первая — описать структуру конфигурации: какие объекты метаданных в ней есть, как они связаны и как это представить документально или программно. Вторая — использовать встроенный объект «Структура» в коде на встроенном языке, чтобы передавать наборы именованных значений между процедурами и функциями.
Обе задачи встречаются постоянно: при проектировании доработок, написании технического задания, передаче параметров в отчёты и обработки. Ниже разобраны оба сценария с конкретными приёмами, примерами кода и ограничениями, о которых часто забывают.
Подходы одинаково применимы и к типовым конфигурациям (Бухгалтерия, Управление торговлей, ЗУП), и к самописным решениям. Отличия будут только в составе объектов метаданных и в том, какие механизмы платформы задействованы.
Что такое структура конфигурации и зачем её описывать
Структура конфигурации — это иерархия объектов метаданных: справочники, документы, регистры, отчёты, обработки, общие модули, роли и другие элементы. Каждый объект имеет свойства (реквизиты, табличные части, измерения, ресурсы), которые вместе определяют, как данные хранятся и обрабатываются.
Описание структуры нужно в нескольких ситуациях: при передаче проекта новому разработчику, при аудите доработок, при подготовке технического задания и при анализе влияния изменений. Без зафиксированной структуры сложно понять, какие объекты затронет правка, и оценить трудоёмкость.
Описание может быть текстовым (документ с перечнем объектов и их назначения), табличным (матрица связей между объектами) или программным (выгрузка метаданных в файл). Выбор формата зависит от аудитории: аналитику удобнее таблица, разработчику — выгрузка конфигурации в XML-файлы.
Как посмотреть и выгрузить структуру метаданных
Основной инструмент — конфигуратор. Откройте конфигурацию через меню «Конфигурация → Открыть конфигурацию»: слева появится дерево метаданных, где объекты сгруппированы по типам. Через поиск по дереву (Ctrl+F в окне конфигурации) можно быстро найти нужный объект.
Для программного анализа используйте выгрузку конфигурации в файлы: «Конфигурация → Выгрузить конфигурацию в файлы». В результате каждый объект метаданных будет описан в отдельном XML-файле, что удобно для версионирования через Git и автоматического анализа.
Получить информацию о структуре можно и из кода через коллекцию Метаданные. Например, перебрать все документы и их реквизиты:
Для Каждого Док Из Метаданные.Документы Цикл
Сообщить(Док.Имя);
Для Каждого Реквизит Из Док.Реквизиты Цикл
Сообщить(" " + Реквизит.Имя + " : " + Строка(Реквизит.Тип));
КонецЦикла;
КонецЦикла;Такой подход позволяет автоматически сформировать отчёт по составу конфигурации, не выгружая файлы вручную. Это удобно для регулярного контроля изменений в больших проектах.
Как документировать структуру для команды
Текстовое описание структуры обычно строится по единому шаблону для каждого объекта: имя, синоним, назначение, ключевые реквизиты, связи с другими объектами, особенности поведения (проведение, нумерация, права). Такой шаблон избавляет от разночтений при передаче знаний.
Для описания связей удобна таблица: в строках — объекты-источники, в столбцах — объекты, на которые они ссылаются. Например, документ «Реализация» ссылается на справочники «Контрагенты» и «Номенклатура» и делает движения по регистрам продаж и взаиморасчётов.
| Объект | Тип | Назначение | Связи |
|---|---|---|---|
| Номенклатура | Справочник | Каталог товаров и услуг | Используется в документах продажи и закупки |
| РеализацияТоваров | Документ | Отгрузка товара покупателю | Контрагенты, Номенклатура, регистры продаж |
| Продажи | Регистр накопления | Обороты по продажам | Заполняется документами реализации |
При описании доработок типовой конфигурации отдельно фиксируйте, какие объекты изменены относительно поставки. Это критично при обновлении: именно изменённые объекты требуют ручного сопоставления.
- 1Откройте дерево метаданных в конфигураторе и определите перечень ключевых объектов
- 2Для каждого объекта зафиксируйте назначение, основные реквизиты и связи
- 3Составьте таблицу связей между объектами и движений по регистрам
- 4Отметьте объекты, изменённые относительно типовой поставки
- 5Выгрузите конфигурацию в файлы для версионирования и автоматического анализа
Объект Структура во встроенном языке
«Структура» — это объект встроенного языка 1С, представляющий набор пар «ключ — значение». Ключ — всегда строка, соответствующая правилам именования переменных (без пробелов, не начинается с цифры). Значение — любой тип данных, включая другие структуры, массивы и ссылки на объекты базы.
Создаётся структура конструктором с перечислением ключей и значений. Ключи задаются одной строкой через запятую, значения — последующими параметрами в том же порядке:
Параметры = Новый Структура("Организация, Период, Склад", Организация, НачалоМесяца(ТекущаяДата()), Склад);
Параметры.Вставить("Комментарий", "Сформировано автоматически");
Если Параметры.Свойство("Склад") Тогда
Сообщить(Параметры.Склад);
КонецЕсли;Типовое применение — передача параметров в функции и процедуры вместо длинного списка аргументов, формирование отборов для запросов и динамических списков, возврат нескольких значений из функции. Структура передаётся по ссылке, поэтому изменения внутри вызываемой процедуры видны вызывающему коду.
Проверка наличия ключа выполняется методом Свойство(), который возвращает Истина или Ложь и может записать найденное значение в переменную через второй параметр. Обращение к несуществующему ключу напрямую через точку вызовет ошибку выполнения — это одна из самых частых причин падения кода.
Структура против Соответствия: что выбрать
У структуры есть альтернатива — объект «Соответствие». Он тоже хранит пары «ключ — значение», но ключом может быть значение любого типа, а не только строка-идентификатор. Доступ к элементам выполняется через квадратные скобки.
Структура или Соответствие
Ключи — строки-идентификаторы, доступ через точку. Подходит для параметров, настроек, возврата нескольких значений из функции.
Ключи любого типа, включая ссылки. Подходит для кэшей и поиска по значениям объектов, но не сериализуется в фиксированную структуру параметров.
Только чтение. Используется для параметров, которые не должны меняться после создания, например в обработчиках ожидания.
Практическое правило: если набор полей известен заранее и имена можно записать идентификаторами — используйте Структуру. Если ключи вычисляются динамически или являются ссылками на объекты — используйте Соответствие.
Как проверить корректность описания структуры
После документирования структуры метаданных сверьте описание с фактическим состоянием конфигурации: количество и имена объектов, состав реквизитов, движения документов по регистрам. Расхождения обычно появляются после обновлений и срочных доработок, когда документацию править забыли.
Для кода со структурами проверка строится на контрольных точках: наличие всех обязательных ключей, типы значений, поведение при отсутствии необязательных параметров. Полезно добавить в начало процедуры явную проверку входных параметров с понятным текстом ошибки.
Как проверить результат
Все обязательные ключи присутствуют, проверены через Свойство()
Обращение к ключу напрямую без проверки, ошибки при неполных данных
Перечень объектов и связей совпадает с деревом конфигурации
В описании есть удалённые объекты или отсутствуют новые доработки
Вызываемая процедура документирует ожидаемые ключи и значения по умолчанию
Состав параметров известен только из кода вызова, без описания
Что важно запомнить
Структуру конфигурации описывают через дерево метаданных, выгрузку в файлы и таблицы связей объектов. В коде наборы именованных значений передают объектом Структура с обязательной проверкой ключей через Свойство(). Для ключей произвольного типа используют Соответствие.
Часто задаваемые вопросы
Чем Структура отличается от ФиксированнойСтруктуры?
ФиксированнаяСтруктура создаётся на основе обычной структуры и доступна только для чтения: изменить или добавить ключи нельзя. Она применяется там, где параметры не должны меняться, например в обработчиках ожидания и при передаче настроек между вызовами.
Можно ли вложить одну структуру в другую?
Да, значением ключа может быть другая структура, массив, соответствие или ссылка на объект базы. Это позволяет описывать иерархические параметры, например настройки отчёта с вложенными отборами и группировками.
Как скопировать структуру, чтобы изменения не затронули оригинал?
Структура передаётся по ссылке, поэтому простое присваивание создаёт вторую ссылку на тот же объект. Для независимой копии создайте новую структуру и в цикле перенесите значения через Вставить; в типовых конфигурациях для этого есть готовые функции в общих модулях работы с коллекциями.
Как быстро получить список всех объектов конфигурации без конфигуратора?
Из кода — через коллекцию Метаданные: переберите Метаданные.Справочники, Метаданные.Документы и другие коллекции, собрав имена в таблицу значений. Потребуются права на выполнение кода, но не обязательно открытие конфигуратора.
Почему конструктор Новый Структура выдаёт ошибку при большом числе ключей?
Чаще всего причина в несоответствии количества ключей в строке и количества переданных значений — проверьте запятые. Также убедитесь, что ключи не содержат пробелов и не начинаются с цифры: это требования к именам идентификаторов.