В работе с 1С:Предприятие часто возникает задача определить, к какому именно объекту метаданных относится та или иная ссылка. Это может быть критично при отладке кода, анализе данных или интеграции систем. Например, вы получаете ссылку из внешнего источника или видите её в отчёте, но не понимаете — это Документ, Справочник или другой объект конфигурации. Без точного определения типа дальнейшая работа с данными становится невозможной.
Проблема усложняется тем, что в разных версиях платформы 1С 8.3 и 1С 8.2 способы получения этой информации могут отличаться. К тому же, не все пользователи имеют доступ к конфигуратору или умеют писать запросы на встроенном языке. В этой статье мы разберём 5 универсальных методов, которые помогут определить тип ссылки даже без глубоких знаний программирования — от визуального анализа до написания коротких скриптов.
Особое внимание уделим распространённой ошибке новичков: попытке определить тип ссылки через её строковое представление (например, по префиксу"Документ.РеализацияТоваровУслуг"). Этот метод работает не всегда, так как формат отображения зависит от настроек конфигурации и может быть изменён разработчиком.
1. Визуальный анализ ссылки в пользовательском режиме
Самый простой способ — воспользоваться встроенными возможностями интерфейса 1С:Предприятие. Он не требует прав доступа к конфигуратору и подходит для большинства типичных задач.
Если ссылка отображается в форме документа, отчёта или обработки, выполните следующие действия:
- 🔍 Наведите курсор на поле со ссылкой (например, в табличной части документа или реквизите справочника). Во многих конфигурациях при этом появится подсказка с полным именем объекта.
- 📋 Нажмите правой кнопкой мыши на ссылку и выберите пункт
Копировать. Затем вставьте данные в текстовый редактор. Часто в буфер копируется не только отображение, но иУникальныйИдентификатор (UID)объекта, по которому можно определить тип. - 🔗 Если ссылка кликабельная, откройте её двойным щелчком. Обратите внимание на заголовок открывшейся формы — там обычно указывается тип объекта (например,"Документ'Поступление товаров №123 от 01.01.2023'").
Этот метод работает в 1С:Бухгалтерия 3.0, 1С:Управление торговлей 11, 1С:Зарплата и управление персоналом 3.1 и других типовых конфигурациях. Однако в некоторых случаях (например, при кастомизированных формах) подсказки могут быть отключены.
Если подсказка не появляется, попробуйте включить её в настройках интерфейса: Сервис → Параметры → Внешний вид → Показывать подсказки
2. Использование функции"ТипЗнч" в отладчике
Для пользователей, имеющих доступ к конфигуратору или отладчику в режиме предприятия, самый надёжный способ — использовать встроенную функцию ТипЗнч. Она возвращает полное описание типа значения, включая имя объекта метаданных.
Как это сделать:
- Откройте
Отладчик(клавишаF5или через менюСервис → Отладка). - В поле
Выражениевведите:ТипЗнч(ВашаСсылка)где
ВашаСсылка— переменная или реквизит, содержащий анализируемую ссылку. - Нажмите
Вычислить(илиShift+Enter).
Результат будет выглядеть примерно так:
СправочникСсылка.Номенклатура
или
ДокументСсылка.РеализацияТоваровУслуг
Это 100% точный способ, так как функция ТипЗнч работает на уровне платформы и не зависит от настроек отображения. Однако он требует хотя бы минимальных навыков работы с отладчиком.
Что делать, если отладчик заблокирован?
Если у вас нет прав на использование отладчика, попробуйте альтернативный метод:
1. Создайте внешнюю обработку с кнопкой, которая выводит ТипЗнч в сообщение.
2. Передайте в неё анализируемую ссылку через параметр.
3. Запустите обработку в пользовательском режиме.
3. Анализ через запрос (для опытных пользователей)
Если ссылка хранится в базе данных, её тип можно определить с помощью запроса на встроенном языке. Этот метод полезен, когда нужно массово проанализировать данные (например, в отчёте или при выгрузке).
Пример запроса для определения типа ссылок в таблице:
ВЫБРАТЬ
Ссылка КАК Ссылка,
ВЫРАЗИТЬ(Ссылка КАК Строка) КАК СтроковоеПредставление,
ТИП(Ссылка) КАК ТипСсылки
ИЗ
ВашаТаблица
Где ВашаТаблица — имя таблицы, содержащей ссылки. Поле ТипСсылки вернёт значение типа СправочникСсылка.ИмяОбъекта или ДокументСсылка.ИмяОбъекта.
Для более детального анализа можно использовать функцию МЕТАДАННЫЕ:
ВЫБРАТЬ
МЕТАДАННЫЕ(Ссылка).Имя КАК ИмяОбъекта,
МЕТАДАННЫЕ(Ссылка).Тип КАК ТипОбъекта
ИЗ
ВашаТаблица
4. Программное определение типа через встроенный язык
Для разработчиков и администраторов, которые могут выполнять код в 1С:Предприятие, доступны дополнительные методы. Рассмотрим два наиболее универсальных подхода.
Метод 1: Использование функции"Метаданные"
Функция Метаданные позволяет получить полную информацию об объекте, включая его тип:
Процедура ОпределитьТипСсылки(Ссылка)
Если ТипЗнч(Ссылка) = Тип("СправочникСсылка") Тогда
Сообщить("Это справочник:" + Метаданные.Справочники.НайтиПоИмени(Ссылка.Метаданные.Имя).Синоним);
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка") Тогда
Сообщить("Это документ:" + Метаданные.Документы.НайтиПоИмени(Ссылка.Метаданные.Имя).Синоним);
КонецЕсли;
КонецПроцедуры
Метод 2: Проверка через конструкцию"Тип"
Можно явно проверять принадлежность ссылки к тому или иному типу:
Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Контрагенты") Тогда
Сообщить("Ссылка на справочник'Контрагенты'");
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
Сообщить("Ссылка на документ'Заказ покупателя'");
КонецЕсли;
Эти методы особенно полезны при написании обработок или отчётов, где требуется динамическая обработка разных типов ссылок.
1. Убедиться, что ссылка не равна Неопределено
2. Использовать ТипЗнч для получения базового типа
3. Применить Метаданные для детальной информации
4. Обработать возможные исключения (например, если объект удалён)
-->
5. Определение типа по UID (уникальному идентификатору)
Каждый объект в 1С:Предприятие имеет уникальный идентификатор (UID), который можно использовать для определения типа ссылки. Этот метод полезен при работе с обменом данными или выгрузкой/загрузкой информацией.
UID ссылки можно получить так:
UID = Ссылка.УникальныйИдентификатор;
Далее по UID можно найти объект в метаданных:
ОбъектМетаданных = Метаданные.НайтиПоUID(UID);
Если ОбъектМетаданных <> Неопределено Тогда
Сообщить("Тип объекта:" + ОбъектМетаданных.ТипОписания +", Имя:" + ОбъектМетаданных.Имя);
КонецЕсли;
Этот способ надёжен, так как UID не изменяется при переносе данных между базами или обновлении конфигурации. Однако он требует прав на чтение метаданных.
UID — единственный надёжный способ идентификации объекта при обмене данными между разными базами 1С, так как он не зависит от имен и синонимов.
Таблица соответствия типов ссылок и их представлений
Для удобства приведем сводную таблицу, которая поможет быстро сориентироваться в типах ссылок и их строковых представлениях в разных конфигурациях.
| Тип ссылки (в коде) | Пример строкового представления | Где встречается | Особенности |
|---|---|---|---|
СправочникСсылка.Номенклатура |
"Товар'Монитор 24''' (000000001)" | Справочники товаров, услуг, контрагентов | Может иметь иерархию (группы/элементы) |
ДокументСсылка.РеализацияТоваровУслуг |
"Реализация №РТ-000123 от 15.05.2023" | Документы продаж, поступлений, движения денег | Всегда имеет дату и номер |
ПланСчетовСсылка.60 |
"60.01'Расчеты с поставщиками'" | Бухгалтерские счета | Часто используется в проводках |
ПланВидовХарактеристикСсылка.Номенклатура |
"Характеристика'Цвет: Черный'" | Дополнительные свойства товаров | Может быть привязана к справочнику |
ПостояннаяСсылка.НашаОрганизация |
"Организация'ООО Ромашка'" | Настройки программы, предопределённые элементы | Нельзя удалить через интерфейс |
Обратите внимание, что строковое представление может отличаться в разных конфигурациях (например, в 1С:Бухгалтерия и 1С:УТ формат отображения документов может быть разным). Поэтому для точного определения типа всегда лучше использовать программные методы.
Если вы работаете с 1С:ERP или 1С:КА 2.4, обратите внимание на префиксы ссылок — в этих конфигурациях они часто содержат аббревиатуры (например,"ЗП" для зарплатных документов).
Типичные ошибки и как их избежать
При определении типа ссылок пользователи часто сталкиваются сными проблемами. Рассмотрим самые распространённые из них и способы их решения.
⚠️ Внимание: Если вы получаете ошибку"Объект не найден (Ссылка)"при попытке определить тип, это может означать, что объект был удалён из базы, но ссылки на него ещё остались. В этом случае используйте метод сПопытка...Исключение:ПопыткаТип = ТипЗнч(Ссылка);
Исключение
Сообщить("Объект удалён или недоступен!");
КонецПопытки;
Другие частые ошибки:
- 🔄 Путаница между"ТипЗнч" и"Тип": Функция
Типв запросах возвращает строковое представление типа, аТипЗнч— объект типа. Не заменяйте их друг другом!- 📛 Игнорирование предопределённых данных: Ссылки на предопределённые элементы (например,
ПланСчетов.60) могут вести себя иначе, чем обычные. Проверяйте их черезЭтоПредопределенный.- 🔗 Работа с"пустыми" ссылками: Ссылка может быть не пустой (
Ссылка <> Неопределено), но при этом указывать на несуществующий объект. Всегда проверяйтеСсылка.Пустая.Если вы работаете с распределёнными информационными базами (РИБ), помните, что типы ссылок могут отличаться в разных узлах. В этом случае используйте
ПланыОбменадля корректного сопоставления объектов.⚠️ Внимание: В конфигурациях с включённым режимомУправляемое приложение(например, 1С:УТ 11 или 1С:ERP 2.4) некоторые методы работы с метаданными могут быть ограничены. Для доступа к полной информации потребуются права администратора.FAQ: Частые вопросы по определению типа ссылок в 1С
Как определить тип ссылки, если у меня нет прав на конфигуратор?
Используйте визуальный метод (подсказки при наведении) или попробуйте создать внешнюю обработку с кнопкой, которая выводит тип ссылки через
ТипЗнч. Для этого не нужны права на изменение конфигурации, только на запуск внешних обработок.Пример кода для обработки:
Процедура Команда1(Команда)Ссылка = Параметры.Ссылка; // Передайте ссылку через параметр
Сообщить(ТипЗнч(Ссылка));
КонецПроцедуры
Можно ли определить тип ссылки по её строковому представлению (например,"Документ.РеализацияТоваровУслуг №123")?
Технически можно, но это ненадёжный метод, так как:
- Формат отображения зависит от настроек конфигурации и может быть изменён.
- В разных языковых версиях (русской, английской, казахской) префиксы могут отличаться.
- Некоторые объекты (например, регистры сведений) могут не иметь очевидных префиксов.
Лучше использовать
ТипЗнчили анализ черезМетаданные.Как массово определить типы ссылок в таблице (например, в отчёте)?
Используйте запрос с функцией ТИП:
ВЫБРАТЬТИП(ВашаТаблица.Ссылка) КАК ТипСсылки,
СЧЕТ(*) КАК Количество
ИЗ
ВашаТаблица
СГРУППИРОВАТЬ ПО
ТИП(ВашаТаблица.Ссылка)
Это вернёт список всех типов ссылок, встречающихся в таблице, и их количество.
Что делать, если ТипЗнч возвращает"Неопределено"?
Это означает, что переменная не содержит ссылку. Проверьте:
- Является ли переменная действительно ссылочного типа (а не строка или число).
- Не равна ли она
НеопределеноилиNULL.- Если ссылка получена из внешнего источника (например, JSON или XML), убедитесь, что она корректно преобразована в тип
Ссылка.Пример проверки:
Если Ссылка = Неопределено ТогдаСообщить("Ссылка не инициализирована!");
ИначеЕсли НЕ ТипЗнч(Ссылка) = Тип("Ссылка") Тогда
Сообщить("Переменная не является ссылочным типом!");
КонецЕсли;
Как определить тип ссылки в мобильном приложении 1С?
В мобильной платформе 1С:Предприятие возможности ограничены, но можно:
- Использовать
ТипЗнчв скриптах на стороне сервера (если приложение работает через 1С:Enterprise).- Отправлять ссылки на сервер для анализа (через HTTP-сервисы или REST API).
- В некоторых конфигурациях (например, 1С:Мобильная торговля) типы ссылок отображаются в карточках объектов.
Для точного ответа уточните версию мобильной платформы и конфигурации.