Из чего собрана любая база 1С:Предприятие 8.3 — справочники, документы, регистры и их связи
Содержание
Объекты конфигурации 1С — это описания в дереве Конфигуратора: справочник «Номенклатура», документ «Реализация», регистр накопления «Товары на складах». По каждому такому описанию платформа 1С:Предприятие сама создаёт таблицы в базе, формы, права и программные объекты, через которые с данными работают пользователи и код. Открыть дерево объектов можно в Конфигураторе: Конфигурация → Открыть конфигурацию.
Тема общая для платформы 8.3 и не зависит от конкретной конфигурации. Бухгалтерия, ЗУП и УТ построены из одних и тех же видов объектов, отличается только их набор и названия.
Объект конфигурации и объект в памяти: где граница
Путаница начинается с того, что словом «объект» в 1С называют две разные вещи.
📐 Объект конфигурации (метаданные) — это схема. Например, справочник «Контрагенты» с реквизитами «ИНН», «КПП», «Вид контрагента». Он существует один раз, в дереве конфигурации, и меняется только разработчиком.
📦 Объект встроенного языка (данные) — конкретный экземпляр по этой схеме: контрагент «ООО Ромашка» с ИНН 7701234567. Таких экземпляров в базе тысячи, их создают пользователи.
По одному объекту метаданных платформа порождает целое семейство типов:
| Тип | Что это | Пример для справочника «Номенклатура» |
|---|---|---|
| Менеджер | Точка входа: поиск, создание, выборка | Справочники.Номенклатура |
| Ссылка | Указатель на запись, только чтение | СправочникСсылка.Номенклатура |
| Объект | Загруженная в память запись, можно менять и записывать | СправочникОбъект.Номенклатура |
| Выборка | Последовательный обход записей | СправочникВыборка.Номенклатура |
| Описание метаданных | Сама схема, доступна из кода | Метаданные.Справочники.Номенклатура |
Разница видна в коде. Ссылку получают быстро и дёшево, а объект — только когда запись нужно изменить:
Ссылка = Справочники.Номенклатура.НайтиПоКоду("00-00000001");
Если НЕ Ссылка.Пустая() Тогда
Объект = Ссылка.ПолучитьОбъект();
Объект.Наименование = "Бумага офисная А4";
Объект.Записать();
КонецЕсли;
А так код читает уже не данные, а саму схему — список всех справочников конфигурации с их синонимами:
Для Каждого МД Из Метаданные.Справочники Цикл
Сообщить(МД.Имя + " — " + МД.Синоним);
КонецЦикла;
Правило практика: читать данные — запросом или через ссылку, ПолучитьОбъект() вызывать только перед записью. Объект грузит в память все реквизиты и табличные части, на списке из 10 000 элементов это заметно.
Основные виды объектов конфигурации 1С и зачем каждый нужен
Дерево конфигурации делится на две части: ветку «Общие» и прикладные объекты. Общие объекты сами данных почти не хранят, они обслуживают всю конфигурацию.
Общие объекты
- 🗂 Подсистемы — разделы интерфейса («Продажи», «Склад»). Объект без подсистемы пользователь в разделах не увидит.
- 🧩 Общие модули — процедуры, которые вызываются из разных мест.
- 🔐 Роли — наборы прав на чтение, добавление, изменение, проведение.
- 📣 Подписки на события — обработчик, который срабатывает при записи или проведении сразу нескольких объектов.
- ⏰ Регламентные задания — фоновые операции по расписанию.
- ⚙️ Функциональные опции — переключатели, которые скрывают или показывают часть функциональности.
- 🖼 Общие формы, общие макеты, общие картинки, стили — оформление и печать.
Прикладные объекты
| Вид объекта | Что хранит | Пример из жизни |
|---|---|---|
| Константы | Одно значение на всю базу | Основная валюта, флаг использования складов |
| Справочники | Списки однотипных элементов | Номенклатура, контрагенты, сотрудники |
| Перечисления | Фиксированный набор значений, задаётся разработчиком | Ставки НДС, виды операций |
| Документы | Факты хозяйственной жизни с датой | Поступление, реализация, начисление зарплаты |
| Журналы документов | Общий список документов разных видов | Журнал кассовых документов |
| Регистры сведений | Значения по измерениям, часто с датой | Курсы валют, цены номенклатуры |
| Регистры накопления | Остатки и обороты | Товары на складах, взаиморасчёты |
| Планы счетов | Счета и их признаки | План счетов бухгалтерского учёта |
| Регистры бухгалтерии | Проводки Дт/Кт | Журнал проводок |
| Планы видов характеристик | Виды произвольных свойств и аналитики | Виды субконто |
| Планы видов расчёта и регистры расчёта | Начисления с периодами действия | Оклад, премия, больничный |
| Отчёты и обработки | Вывод данных и служебные действия | Оборотно-сальдовая ведомость, групповая обработка |
| Бизнес-процессы и задачи | Маршруты согласования | Согласование договора |
| Планы обмена | Узлы и регистрация изменений для синхронизации | Обмен с УТ, распределённая база |
У каждого прикладного объекта внутри своя структура: реквизиты, табличные части, формы, команды, макеты, модуль объекта и модуль менеджера.
Внешние отчёты и обработки (файлы .erf и .epf) — не объекты конфигурации. Они подключаются к базе снаружи и в дереве Конфигуратора не видны.
Как объекты конфигурации 1С связаны между собой
Отдельный справочник мало что умеет. Сила конфигурации в связях, а связи строятся несколькими способами.
1. Ссылочные типы реквизитов
Реквизит «Контрагент» в документе имеет тип СправочникСсылка.Контрагенты. В базе хранится не название, а ссылка на запись. Переименовали контрагента — во всех документах сразу видно новое имя.
2. Документ как регистратор
Документ сам по себе остатков не считает. При проведении он записывает движения в регистры:
- Пользователь проводит «Реализацию» на 10 штук.
- Модуль документа в обработчике
ОбработкаПроведенияформирует записи. - Регистр накопления получает расход 10 штук, регистр бухгалтерии — проводку.
- Отчёт об остатках читает регистр, а не документы.
На вкладке «Движения» в окне документа указывают, по каким регистрам он может делать записи. У каждой записи регистра есть поле «Регистратор» — по нему видно, какой документ её создал.
3. План счетов, регистр бухгалтерии и ПВХ
Регистр бухгалтерии всегда опирается на план счетов . Аналитика (субконто) берётся из плана видов характеристик: в нём перечислено, что может быть субконто — контрагенты, договоры, номенклатура. Эта тройка работает только вместе.
4. Подсистемы и роли
Подсистема отвечает на вопрос «где пользователь увидит объект», роль — «что ему с объектом можно делать». Объект без роли не откроется, объект без подсистемы не появится в разделах.
5. Ввод на основании и подписки
На вкладке «Ввод на основании» задают, из каких объектов можно создать текущий: счёт → реализация → счёт-фактура. Подписки на события связывают поведение многих объектов сразу, без правки модуля каждого.
Объекты конфигурации в типовых решениях: что за чем стоит
Знание имён объектов помогает в отладке, в запросах и при чтении сообщений об ошибках. Несколько опорных примеров из Бухгалтерии предприятия 3.0:
| Что видит пользователь | Объект конфигурации |
|---|---|
| План счетов | План счетов Хозрасчетный |
| Проводки документа (кнопка «Дт/Кт») | Регистр бухгалтерии Хозрасчетный |
| Виды субконто | План видов характеристик ВидыСубконтоХозрасчетные |
| Номенклатура | Справочник Номенклатура |
| Реализация (акты, накладные) | Документ РеализацияТоваровУслуг |
| Поступление товаров и услуг | Документ ПоступлениеТоваровУслуг |
Отсюда понятна типовая цепочка учёта: справочники дают аналитику, документ при проведении пишет проводки в регистр бухгалтерии, а ОСВ и карточка счёта строятся по этому регистру.
В ЗУП 3.1 ту же роль, что план счетов в бухгалтерии, играют планы видов расчёта: начисления и удержания описаны как виды расчёта, а документы начисления ссылаются на них.
Как быстро узнать имя объекта в пользовательском режиме: откройте элемент или документ и нажмите Shift+F11 («Получить ссылку»). В ссылке вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=… видно полное имя объекта. Те же имена платформа пишет в сообщениях об ошибках, например Документ.РеализацияТоваровУслуг.МодульОбъекта.
Создание объекта конфигурации: пошаговая инструкция
Разберём на простом примере: справочник «Автомобили» с реквизитом «Госномер» и документ «Путевой лист», который на него ссылается.
Подготовка
- 💾 Сделайте копию базы
:
Администрирование → Выгрузить информационную базув Конфигураторе. - 🧪 Работайте в копии или тестовой базе, а не в рабочей.
- 🔒 Если конфигурация типовая и стоит на поддержке, решите, куда добавлять объект (об этом ниже).
Шаги в Конфигураторе
- Откройте
Конфигурация → Открыть конфигурацию. - В дереве щёлкните правой кнопкой по ветке «Справочники» и выберите «Добавить».
- На вкладке «Основные» задайте имя
Автомобилии синоним «Автомобили». Имя — для кода, синоним — для пользователя. - На вкладке «Подсистемы» отметьте раздел, где справочник должен появиться.
- На вкладке «Данные» задайте длину кода и наименования, добавьте реквизит
Госномертипа «Строка» длиной 12. - На вкладке «Формы» нажмите кнопку с лупой рядом с основной формой элемента — откроется конструктор формы. Можно не создавать формы вовсе: платформа сгенерирует их автоматически.
- Добавьте документ
ПутевойЛисттем же способом, а в нём реквизитАвтомобильтипаСправочникСсылка.Автомобили. - Откройте роль, которой пользуются сотрудники, и выдайте права на новые объекты.
- Сохраните изменения и выполните
Конфигурация → Обновить конфигурацию базы данных(F7). - Запустите отладку (
F5) и проверьте, что справочник виден в разделе и элемент записывается.
На шаге 9 платформа покажет список изменений структуры и попросит подтвердить реструктуризацию. Если изменение затрагивает таблицы с данными, может потребоваться монопольный доступ — тогда пользователи должны выйти из базы.
Типовая конфигурация: расширение вместо правки основной
В типовую Бухгалтерию или ЗУП новые объекты лучше добавлять через расширение: Конфигурация → Расширения конфигурации. Основная конфигурация остаётся на поддержке и обновляется без ручного сравнения.
| Способ | Когда подходит | Риски |
|---|---|---|
| Расширение | Типовая на поддержке, нужен новый справочник, отчёт, реквизит | Не всё можно сделать расширением |
| Включение возможности изменения | Нужны глубокие правки основной конфигурации | Каждое обновление — сравнение и объединение вручную |
| Своя конфигурация с нуля | Самописная система | Обновления типовых не применимы |
Снимать типовую с поддержки ради одного справочника не стоит: потом каждое обновление релиза превращается в ручное объединение.
Ошибки при работе с объектами конфигурации
Имя объекта
Имя начинается с буквы, без пробелов и спецсимволов, уникально в своей ветке. Кириллица допустима, и в типовых она используется повсеместно. Длинное понятное имя (ПутевыеЛисты) лучше сокращения (ПЛ), которое через год никто не расшифрует.
Смена типа реквизита при заполненных данных
Сменили «Строку» на «Число» — при реструктуризации значения, которые не приводятся к новому типу, пропадут. Перед такой правкой выгрузите данные или заведите новый реквизит, перенесите значения обработкой и только потом удаляйте старый.
Удаление объекта, на который ссылаются
Прежде чем удалять реквизит или объект, найдите в Конфигураторе ссылки на него: правой кнопкой по объекту → «Поиск ссылок на объект». Иначе ошибки всплывут в модулях, формах и запросах уже после обновления.
Переименование и код
Данные при переименовании объекта не теряются: платформа хранит их по внутреннему идентификатору. А вот строки в коде и тексты запросов с прежним именем перестанут работать. Проверьте их глобальным поиском по конфигурации (Ctrl+Shift+F) и синтаксическим контролем модулей.
Строка неограниченной длины
Реквизит-строка без ограничения длины хранится иначе: по нему нельзя нормально сравнивать и сортировать в запросах, его нельзя индексировать. Для госномера, артикула, ИНН ставьте фиксированную длину.
Табличная часть вместо регистра
Остатки, считанные «по документам» обходом табличных частей, работают на сотне записей и встают на сотне тысяч. Для остатков и оборотов нужен регистр.
Как ускорить работу объектов конфигурации
Быстродействие закладывается ещё при проектировании объектов.
- 🔎 Индексация. Реквизиты, по которым часто ищут или отбирают, отметьте свойством «Индексировать». Вариант «Индексировать с доп. упорядочиванием» нужен, когда по полю ещё и сортируют списки.
- 📊 Регистры с итогами. Регистр накопления остатков хранит итоги, и отчёт не пересчитывает всё движение с начала времён. Используйте виртуальные таблицы
ОстаткииОстаткиИОборотыс параметрами периода и отбора, а не условие вГДЕ. - 🧮 Запрос вместо обращения через точку. Конструкция
Документ.Контрагент.ОсновнойДоговор.Валютав цикле — это отдельное чтение из базы на каждом шаге. Один запрос с нужными полями быстрее. - 🧱 Минимум табличных частей в «тяжёлых» документах. Каждая табличная часть — отдельная таблица в базе, и объект при чтении грузит их все.
- 📁 Хранилище значения для файлов и больших данных. Вложения лучше держать в отдельном справочнике, а не в реквизите основного объекта, иначе каждое открытие формы тянет файл.
- 🚦 Разделение итогов у регистров. При одновременном проведении многими пользователями оно уменьшает блокировки.
Индекс ускоряет поиск, но замедляет запись и увеличивает базу. Индексируйте поля, по которым реально ищут, а не все подряд.