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

Особенность работы со ссылками в заключается в том, что здесь нет универсального решения — метод зависит от того, куда именно вы хотите сослаться: на документ внутри базы, на элемент справочника, на внешний сайт или на отчёт. Мы рассмотрим каждый сценарий с практическими примерами, актуальными для последних версий платформы 8.3.20+ и популярных конфигураций (Управление торговлей 11, Бухгалтерия предприятия 3.0, Зарплата и управление персоналом 3.1).

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

1. Гиперссылки в текстах и комментариях

Самый простой способ добавить ссылку в — вставить её в текстовое поле документа, справочника или комментария. Платформа автоматически преобразует адреса в кликабельные гиперссылки, если они соответствуют стандартным форматам (http://, https://, ftp:// или mailto:).

Чтобы добавить такую ссылку:

  • 📝 Откройте документ или элемент справочника, где нужно разместить ссылку (например, поле Комментарий в заказе покупателя).
  • 🔗 Введите или вставьте полный URL-адрес (например, https://its.1c.ru/db/v8319doc).
  • 💾 Сохраните документ — текст автоматически станет кликабельной ссылкой.

Этот метод работает во всех конфигурациях на базе 1С:Предприятие 8.3, но имеет ограничения:

  • ❌ Не поддерживаются относительные пути (например, /catalog/item без домена).
  • ❌ Нельзя настроить отображение текста ссылки (вместо URL всегда будет виден сам адрес).
  • ❌ Ссылки не проверяются на корректность — если адрес содержит опечатку, пользователь увидит ошибку только при клике.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:Документооборот) гиперссылки в текстах могут блокироваться настройками безопасности. Если ссылка не становится кликабельной, проверьте права пользователя или параметры модуля Безопасность.

Для более гибкой работы с текстами и ссылками используйте поле типа HTMLДокумент (доступно в конфигураторе). Оно позволяет:

  • 🎨 Форматировать текст (жирный, курсив, списки).
  • 🔗 Вставлять ссылки с произвольным текстом (например, "Скачать инструкцию" вместо https://site.ru/instruction.pdf).
  • 📎 Добавлять изображения и таблицы.

2. Ссылки на документы и справочники через интерфейс

Чаще всего пользователям нужно сослаться не на внешний ресурс, а на объект внутри базы: документ, элемент справочника или отчёт. Для этого в предусмотрен механизм ссылочных полей. Рассмотрим, как им пользоваться на примере конфигурации Управление торговлей 11.

Допустим, вы хотите в документе Заказ покупателя добавить ссылку на связанный Договор контрагента. Для этого:

  1. Откройте документ Заказ покупателя на редактирование.
  2. Найдите реквизит, который должен хранить ссылку (например, Договор). Если такого реквизита нет, его нужно добавить в конфигураторе (тип данных — СправочникСсылка.ДоговорыКонтрагентов).
  3. Нажмите на кнопку выбора (три точки ...) рядом с полем.
  4. В открывшемся окне выберите нужный договор из справочника или создайте новый.

После сохранения в поле отобразится краткое наименование документа (например, Договор №123 от 01.01.2026), при клике на которое откроется сам договор. Этот метод работает для всех ссылочных типов данных:

  • 📄 ДокументСсылка — для ссылок на документы (накладные, акты, счета).
  • 🗃️ СправочникСсылка — для ссылок на элементы справочников (контрагенты, номенклатура, сотрудники).
  • 📊 ОтчетСсылка — для ссылок на отчёты (например, Оборотно-сальдовая ведомость).

Если в вашей конфигурации нет нужного реквизита для хранения ссылки, его можно добавить самостоятельно в режиме Конфигуратор. Для этого:

  1. Откройте конфигуратор (Файл → Конфигуратор).
  2. Найдите объект метаданных (например, документ ЗаказПокупателя).
  3. Добавьте новый реквизит с типом СправочникСсылка.ИмяСправочника или ДокументСсылка.ИмяДокумента.
  4. Сохраните конфигурацию и обновите базу данных.
⚠️ Внимание: Изменение конфигурации может привести к ошибкам, если не соблюдать правила поддержки. Перед редактированием сделайте резервную копию базы (Администрирование → Выгрузить информационную базу).
📊 Как часто вы работаете со ссылками в 1С?
Ежедневно
Несколько раз в неделю
Редко
Никогда

3. Программное создание ссылок на объекты

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

Базовый объект для работы со ссылками — это тип Ссылка. Он позволяет получать ссылки на любые объекты метаданных. Рассмотрим ключевые методы:

Метод Описание Пример использования
Ссылка.ПустаяСсылка() Создаёт пустую ссылку заданного типа
НоваяСсылка = Ссылка.ПустаяСсылка("Документ.ЗаказПокупателя");
Документы.ИмяДокумента.СоздатьСсылку() Создаёт ссылку на новый документ
СсылкаНаЗаказ = Документы.ЗаказПокупателя.СоздатьСсылку();
Справочники.ИмяСправочника.НайтиПоНаименованию() Ищет элемент справочника по наименованию
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");
Объект.Ссылка Получает ссылку на существующий объект
ТекущийДокумент = Документы.ЗаказПокупателя.ТекущийДокумент();

СсылкаНаДокумент = ТекущийДокумент.Ссылка;

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

Процедура ПриЗаписи(Отказ)

НомерДоговора = ЭтотОбъект.НомерДоговора;

СсылкаНаДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоНомеру(НомерДоговора);

Если Не СсылкаНаДоговор.Пустая() Тогда

ЭтотОбъект.Договор = СсылкаНаДоговор;

Иначе

Сообщить("Договор с номером " + НомерДоговора + " не найден!");

КонецЕсли;

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

Важные нюансы при работе со ссылками программно:

  • 🔍 Всегда проверяйте ссылку на пустоту с помощью метода .Пустая(), чтобы избежать ошибок.
  • 🔄 Для часто используемых ссылок (например, на справочник Организации) можно завести глобальные переменные.
  • 📌 При работе с большими объёмами данных используйте менеджеры объектов (Документы.ИмяДокумента, Справочники.ИмяСправочника) вместо прямого обращения к базе.

☑️ Проверка корректности ссылок в коде

Выполнено: 0 / 4

4. Ссылки на отчёты и обработки

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

Способ 1: Добавление команды в интерфейс

Если вам нужно разместить ссылку на отчёт в панели навигации или в форме документа, используйте механизм Командный интерфейс:

  1. Откройте конфигуратор и найдите нужную форму (например, форму документа ЗаказПокупателя).
  2. Перейдите на закладку Команды и добавьте новую команду.
  3. В свойствах команды укажите:
    • Имя: ОткрытьОборотноСальдовуюВедомость
    • Заголовок: Оборотно-сальдовая ведомость
    • Действие: ОткрытьФорму
    • Параметр: "Отчет.ОборотноСальдоваяВедомость.ФормаОтчета"
  • Разместите команду на панели формы или в меню Все действия.
  • Способ 2: Программный вызов отчёта

    Чтобы открыть отчёт из кода, используйте метод ОткрытьФорму():

    Процедура ОткрытьОборотноСальдовуюВедомость()
    

    ПараметрыФормы = Новый Структура();

    ПараметрыФормы.Вставить("Период", ТекущаяДата());

    ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость.ФормаОтчета", ПараметрыФормы);

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

    Для передачи параметров в отчёт (например, периода или организации) используйте структуру ПараметрыФормы. Пример с фильтром по организации:

    Процедура ОткрытьВедомостьПоОрганизации(Организация)
    

    Параметры = Новый Структура();

    Параметры.Вставить("Организация", Организация);

    Параметры.Вставить("ДатаНачала", НачалоМесяца(ТекущаяДата()));

    Параметры.Вставить("ДатаОкончания", КонецМесяца(ТекущаяДата()));

    ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость.ФормаОтчета", Параметры);

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

    Если отчёт требует сложных параметров (например, отбор по нескольким полям), можно использовать объект КомпоновкаДанных:

    Процедура ОткрытьОтчетСОтбором()
    

    Настройки = Отчеты.ОборотноСальдоваяВедомость.ПолучитьНастройкиПоУмолчанию();

    ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));

    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");

    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

    ЭлементОтбора.ПравоеЗначение = Справочники.Организации.НайтиПоНаименованию("ООО Альфа");

    ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость.ФормаОтчета", Настройки);

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

    ⚠️ Внимание: В некоторых конфигурациях (например, 1С:ERP) имена отчётов могут отличаться от стандартных. Чтобы узнать точное имя, откройте отчёт в режиме 1С:Предприятие, затем перейдите в Все функции → Отчёты и посмотрите свойства нужного отчёта.

    5. Ссылки на внешние ресурсы и файлы

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

    1. Открытие веб-страницы в браузере

    Чтобы открыть ссылку в браузере пользователя, используйте функцию ОткрытьЗначение():

    ОткрытьЗначение("https://its.1c.ru/db/v8319doc");

    Если нужно передать дополнительные параметры (например, для авторизации), используйте объект ИнтернетПрокси:

    Прокси = Новый ИнтернетПрокси("https://api.example.com/data?token=12345");
    

    Ответ = Прокси.Получить();

    2. Работа с файлами

    Для создания ссылок на файлы (например, прикреплённые к документу) используйте тип ХранилищеЗначения:

    // Сохранение файла в хранилище
    

    ДвоичныеДанные = Новый ДвоичныеДанные("C:\temp\contract.pdf");

    Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));

    // Получение ссылки на файл

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

    Чтобы открыть файл из в связанной программе (например, PDF в Adobe Reader), используйте:

    ПутьКФайлу = "C:\temp\contract.pdf";
    

    СистемаКоманд.Выполнить(ПутьКФайлу);

    3. Работа с API

    Для взаимодействия с внешними API в используются объекты HTTPСоединение и HTTPЗапрос:

    Соединение = Новый HTTPСоединение("api.example.com", 443,,, Новый ЗащищенноеСоединениеOpenSSL());
    

    Запрос = Новый HTTPЗапрос("/v1/data");

    Запрос.УстановитьЗаголовок("Authorization", "Bearer token123");

    Ответ = Соединение.Получить(Запрос);

    Данные = Ответ.ПолучитьТелоКакСтроку();

    При работе с внешними ресурсами учитывайте:

    • 🔒 Настройки прокси-сервера (если корпоративная сеть требует авторизации).
    • 🛡️ Ограничения безопасности (в некоторых конфигурациях внешние запросы блокируются).
    • ⏱️ Тайм-ауты (по умолчанию HTTPСоединение ожидает ответ 30 секунд).
    Как увеличить тайм-аут для HTTP-запросов?

    По умолчанию тайм-аут HTTP-запроса в 1С составляет 30 секунд. Чтобы изменить его, используйте метод УстановитьТаймаут():

    Соединение = Новый HTTPСоединение("api.example.com");
    

    Соединение.УстановитьТаймаут(60); // Увеличиваем тайм-аут до 60 секунд

    Это актуально для медленных API или при работе с большими объёмами данных.

    6. Динамические ссылки в отчётах и печатных формах

    В отчётах и печатных формах часто требуется формировать динамические ссылки — например, добавлять в PDF-документ гиперссылки на связанные документы или внешние ресурсы. Рассмотрим, как это реализовать на примере системы компоновки данных (СКД).

    Способ 1: Гиперссылки в табличном документе

    Чтобы добавить кликабельную ссылку в отчёт, сгенерированный через СКД, используйте свойство Гиперссылка у поля компоновки:

    Поле = Элементы.Добавить("НомерДокумента", Новый ПолеКомпоновкиДанных("Номер"));
    

    Поле.Гиперссылка = Новый ГиперссылкаКомпоновкиДанных(

    "Документ.ЗаказПокупателя?ref=" + Строка(Объект.Ссылка.УникальныйИдентификатор()),

    "Открыть документ " + Объект.Номер

    );

    Способ 2: Ссылки в печатных формах (PDF, Excel)

    При формировании печатных форм через ТабличныйДокумент гиперссылки добавляются с помощью метода УстановитьГиперссылку():

    ТабДок = Новый ТабличныйДокумент();
    

    ТабДок.ВывестиСекцию("Шапка");

    ТабДок.УстановитьГиперссылку(1, 1, 10, 1, "https://its.1c.ru", "Перейти на сайт 1С");

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

    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    

    Для Каждого Строка Из ДокументРезультат.Область("Таблица") Цикл

    Если ТипЗнч(Строка.Документ) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда

    Гиперссылка = "oneс:document?ref=" + Строка(Строка.Документ.УникальныйИдентификатор());

    ДокументРезультат.УстановитьГиперссылку(Строка.НомерСтроки, 1, Строка.НомерСтроки, 1, Гиперссылка);

    КонецЕсли;

    КонецЦикла;

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

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

    • oneс:document?ref=... — для документов.
    • oneс:catalog?ref=... — для элементов справочников.
    ⚠️ Внимание: При экспорте отчёта в PDF гиперссылки сохранятся только если в настройках экспорта включена опция Сохранять гиперссылки. В некоторых конфигурациях эта опция отключена по умолчанию.

    7. Продвинутые техники: ссылки в запросах и через XDTO

    Для опытных разработчиков полезно знать, как работать со ссылками в запросах и при обмене данными через XDTO. Эти методы используются в сложных интеграционных сценариях.

    Ссылки в запросах

    В языке запросов ссылки возвращаются как стандартные поля. Чтобы получить ссылку на документ в результате запроса, укажите её в списке выбираемых полей:

    Запрос = Новый Запрос;
    

    Запрос.Текст =

    "ВЫБРАТЬ

    | ЗаказПокупателя.Ссылка КАК СсылкаНаЗаказ,

    | ЗаказПокупателя.Номер КАК Номер

    |ИЗ

    | Документ.ЗаказПокупателя КАК ЗаказПокупателя

    |ГДЕ

    | ЗаказПокупателя.Дата > &ДатаНачала";

    Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата() - 30));

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    Сообщить(Строка(Выборка.СсылкаНаЗаказ) + ": " + Выборка.Номер);

    КонецЦикла;

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

    "ВЫБРАТЬ
    

    | ЗаказПокупателя.Контрагент.Ссылка КАК СсылкаНаКонтрагента"

    Ссылки в XDTO

    При обмене данными через XDTO (например, при интеграции с внешними системами) ссылки сериализуются в специальный формат. Чтобы корректно передать ссылку, используйте метод ЗаписатьXDTO():

    ОбъектXDTO = Новый ЗаписьXDTO();
    

    ОбъектXDTO.ЗаписатьXMLНачалоЭлемента("Документ");

    ОбъектXDTO.ЗаписатьXDTOАтрибут("Ссылка", СсылкаНаДокумент.УникальныйИдентификатор());

    ОбъектXDTO.ЗаписатьXMLКонецЭлемента();

    Для чтения ссылки из XDTO используйте ПрочитатьXDTO():

    ЧтениеXDTO = Новый ЧтениеXDTO();
    

    ЧтениеXDTO.УстановитьСтроку(ПолученныеДанные);

    ЧтениеXDTO.Прочитать();

    Если ЧтениеXDTO.Имя = "Документ" Тогда

    Уид = ЧтениеXDTO.ПрочитатьXDTOАтрибут("Ссылка");

    СсылкаНаДокумент = Документы.ЗаказПокупателя.НайтиПоУникальномуИдентификатору(Уид);

    КонецЕсли;

    При работе с XDTO учитывайте:

    • 🔑 Ссылки передаются через УникальныйИдентификатор (UID), а не через стандартное представление.
    • 🔄 Для обмена между базами лучше использовать УниверсальныйОбменДанными вместо ручной работы с XDTO.
    • 📌 В некоторых конфигурациях (например, 1С:ERP) для обмена данными используются специализированные обработки.

    8. Типичные ошибки и их решение

    При работе со ссылками в разработчики и пользователи часто сталкиваются с типичными ошибками. Разберём самые распространённые случаи и способы их исправления.

    Ошибка Причина Решение
    Ошибка при вызове метода контекста (ПустаяСсылка) Попытка получить свойство у пустой ссылки Проверяйте ссылку на пустоту: Если Не Ссылка.Пустая() Тогда...
    Недопустимое значение типа (ожидается СправочникСсылка.Контрагенты) Передан объект неверного типа в ссылочное поле Убедитесь, что тип ссылки соответствует типу реквизита (например, СправочникСсылка.Контрагенты)
    Гиперссылка в тексте не кликабельна Некорректный формат URL или ограничения безопасности Проверьте формат (должен начинаться с http:// или https://) и настройки прав
    Объект не найден (УникальныйИдентификатор) Попытка получить объект по несуществующему UID Проверьте корректность идентификатора и права доступа
    Ссылка на отчёт не открывается Неверное имя формы отчёта или отсутствуют права Уточните имя формы в конфигураторе и проверьте роли пользователя

    Ошибка: "Недостаточно прав для просмотра объекта"

    Если при открытии ссылки пользователь видит это сообщение, проблема в настройках ролей. Решение:

    1. Откройте конфигуратор и перейдите в Администрирование → Пользователи.
    2. Выберите роль пользователя и проверьте права на объект (например, Чтение для документа ЗаказПокупателя).
    3. Если прав недостаточно, добавьте их или создайте новую роль.

    Ошибка: "Неверный формат гиперссылки"

    Если гиперссылка в тексте не становится кликабельной, проверьте:

    • 🔗 Формат ссылки (должен быть полным, например, https://site.ru, а не site.ru).
    • 📋 Настройки поля (если это HTMLДокумент, проверьте разрешённые теги).
    • 🔒 Параметры безопасности (в некоторых конфигурациях внешние ссылки блокируются).

    Ошибка: "Объект не найден по ссылке"

    Если при попытке открыть объект по ссылке возникает эта ошибка, причины могут быть следующими:

    • 🗑️ Объект был удалён из базы.
    • 🔄 Ссылка указывает на объект в другой базе (при обмене данными).
    • <