Из чего собрана конфигурация 1С: дерево объектов и работа с ним

· 9 мин

Содержание

Объект конфигурации 1С — это описание одной сущности прикладного решения: справочника «Номенклатура», документа «Реализация товаров и услуг», регистра накопления «Товары на складах». Все объекты видны в Конфигураторе в дереве Конфигурация → Открыть конфигурацию. Платформа по этому описанию сама создаёт таблицы в базе, формы, права и программные типы.

Работать с объектами можно тремя способами. Пользователь видит их как разделы, списки и отчёты. Администратор настраивает права и функциональные опции. Разработчик меняет сами объекты: в основной конфигурации, если она снята с поддержки, или через расширение, если типовую нужно обновлять без потерь. Всё сказанное относится к платформе 8.3 и одинаково для БП 3.0, ЗУП 3.1, УТ 11 и других решений.

Объект конфигурации и его роль в прикладном решении

Конфигурация — это набор объектов и связей между ними. Платформа 1С:Предприятие сама по себе ничего не «знает» о складе или зарплате. Всю предметную логику задают объекты конфигурации.

У каждого объекта есть три слоя:

  • 🧱 Структура — реквизиты, табличные части, измерения и ресурсы. По ним платформа строит таблицы СУБД.
  • 🖥 Интерфейс — формы, команды, макеты печатных форм.
  • ⚙️ Поведение — модуль объекта, модуль менеджера, модули форм, обработчики подписок на события.

Объект создаётся в дереве конфигурации, после чего выполняется Конфигурация → Обновить конфигурацию базы данных (F7). Только на этом шаге платформа меняет структуру таблиц. До обновления изменения живут лишь в основной конфигурации.

Отличие объекта от «таблицы в базе» важно для понимания. Один справочник с двумя табличными частями даёт в СУБД три таблицы, а иногда и больше: для итогов, истории, полнотекстового поиска. Разработчик работает с объектом, а не с таблицами.

Виды объектов конфигурации: классификация с примерами

Дерево конфигурации делится на ветки. Каждая ветка — свой вид объекта со своими свойствами и поведением.

Прикладные объекты

Вид объектаЧто хранитПример в типовых
КонстантыОдно значение на всю базуОсновная валюта, флаг использования складов
СправочникиСписки однородных элементовНоменклатура, Контрагенты, Сотрудники
ДокументыФакты хозяйственной жизни с датойПоступление товаров, Начисление зарплаты
Журналы документовОбщий список нескольких видов документовЖурнал кассовых документов
ПеречисленияФиксированный набор значений, задаётся только в КонфигуратореВиды операций, Ставки НДС
Отчёты и обработкиВывод данных и сервисные действияОСВ, Групповое перепроведение
Планы видов характеристикОписания свойств с типом значенияДополнительные реквизиты и сведения
Планы счетовСчета с субконтоХозрасчётный
Планы видов расчётаВиды начислений и удержанийНачисления в ЗУП

Предопределённые элементы

У справочников, планов счетов и планов видов характеристик бывают предопределённые элементы. Их задают в Конфигураторе, и код обращается к ним по имени: Справочники.ВидыКонтактнойИнформации.EmailКонтрагента, ПланыСчетов.Хозрасчетный.Касса. Пользователь может изменить наименование такого элемента, но удалить его нельзя. Если программа ругается на отсутствующий предопределённый элемент, причина почти всегда в задвоении или ручной пометке на удаление, а не в самом объекте.

Регистры

Регистры хранят итоговую и накопленную информацию. Их обычно заполняют документы при проведении — это называется движениями.

  • 📊 Регистр сведений — значения во времени или без времени: курсы валют, цены, адреса.
  • 📦 Регистр накопления — остатки и обороты: товары на складах, взаиморасчёты.
  • 📒 Регистр бухгалтерии — проводки по плану счетов.
  • 💰 Регистр расчёта — расчёты с периодом действия, например начисления по сотрудникам.

Процессы и внешние данные

  • 🔄 Бизнес-процессы и задачи — маршруты согласования и задания исполнителям.
  • 🔌 Внешние источники данных — подключение таблиц сторонней СУБД как объектов 1С.

Общие объекты

Ветка «Общие» — служебный слой. В ней лежат подсистемы, общие модули, роли, параметры сеанса, общие реквизиты, планы обмена, подписки на события, регламентные задания, функциональные опции, определяемые типы, общие формы, команды, макеты и картинки, стили, HTTP- и web-сервисы, XDTO-пакеты.

Пользователь их напрямую не видит, но от них зависит почти всё. Роли определяют права, подсистемы — разделы интерфейса, функциональные опции — видимость команд и полей.

Проверьте себя
Где хранится текущий остаток товара на складе?
Какой объект нельзя пополнить в режиме «Предприятие»?
Что определяет, какие разделы видит пользователь?

Объекты конфигурации и метаданные: в чём разница

