В 1С:Предприятие представление ссылки — это текстовое отображение объекта метаданных (справочника, документа, плана обмена и др.), которое пользователь видит в интерфейсе программы. Корректная настройка представлений упрощает работу с системой, делает её интуитивно понятной и снижает риск ошибок при выборе данных. Например, вместо неудобочитаемого идентификатора Справочник.Контрагенты.12345 пользователь увидит осмысленное название — "ООО 'Ромашка', ИНН 1234567890".

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

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

Что такое представление ссылки в 1С и зачем оно нужно

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

  • 📌 В полях ввода (например, при выборе контрагента в документе)
  • 📊 В отчётах и печатных формах (для читаемого отображения данных)
  • 🔍 В журналах документов и справочников (для быстрого поиска)
  • 🔗 При обмене данными между базами (для сопоставления объектов)

Без настроенного представления система показывает пользователю технические идентификаторы, что усложняет работу. Например, в справочнике Номенклатура вместо названия товара может отображаться Справочник.Номенклатура.000000001. Это не только неудобно, но и чревато ошибками: оператор может перепутать позиции при выборе.

В есть два основных типа представлений:

  1. Стандартное представление — формируется автоматически по шаблону, заданному в метаданных (например, для справочника Контрагенты это может быть "[Наименование], ИНН [ИНН]").
  2. Пользовательское представление — создаётся программистом с помощью кода на встроенном языке. Позволяет гибко настраивать отображение в зависимости от условий (например, подсвечивать просроченные документы красным).
📊 Как часто вы настраиваете представления ссылок в 1С?
Никогда не настраивал
Только стандартные шаблоны
Пишу кастомные представления
Использую внешние обработки

Стандартные способы настройки представлений в конфигураторе

Наиболее простой способ задать представление — использовать встроенные механизмы конфигуратора. Это не требует знания программирования и подходит для большинства типовых задач. Рассмотрим пошаговую инструкцию на примере справочника Контрагенты.

Откройте конфигуратор в режиме 1С:Предприятие и выполните следующие действия:

  1. Перейдите в ветку метаданных Справочники → Контрагенты.
  2. В палитре свойств справочника найдите поле Представление объекта.
  3. Нажмите на кнопку ... рядом с полем, чтобы открыть редактор шаблона.
  4. Сформируйте шаблон, используя доступные реквизиты (например, [Наименование] ([ИНН])).
  5. Сохраните изменения и обновите конфигурацию базы данных.

Для документов процесс аналогичен, но шаблон представления может включать дополнительные параметры, такие как номер и дата. Например, для документа РеализацияТоваровУслуг стандартное представление может выглядеть так: "[Номер] от [Дата]".

Сохранён шаблон в метаданных|Обновлена конфигурация базы|Проверено отображение в пользовательском режиме|Тестируется на разных объектах (справочники, документы)-->

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

#Если Не ПустаяСтрока(ИНН) Тогда

[Наименование] ([ИНН])

Иначе

[Наименование]

КонецЕсли;

Программное формирование представлений: когда без кода не обойтись

Стандартные шаблоны подходят не для всех задач. Например, если нужно:

  • 🔄 Динамически менять представление в зависимости от статуса документа (например, подсвечивать просроченные красным).
  • 📎 Добавлять в представление данные из связанных справочников (например, показать менеджера контрагента).
  • 🔢 Форматировать числовые значения (например, отображать остаток товара с округлением).

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

Добавьте в модуль объекта справочника следующий код:

Процедура ПредставлениеСсылки(Представление, Ссылка) Экспорт

Если Ссылка.ЭтоГруппа Тогда

Представление.Добавить(Ссылка.Наименование, Новый ПараметрыФорматированияСтроки(Истина, Ложь, ЦветТекста.Синий));

Иначе

Артикул = Ссылка.Артикул;

Остаток = ПолучитьОстатокНаСкладе(Ссылка);

Представление.Добавить(Ссылка.Наименование + " (" + Артикул + ")", Новый ПараметрыФорматированияСтроки(Истина));

Представление.Добавить("Остаток: " + Формат(Остаток, "ЧДЦ=2"), Новый ПараметрыФорматированияСтроки(Ложь, , ЦветТекста.Серый));

КонецЕсли;

КонецПроцедуры

Функция ПолучитьОстатокНаСкладе(Ссылка)

// Логика получения остатка (например, запрос к регистру накопления)

Возврат 100; // Пример: возвращаем фиксированное значение

КонецФункции

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

Типичные ошибки и как их избежать

Неправильная настройка представлений может привести к потере производительности, некорректному отображению данных или даже ошибкам при обмене. Рассмотрим самые распространённые проблемы и способы их решения.

