Разработка и Конфигурация · 8 мин
1С 8: как определить, справочник или документ перед вами
Как в 1С 8 определить тип объекта — справочник или документ: через метаданные, запросы, функции встроенного языка и по внешним признакам в интерфейсе.
В 1С:Предприятии 8 объекты конфигурации делятся на виды: справочники, документы, перечисления, регистры и другие. На практике чаще всего нужно отличить справочник от документа — при написании универсальных обработок, при разборе чужого кода, при работе с ссылкой неизвестного типа или когда пользователь прислал «какой-то объект» без пояснений.
Определить вид объекта можно несколькими способами: визуально в интерфейсе, через конфигуратор, программно через метаданные, по структуре ссылки или запросом. Выбор способа зависит от того, где вы находитесь — в режиме предприятия, в конфигураторе или внутри программного кода.
Визуальные признаки в режиме предприятия
Быстрее всего отличить справочник от документа по внешнему виду формы. Документ всегда имеет номер и дату — эти поля присутствуют в шапке формы и в списке. Справочник в типовом виде имеет код и наименование, номера и даты у него нет.
Второй признак — кнопки проведения. У документа в командной панели есть кнопки «Провести», «Провести и закрыть», а в списке — пиктограммы состояния проведения (проведён, не проведён, помечен на удаление). У справочника таких кнопок нет: он просто записывается.
Третий признак — поведение в учёте. Документ создаёт движения по регистрам и меняет остатки или обороты, справочник только хранит нормативно-справочную информацию: контрагенты, номенклатура, склады, договоры. Если объект можно выбрать в поле ввода другого документа как реквизит — почти наверняка это справочник.
Поля «Номер» и «Дата» в шапке — признак документа
Кнопки «Провести» и пиктограммы проведения в списке
Стандартные реквизиты справочника без даты
Кнопка «Движения документа» и связанные регистры
Определение вида объекта в конфигураторе
Если есть доступ к конфигуратору, откройте дерево конфигурации: ветки «Справочники» и «Документы» разделены, и найти нужный объект можно по имени через поиск (Ctrl+F или Ctrl+Shift+F для глобального поиска). Двойной клик по объекту открывает палитру свойств, где видно его принадлежность.
Если известно только представление объекта, которое видит пользователь (например, «Реализация товаров и услуг»), а имя в конфигурации может отличаться, ищите по синониму. В дереве конфигурации включите отображение синонимов или воспользуйтесь поиском по всем текстам конфигурации.
Дополнительно в палитре свойств документа видна вкладка «Движения» со списком регистров, а у справочника — вкладки «Иерархия», «Владельцы», «Нумерация». Уже по набору вкладок палитры свойств можно понять вид объекта, даже не глядя в дерево.
Программное определение через метаданные
Универсальный способ в коде — получить объект метаданных по ссылке и проверить его родителя. Это работает для любой ссылки, тип которой заранее неизвестен:
МетаОбъект = Ссылка.Метаданные();
Если Метаданные.Справочники.Содержит(МетаОбъект) Тогда
// это справочник
ИначеЕсли Метаданные.Документы.Содержит(МетаОбъект) Тогда
// это документ
КонецЕсли;
Альтернатива — определить вид по имени родителя метаданных: МетаОбъект.Родитель().Имя вернёт строку «Справочники» или «Документы». Также можно получить полное имя: МетаОбъект.ПолноеИмя() вернёт, например, «Справочник.Номенклатура» или «Документ.РеализацияТоваровУслуг» — первое слово до точки и есть вид объекта.
ПолноеИмя = Ссылка.Метаданные().ПолноеИмя();
ВидОбъекта = СтрРазделить(ПолноеИмя, ".")[0]; // "Справочник" или "Документ"Если нужно проверить тип без обращения к метаданным, используйте ТипЗнч и сравнение с конкретным типом: ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг"). Этот способ быстрее, но требует знать конкретный тип заранее и не подходит для универсальных проверок «справочник или документ вообще».
Определение вида в запросе
В языке запросов вид ссылочного поля проверяется операторами ССЫЛКА и ВЫРАЗИТЬ. Конструкция ГДЕ Поле ССЫЛКА Справочник.Номенклатура отбирает записи, где поле содержит ссылку на справочник. Аналогично Поле ССЫЛКА Документ.РеализацияТоваровУслуг — на документ.
Для составных типов (когда поле может хранить ссылки разных видов) проверка через ССЫЛКА — единственный корректный способ разделить записи по видам прямо в запросе, без постобработки. Функция ТИПЗНАЧЕНИЯ в запросе позволяет сравнить тип поля с конкретным типом, но работает менее наглядно.
Учтите ограничение: запрос проверяет тип значения поля, а не «вид объекта вообще». Если поле необязательное и пустое, проверка ССЫЛКА вернёт ложь даже при подходящем типе — пустые ссылки разных видов различаются, и это иногда становится источником ошибок в отборах.
Определение по строковому представлению и навигационной ссылке
Иногда объект доступен только как строка — например, из журнала регистрации, обмена или внешнего источника. Навигационная ссылка вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=... прямо содержит вид объекта после «data/». Аналогично полное имя метаданных в XML-выгрузках начинается со слова «Справочник» или «Документ».
По представлению ссылки тоже можно сделать вывод: документ обычно представляется как «Реализация товаров и услуг 0000-000123 от 15.03.2026», то есть содержит номер и дату. Справочник представляется наименованием без даты. Это эвристика, а не гарантия — представление может быть переопределено в модуле менеджера объекта.
Типичные ошибки и ограничения
Отдельная ловушка — внешние источники данных и COM-соединения. При работе через COM типы объектов другой базы не совпадают с типами текущей, и ТипЗнч там неприменим. Определяйте вид через метаданные той базы или по полному имени объекта.
Ещё одно ограничение: у пользователя может не быть прав на просмотр объекта. В этом случае обращение к метаданным в привилегированном режиме сработает, а в обычном — может вызвать ошибку доступа. Для универсальных обработок предусмотрите обработку исключений.
Как выбрать способ
Что важно запомнить
Документ отличается номером, датой и проведением, справочник — кодом и наименованием. В коде вид объекта надёжно определяется через метаданные, в запросе — оператором ССЫЛКА. Проверки по строковому представлению ненадёжны.
Частые вопросы
Можно ли определить вид объекта, не открывая его форму?
Да. Наведите курсор на ссылку в списке или журнале — всплывающая подсказка и навигационная ссылка в строке состояния содержат полное имя вида «Справочник.Имя» или «Документ.Имя». Также видно по наличию номера и даты в представлении.
Чем отличается проверка через ТипЗнч от проверки через метаданные?
ТипЗнч сравнивает с конкретным типом и подходит, когда тип известен заранее — так быстрее. Метаданные позволяют определить вид любого неизвестного объекта и получить его имя, но вызов чуть тяжелее. Для универсальных обработок используйте метаданные.
Почему проверка ССЫЛКА в запросе возвращает ложь для подходящего поля?
Чаще всего поле содержит пустую ссылку другого вида или NULL из соединения таблиц. Проверьте, заполнено ли поле, и при необходимости добавьте условие на NULL отдельно.
Как определить вид объекта при работе через COM-соединение?
ТипЗнч текущей базы не сработает для объектов внешней базы. Получите метаданные через объектное представление внешнего соединения (Метаданные() у ссылки) и возвращайте в свою базу строковое полное имя вида «Документ.ИмяОбъекта».
Может ли справочник иметь дату и номер как документ?
У справочника могут быть произвольные реквизиты типа «Дата» и «Число», но стандартных свойств «Номер» и «Дата» с автонумерацией и периодичностью, как у документа, у него нет. Проведения и движений по регистрам у справочника тоже не бывает.
Как программно получить список всех документов конфигурации?
Переберите коллекцию Метаданные.Документы в цикле — каждый элемент даст имя, синоним и полное имя документа. Аналогично Метаданные.Справочники вернёт все справочники. Это удобно для построения универсальных диалогов выбора объекта.