Эти термины часто путают. Разница простая:

  • Объект конфигурации (объект метаданных) — описание: «справочник Номенклатура, реквизиты Артикул и Единица измерения, код длиной 11».
  • Объект данных — конкретная запись: «Бумага А4, артикул 10045, пачка».

Метаданные — это вся совокупность описаний. В коде они доступны через глобальное свойство Метаданные. По нему программа узнаёт, какие объекты есть в конфигурации и как они устроены.

Для каждого объекта конфигурации платформа порождает набор типов. Для справочника «Номенклатура» это, например:

ТипДля чего
СправочникМенеджер.НоменклатураПоиск, создание элементов, выборка
СправочникСсылка.НоменклатураСсылка на элемент, хранится в реквизитах других объектов
СправочникОбъект.НоменклатураИзменение и запись элемента
СправочникВыборка.НоменклатураПеребор элементов

Пример: вывести все документы конфигурации с их синонимами.

Для Каждого ОбъектМД Из Метаданные.Документы Цикл
    Сообщить(ОбъектМД.Имя + " — " + ОбъектМД.Синоним);
КонецЦикла;

Ещё один частый приём — узнать, к какому объекту относится ссылка:

ОбъектМД = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка));
Если Метаданные.Документы.Содержит(ОбъектМД) Тогда
    Сообщить("Это документ: " + ОбъектМД.ПолноеИмя());
КонецЕсли;

У объекта есть имя и синоним. Имя (РеализацияТоваровУслуг) используется в коде и не содержит пробелов. Синоним («Реализация (акт, накладная, УПД)») видит пользователь. Меняйте синоним свободно, а имя — только с поиском всех мест в коде.

Подчинённость и иерархия объектов

В дереве у каждого объекта есть подчинённые элементы. У документа это реквизиты, табличные части с их реквизитами, формы, команды и макеты. Они не существуют отдельно от владельца: удалили документ — исчезли и его формы.

Кроме вложенности в дереве, есть ещё несколько видов подчинения.

Подчинённые справочники

У справочника есть свойство «Владельцы» на закладке «Владельцы». Если указать в нём «Контрагенты», справочник «Договоры контрагентов» станет подчинённым. Каждый договор будет принадлежать конкретному контрагенту, а в списке договоры отберутся по владельцу.

Иерархия внутри справочника

Справочник может быть иерархическим: группы и элементы или только элементы. Так устроены папки номенклатуры. Глубину иерархии можно ограничить в свойствах.

Регистры, подчинённые регистратору

Регистр накопления всегда подчинён регистратору: записи в него делает документ. Регистр сведений может работать в режиме «Подчинение регистратору» или «Независимый». В первом случае записи удаляются вместе с отменой проведения документа.

Подсистемы

Подсистемы тоже вкладываются друг в друга. Верхний уровень даёт разделы панели разделов, вложенные — группы внутри раздела. Один объект может входить сразу в несколько подсистем.

Как работать с объектами на практике

Набор действий одинаков для любых решений. Пути ниже — из Конфигуратора платформы 8.3.

Создать объект

  1. Откройте конфигурацию: Конфигурация → Открыть конфигурацию.
  2. Выделите нужную ветку, например «Справочники», и нажмите кнопку добавления или клавишу Insert.
  3. Задайте имя, синоним, реквизиты, табличные части.
  4. Включите объект в подсистему и дайте права в ролях. Без прав пользователь объект не увидит.
  5. Сохраните и выполните Конфигурация → Обновить конфигурацию базы данных.

Найти, где используется объект

Перед удалением или переименованием проверьте, на что объект влияет. В контекстном меню объекта в дереве есть команда поиска ссылок на объект. Она покажет реквизиты других объектов, роли, подсистемы и формы, где он упомянут.

Для поиска упоминаний в коде используйте глобальный поиск: Правка → Глобальный поиск или Ctrl+Shift+F. Ищите по имени объекта.

Изменить типовую конфигурацию безопасно

Если база на поддержке поставщика, правьте не основную конфигурацию, а расширение. Расширения появились в платформе 8.3.6. Новый реквизит, своя печатная форма, изменённый обработчик — всё это делается в расширении через заимствование объекта. Типовая при этом остаётся на поддержке и обновляется без объединения.

  1. Конфигурация → Расширения конфигурации → добавить расширение.
  2. В дереве основной конфигурации на нужном объекте — команда «Добавить в расширение».
  3. Внутри заимствованного объекта добавьте реквизит или форму.
  4. Обновите конфигурацию базы данных для расширения.

Расширение с новыми реквизитами меняет структуру данных. Перед подключением к рабочей базе сохраните копию через Администрирование → Выгрузить информационную базу.

Получить отчёт по конфигурации

Конфигурация → Отчет по конфигурации выгружает описание всех объектов в текстовый файл или табличный документ. Удобно, чтобы сравнить состав реквизитов до и после доработки или передать структуру подрядчику.

Анализ и оптимизация объектов

Проблемы со скоростью часто идут не от «медленного сервера», а от устройства объектов. Что стоит проверить.

Индексы