Ошибка Причина Решение
Пустые скобки в представлении В шаблоне используются реквизиты, которые не заполнены (например, [Наименование] ([ИНН]), но ИНН пустой). Добавьте проверку на пустоту: #Если Не ПустаяСтрока(ИНН) Тогда ...
Медленная работа интерфейса В программном представлении выполняются тяжёлые запросы или циклы. Оптимизируйте код: используйте кэш, сократите количество обращений к базе.
Неактуальные данные в представлении Представление формируется на основе устаревших реквизитов (например, остаток товара не обновляется). Используйте события ПриИзменении для пересчёта представления или обновляйте его по таймеру.
Ошибки при обмене данными Представления в разных базах формируются по-разному, что приводит к конфликтам. Стандартизируйте шаблоны представлений для обмениваемых объектов.

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

⚠️ Внимание: При изменении шаблонов представлений в работающей базе обязательно протестируйте их на копии! Некоторые изменения могут привести к ошибкам в существующих отчётах или обработках, где используются старые форматы представлений.

Оптимизация представлений для больших баз данных

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

Чтобы избежать проблем, следуйте рекомендациям:

  • 🚀 Минимизируйте количество реквизитов в шаблоне. Используйте только те, которые действительно нужны пользователю.
  • 🔄 Кэшируйте данные. Например, остатки товаров можно обновлять раз в час, а не при каждом обращении.
  • 📉 Избегайте сложных вычислений в представлениях. Перенесите их в фоновые задачи или отчёты.
  • 🛠 Используйте индексы для реквизитов, которые участвуют в формировании представлений.

Пример оптимизированного кода для представления документа с кэшированием:

Перем мКэшСуммДокументов; // Объявляем кэш на уровне модуля

Процедура ПредставлениеСсылки(Представление, Ссылка) Экспорт

Если мКэшСуммДокументов = Неопределено Тогда

мКэшСуммДокументов = Новый Соответствие;

КонецЕсли;

Если Не мКэшСуммДокументов.Содержит(Ссылка.УникальныйИдентификатор) Тогда

Сумма = ПолучитьСуммуДокумента(Ссылка); // Функция с запросом к базе

мКэшСуммДокументов.Вставить(Ссылка.УникальныйИдентификатор, Сумма);

Иначе

Сумма = мКэшСуммДокументов[Ссылка.УникальныйИдентификатор];

КонецЕсли;

Представление.Добавить(Ссылка.Номер + " от " + Формат(Ссылка.Дата, "ДФ=dd.MM.yyyy") + " (" + Формат(Сумма, "ЧДЦ=2") + ")");

КонецПроцедуры

💡

Для справочников с иерархией (например, номенклатура) используйте свойство ПолноеНаименование в шаблоне представления. Это позволит отображать полный путь к элементу (например, "Электроника → Телефоны → iPhone 15"), что упрощает навигацию.

Представления ссылок в обмене данными и интеграциях

При настройке обмена между базами или интеграции с внешними системами (например, 1С-Битрикс, CRM) представления ссылок играют ключевую роль. Они используются для:

  • 🔄 Сопоставления объектов (например, поиск контрагента по наименованию и ИНН).
  • 📋 Логирования операций (в протоколах обмена отображаются понятные названия, а не ID).
  • 🔍 Поиска дублей (например, при загрузке номенклатуры из Excel).

Основная проблема при обмене — расхождение шаблонов представлений в разных базах. Например, в одной базе контрагент отображается как "ООО 'Ромашка' (ИНН 1234567890)", а в другой — как "1234567890 | ООО Ромашка". Это приводит к тому, что система не может автоматически сопоставить объекты.

Чтобы избежать ошибок:

  1. Стандартизируйте шаблоны представлений для обмениваемых объектов (например, используйте формат "[ИНН] [Наименование]").
  2. В правилах обмена настройте преобразование представлений (например, с помощью функции ТекстовыеФункцииКлиентСервер.ПолучитьПредставление()).
  3. Для критичных объектов (например, контрагентов) добавьте дополнительные реквизиты для сопоставления (например, КодКонтрагентаВERP).
⚠️ Внимание: При настройке обмена через Универсальный формат (EnterpriseData) представления ссылок могут игнорироваться. В этом случае используйте явное сопоставление по уникальным идентификаторам или кодам.
Как проверить представление ссылки в отладочном режиме?

Чтобы увидеть, как формируется представление ссылки для конкретного объекта, выполните следующие действия:

1. Откройте конфигуратор в режиме 1С:Предприятие.

2. Перейдите в меню Отладка → Начать отладку.

3. В пользовательском режиме найдите нужный объект (например, документ или элемент справочника).

4. В отладочном окне введите команду:

Представление = Новый ПредставлениеСсылки(СсылкаНаОбъект);

Сообщить(Представление.ПолучитьПредставление());

5. Нажмите F5, чтобы выполнить код и увидеть результат.

Примеры кода для типовых задач

Рассмотрим готовые решения для распространённых сценариев, которые можно адаптировать под свои задачи.

1. Подсветка просроченных документов

Добавьте в модуль объекта документа (например, ЗаказПокупателя):

Процедура ПредставлениеСсылки(Представление, Ссылка) Экспорт

