К статье
Практический материал

Справочники и Данные · 11 мин

Как определить справочник или документ в 1С

Как отличить справочник от документа в 1С: признаки объектов, проверка в конфигураторе и режиме предприятия, типичные ошибки и способы выбора типа объекта.

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

Справочник и документ — два фундаментально разных типа объектов в платформе 1С. Справочник хранит относительно постоянную, нормативно-справочную информацию: контрагенты, номенклатура, сотрудники, склады. Документ фиксирует факт хозяйственной деятельности в конкретный момент времени: поступление товара, реализация, начисление зарплаты, платёжное поручение.

Различить их можно несколькими способами: по поведению объекта в интерфейсе, по наличию движений и проведения, по структуре в конфигураторе, по программному коду. Ниже разобраны все практические методы — от визуальных признаков до анализа метаданных.

Чем справочник отличается от документа по сути

Ключевое различие — в природе хранимых данных. Справочник описывает «кто» и «что»: это сущности, которые существуют длительное время и редко меняются. Элемент справочника «Контрагенты» создаётся один раз и используется годами. Документ описывает «что произошло»: каждый документ — это отдельное событие с датой, временем и номером.

Второе принципиальное отличие — проведение и движения. Документ при проведении формирует записи в регистрах (накопления, сведений, бухгалтерии), и именно эти записи попадают в отчёты и проводки. Справочник не проводится и не делает движений: он лишь поставляет аналитику для документов.

Третий признак — уникальность по времени. Два документа с одинаковым содержимым, но разными датами — это два разных события. Два элемента справочника с одинаковым наименованием — это дубль, который обычно нужно устранять.

Как определить тип объекта в режиме «Предприятие»

Если вы работаете в пользовательском режиме и видите перед собой объект, определить его тип можно по визуальным признакам без всякого программирования.

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

Дополнительный признак — поведение при записи. Если после сохранения объекта в учёте что-то изменилось (остатки на складе, взаиморасчёты, проводки) — перед вами документ. Если объект просто сохранился как карточка без влияния на учёт — это справочник.

Есть кнопка «Провести»Документ

Проверьте также наличие даты и номера

Нет даты операции, есть кодСправочник

Посмотрите, есть ли иерархия и группы

Объект меняет остатки или проводкиДокумент

Откройте отчёт по движениям документа

Объект выбирается в полях других объектовСкорее всего справочник

Документы тоже могут быть основаниями, но реже

Как определить тип объекта в конфигураторе

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

Если известно только имя объекта (например, из текста ошибки или запроса), используйте поиск: Правка → Найти или глобальный поиск по конфигурации. По найденному имени видно, в какой ветке метаданных расположен объект.

Дополнительно в свойствах документа видны регистры, по которым он делает движения (закладка «Движения» в палитре свойств). Если у объекта такой закладки нет и нет признака проведения — это справочник.

Порядок определения типа в конфигураторе
  1. 1
    Откройте конфигуратор и дерево конфигурации
  2. 2
    Найдите имя объекта через глобальный поиск (Ctrl+Shift+F)
  3. 3
    Посмотрите, в какой ветке метаданных он находится: «Справочники» или «Документы»
  4. 4
    Для документа откройте свойства и проверьте закладку «Движения»
  5. 5
    Убедитесь в результате: у документа есть дата, номер и проведение

Как определить тип программно в коде 1С

Во встроенном языке тип объекта метаданных определяется через объект «Метаданные». Для ссылки на объект достаточно одной проверки, которая возвращает вид объекта.

bsl
Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Номенклатура") Тогда
    // это справочник
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
    // это документ
КонецЕсли;

// универсальный вариант через метаданные
ВидОбъекта = Ссылка.Метаданные().Имя;
Родитель = Ссылка.Метаданные().Родитель().Имя; // "Справочники" или "Документы"
Если Метаданные.Справочники.Содержит(Ссылка.Метаданные()) Тогда
    // справочник
КонецЕсли;

Метод Метаданные.Справочники.Содержит() и аналогичный Метаданные.Документы.Содержит() — самый универсальный способ: он работает для любой ссылки, включая объекты расширений. Проверка через ТипЗнч() подходит, когда нужно сравнить с конкретным видом объекта.

Для запросов ситуация проще: тип таблицы виден прямо в имени — Справочник.Номенклатура или Документ.РеализацияТоваровУслуг. Если вы строите запрос и не уверены в типе источника, конструктор запроса показывает таблицы сгруппированными по веткам метаданных.

Как выбрать: создавать справочник или документ

При проектировании доработки выбор типа объекта определяется ответом на один вопрос: храним ли мы сущность или событие? Если данные описывают объект, который существует постоянно (новый вид оборудования, тип договора, причина обращения) — нужен справочник. Если данные описывают акт, совершённый в конкретный момент (выдача оборудования, согласование договора, регистрация обращения) — нужен документ.

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