Реквизит, по которому часто ищут или фильтруют, должен иметь свойство «Индексировать». Варианты: «Индексировать» и «Индексировать с доп. упорядочиванием». Измерения регистров индексируются платформой, но порядок измерений влияет на скорость: первым ставьте то, по которому отбор идёт чаще всего.

Не индексируйте всё подряд. Каждый индекс замедляет запись и занимает место.

Составные типы

Реквизит с составным типом из десятка ссылок неудобен для запросов: при разыменовании через точку платформа соединяет все таблицы из типа. Если реквизит может ссылаться на несколько видов объектов, обращайтесь к нему с явным приведением через ВЫРАЗИТЬ в запросе.

Хранилища значений

Файлы и картинки в реквизите типа ХранилищеЗначения прямо в таблице справочника раздувают её. Типовые решения выносят файлы в отдельные справочники присоединённых файлов или на диск. Так же поступайте в своих доработках.

Размер таблиц

Какой объект занимает больше всего места, покажет сама СУБД. Сопоставить имена таблиц СУБД с объектами конфигурации помогает функция ПолучитьСтруктуруХраненияБазыДанных():

Структура = ПолучитьСтруктуруХраненияБазыДанных();
Для Каждого Строка Из Структура Цикл
    Если ЗначениеЗаполнено(Строка.Метаданные) Тогда
        Сообщить(Строка.ИмяТаблицы + " → " + Строка.Метаданные);
    КонецЕсли;
КонецЦикла;

Выполнять её нужно на сервере. Результат — таблица значений с именами таблиц СУБД и полным именем объекта.

Проверка конфигурации

Конфигурация → Проверка конфигурации находит ссылки на несуществующие объекты, ошибки в модулях и неиспользуемые процедуры. Запускайте её после каждой крупной доработки, до переноса в рабочую базу.

Типовые конфигурации: что в них устроено иначе

Типовые решения 1С собраны на одних и тех же объектах, но по своим правилам.

  • 📚 Библиотека стандартных подсистем (БСП). Общие модули, роли, справочники присоединённых файлов, дополнительные реквизиты. Многие доработки делаются её механизмами без изменения структуры: например, дополнительные реквизиты через план видов характеристик добавляются в режиме «Предприятие», без Конфигуратора.
  • 🏷 Префикс «Удалить». Объекты и реквизиты, которые разработчик вывел из употребления, переименовывают с префиксом Удалить. Данные в них остаются для переноса при обновлении. Использовать их в своих доработках не стоит — в следующих релизах они исчезнут.
  • 🔒 Поддержка поставщика. Объект на замке нельзя изменить, пока не включена возможность изменения. Включение возможности изменения превращает каждое следующее обновление в объединение конфигураций. Это главный довод в пользу расширений.
  • 🎚 Функциональные опции. Многие объекты в типовых есть всегда, но скрыты, пока в настройках программы не включена соответствующая функция. Если пользователь «не видит документ», сначала проверьте настройки функциональности (в БП 3.0 — Главное → Функциональность), а уже потом права.

Ошибки, которые дорого обходятся

  • ❌ Удаление реквизита в рабочей базе. При обновлении структуры колонка удаляется вместе с данными. Безопаснее сначала переименовать реквизит с префиксом Удалить, перенести данные и удалить его в следующей версии.
  • ❌ Смена типа реквизита. Если поменять «Строка» на ссылку на справочник, платформа не сможет преобразовать значения, и они пропадут. Создайте новый реквизит и заполните его обработкой.
  • ❌ Переименование без поиска по коду. Связи в метаданных платформа обновит сама, а текст модулей, запросов и внешних обработок — нет. Внешние отчёты сломаются молча, до первого запуска.
  • ❌ Новый объект без прав. Объект создан, база обновлена, а пользователь пишет «нет раздела». Не добавлен в роль или подсистему.
  • ❌ Перечисление вместо справочника. Список, который пользователи захотят пополнять, нельзя делать перечислением: каждое новое значение потребует правки конфигурации.
Сколько объектов в типовой конфигурации?
Тысячи. В БП 3.0 только справочников и документов — несколько сотен, а вместе с регистрами, общими модулями, ролями и формами счёт идёт на тысячи элементов дерева.
Можно ли увидеть объекты конфигурации без Конфигуратора?
Частично. В режиме «Предприятие» список объектов доступен через «Все функции» (включается в параметрах панели «Сервис и настройки»). Структуру реквизитов там не посмотреть.
Чем общий реквизит отличается от обычного?
Общий реквизит один раз описывается в ветке «Общие» и добавляется сразу в несколько объектов. На нём строится, например, разделение данных по областям в сервисе.
Сохранятся ли данные, если удалить объект из конфигурации?
Нет. При обновлении конфигурации базы данных платформа удалит его таблицы. Сделайте выгрузку базы до этого шага.
Что такое объект «Константа» и когда её использовать?
Хранилище одного значения на всю базу. Подходит для настроек вроде «использовать несколько складов». Для значений, меняющихся во времени, нужен периодический регистр сведений.