Текст = Ссылка.Номер + " от " + Формат(Ссылка.Дата, "ДФ=dd.MM.yyyy");

Если Ссылка.Дата + 30 < ТекущаяДата() Тогда

Представление.Добавить(Текст, Новый ПараметрыФорматированияСтроки(Истина, , ЦветТекста.Красный));

Иначе

Представление.Добавить(Текст);

КонецЕсли;

КонецПроцедуры

2. Динамическое представление в зависимости от статуса

Для справочника Контрагенты, где нужно отображать статус (активен/неактивен):

Процедура ПредставлениеСсылки(Представление, Ссылка) Экспорт

Текст = Ссылка.Наименование;

Если Не Ссылка.Активен Тогда

Текст = Текст + " (НЕАКТИВЕН)";

Представление.Добавить(Текст, Новый ПараметрыФорматированияСтроки(Истина, , ЦветТекста.Серый));

Иначе

Представление.Добавить(Текст);

КонецЕсли;

КонецПроцедуры

3. Представление с данными из связанного справочника

Для документа РеализацияТоваровУслуг, где нужно показать менеджера контрагента:

Процедура ПредставлениеСсылки(Представление, Ссылка) Экспорт

Текст = Ссылка.Номер + " от " + Формат(Ссылка.Дата, "ДФ=dd.MM.yyyy") + " (" + Ссылка.Контрагент.Наименование + ")";

Если Ссылка.Контрагент.Менеджер.Ссылка.ЭтоОбъект() Тогда

Текст = Текст + " [Менеджер: " + Ссылка.Контрагент.Менеджер.Наименование + "]";

КонецЕсли;

Представление.Добавить(Текст);

КонецПроцедуры

💡

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

FAQ: Ответы на частые вопросы

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

Используйте метод Добавить() объекта ПредставлениеСсылки несколько раз. Каждый вызов добавляет новую строку. Пример:

Процедура ПредставлениеСсылки(Представление, Ссылка) Экспорт

Представление.Добавить(Ссылка.Наименование, Новый ПараметрыФорматированияСтроки(Истина));

Представление.Добавить("ИНН: " + Ссылка.ИНН, Новый ПараметрыФорматированияСтроки(Ложь, , ЦветТекста.Серый));

КонецПроцедуры

В результате представление будет отображаться в две строки с разным форматированием.

Почему представление не обновляется после изменения кода?

Возможные причины:

  1. Не обновлена конфигурация базы данных (забыли нажать Обновить конфигурацию в конфигураторе).
  2. Кэширование представлений (попробуйте перезапустить клиентское приложение или очистить кэш).
  3. Ошибки в коде (проверьте синтаксис и логику в отладчике).

Для принудительного обновления представлений используйте метод ОчиститьКэшПредставлений():

МенеджерВременныхДанных.ОчиститьКэшПредставлений();
Можно ли использовать HTML-разметку в представлениях?

Нет, в стандартных представлениях HTML не поддерживается. Однако можно:

  • Использовать форматирование текста (жирный, цветной, курсив) через ПараметрыФорматированияСтроки.
  • Для сложного оформления (например, иконки статусов) создавать кастомные элементы управления в формах.

Пример форматирования:

Представление.Добавить("Срочно!", Новый ПараметрыФорматированияСтроки(Истина, , ЦветТекста.Красный, Шрифт.Жирный));
Как сделать представление ссылки кликабельным?

Представление само по себе не является гиперссылкой, но вы можете:

  1. В формах использовать поле ПолеHTMLДокумента с кастомной разметкой.
  2. Настроить обработчик события ПриАктивизацииСтроки в журналах документов, чтобы открывать объект по двойному клику.
  3. В отчётах добавлять колонку с гиперссылками через функцию Гиперссылка().

Пример для отчёта:

Выборка.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("Строка"));

Выборка.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

Для Каждого Строка Из РезультатЗапроса Цикл

Представление = Новый ПредставлениеСсылки(Строка.Ссылка).ПолучитьПредставление();

Выборка.Добавить();

Выборка.Ссылка = Гиперссылка(Строка.Ссылка.УникальныйИдентификатор, Представление);

Выборка.Представление = Представление;

КонецЦикла;

Как экспортировать представления ссылок в Excel?

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

  1. Библиотеку OneScript.Excel для тонкой настройки стилей.
  2. Выгрузку через ТабличныйДокумент с предварительным применением форматирования:
ТабДок = Новый ТабличныйДокумент;

Для Каждого Строка Из Данные Цикл

Представление = Новый ПредставлениеСсылки(Строка.Ссылка);

Текст = Представление.ПолучитьПредставление();

Область = ТабДок.Область(ТабДок.ВысотаТаблицы + 1, 1);

Область.Текст = Текст;

Если Представление.ЦветТекста <> Неопределено Тогда

Область.ЦветТекста = Представление.ЦветТекста;

КонецЕсли;

КонецЦикла;