Маршрут решения

Как выбрать тип объекта

Данные — постоянная сущность, используемая в других объектахСоздавайте справочник
Данные — событие с датой, влияющее на учётСоздавайте документ с движениями по регистрам
Событие есть, но остатки и проводки не нужныДокумент без движений либо периодический регистр сведений
Нужна история изменений значения во времениПериодический регистр сведений, а не справочник

Типичные ошибки при определении и работе с типами

Самая частая ошибка пользователей — поиск «документа» там, где хранится справочник. Например, карточку договора в типовых конфигурациях часто реализуют как элемент справочника «Договоры контрагентов», а не как документ. Попытка найти её в журнале документов бесполезна.

Вторая ошибка — путать документ и его движения. Удаление или распроведение документа меняет учёт, а удаление элемента справочника — нет, но может «сломать» ссылки в документах, где этот элемент использовался. Перед удалением элемента справочника проверяйте наличие ссылок на него через сервис поиска ссылок на объект.

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

Типичные ошибки
01
Искать карточку договора или единицы измерения среди документов — они обычно являются элементами справочников
02
Удалять элемент справочника без проверки ссылок — в документах останутся битые ссылки вида «Объект не найден»
03
Хранить цены и статусы в реквизитах справочника — теряется история изменений
04
Пытаться «провести» справочник — у справочников нет проведения, изменения в учёт они не вносят

Как проверить результат и убедиться в правильности определения

После того как вы определили тип объекта, проверьте вывод на практике. Для документа откройте отчёт по движениям (в типовых конфигурациях: Ещё → Отчёты → Движения документа) — если движения есть, тип определён верно. Для справочника проверьте, что объект доступен для выбора в полях других объектов и не имеет даты операции.

При программной проверке убедитесь, что метод Метаданные.Справочники.Содержит() или Метаданные.Документы.Содержит() возвращает «Истина» ровно для одной ветки. Объект не может быть одновременно справочником и документом — это исключает двойную трактовку.

Контрольные точки

Как проверить результат

Наличие кнопки «Провести» и даты
Норма

Есть у документа, нет у справочника

Тревожный признак

Кнопка есть, но движений нет — проверьте настройки проведения в конфигураторе

Отчёт по движениям документа
Норма

Показывает записи в регистрах

Тревожный признак

Отчёт пуст при проведённом документе — движения не настроены

Программная проверка через Метаданные
Норма

Содержит() возвращает Истина для одной ветки

Тревожный признак

Ошибка «Метаданные не найдены» — передана не ссылка, а, например, строка

Часто задаваемые вопросы

Может ли справочник делать движения по регистрам?

Нет. Движения по регистрам формируют только объекты, поддерживающие проведение, — прежде всего документы. Справочник может лишь служить измерением или аналитикой в записях регистров, но сам записей не создаёт.

Почему договор в 1С — справочник, а не документ?

Потому что договор — это долгоживущая сущность, на которую ссылаются множество событий (поступления, реализации, платежи). Факт заключения договора как событие в типовом учёте обычно не фиксируется отдельным документом, поэтому карточка договора хранится в справочнике.

Как понять тип объекта, если видно только его название в ошибке?

Найдите имя через глобальный поиск в конфигураторе (Ctrl+Shift+F): найденный объект будет расположен в ветке «Справочники» или «Документы». Если конфигуратор недоступен, поищите объект в меню «Все функции» в режиме предприятия — там объекты сгруппированы по типам.

Чем документ отличается от регистра сведений?

Документ — это событие, которое проводится и делает движения. Регистр сведений — это таблица значений, которая хранит данные в разрезе измерений и (для периодических) времени. Документ создаёт записи в регистрах, регистр сам по себе событий не фиксирует.

Можно ли превратить справочник в документ в готовой конфигурации?

Напрямую — нет, тип объекта метаданных изменить нельзя. Нужно создать новый объект нужного типа и перенести данные обработкой конвертации. В типовых конфигурациях такие изменения делать не рекомендуется: они нарушат логику обновления и обменов.

Как быстро определить тип ссылки в отладчике?

Вычислите выражение ТипЗнч(Ссылка) — отладчик покажет строку вида «СправочникСсылка.Номенклатура» или «ДокументСсылка.ПриходныйОрдер». По первому слову тип определяется однозначно.

Итог

Что важно запомнить

Справочник хранит постоянные сущности и не проводится, документ фиксирует событие с датой и делает движения по регистрам. Определить тип можно по кнопке «Провести» и полю даты в интерфейсе, по ветке метаданных в конфигураторе или через Метаданные.Справочники.Содержит() в коде. Перед удалением любых объектов делайте резервную копию и проверяйте ссылки.