Работа с ссылками в 1С:Предприятие — одна из самых востребованных задач как для обычных пользователей, так и для разработчиков. Без умения правильно формировать ссылки невозможно организовать удобную навигацию между документами, автоматизировать бизнес-процессы или интегрировать систему с внешними сервисами. В этой статье мы разберём все актуальные методы создания ссылок: от простых гиперссылок в тексте до программного формирования ссылок на объекты метаданных.
Особенность работы со ссылками в 1С заключается в том, что здесь нет универсального решения — метод зависит от того, куда именно вы хотите сослаться: на документ внутри базы, на элемент справочника, на внешний сайт или на отчёт. Мы рассмотрим каждый сценарий с практическими примерами, актуальными для последних версий платформы 8.3.20+ и популярных конфигураций (Управление торговлей 11, Бухгалтерия предприятия 3.0, Зарплата и управление персоналом 3.1).
Если вы никогда не работали с ссылками в 1С, начните с первых двух разделов — там описаны базовые методы, которые не требуют знания программирования. Разработчикам будет полезен раздел про программное создание ссылок, где мы разберём работу с объектом Ссылка и методами глобального контекста.
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. Ссылки на документы и справочники через интерфейс
Чаще всего пользователям нужно сослаться не на внешний ресурс, а на объект внутри базы: документ, элемент справочника или отчёт. Для этого в 1С предусмотрен механизм ссылочных полей. Рассмотрим, как им пользоваться на примере конфигурации Управление торговлей 11.
Допустим, вы хотите в документе Заказ покупателя добавить ссылку на связанный Договор контрагента. Для этого:
- Откройте документ
Заказ покупателяна редактирование. - Найдите реквизит, который должен хранить ссылку (например,
Договор). Если такого реквизита нет, его нужно добавить в конфигураторе (тип данных —СправочникСсылка.ДоговорыКонтрагентов). - Нажмите на кнопку выбора (три точки
...) рядом с полем. - В открывшемся окне выберите нужный договор из справочника или создайте новый.
После сохранения в поле отобразится краткое наименование документа (например, Договор №123 от 01.01.2026), при клике на которое откроется сам договор. Этот метод работает для всех ссылочных типов данных:
- 📄
ДокументСсылка— для ссылок на документы (накладные, акты, счета). - 🗃️
СправочникСсылка— для ссылок на элементы справочников (контрагенты, номенклатура, сотрудники). - 📊
ОтчетСсылка— для ссылок на отчёты (например,Оборотно-сальдовая ведомость).
Если в вашей конфигурации нет нужного реквизита для хранения ссылки, его можно добавить самостоятельно в режиме Конфигуратор. Для этого:
- Откройте конфигуратор (
Файл → Конфигуратор). - Найдите объект метаданных (например, документ
ЗаказПокупателя). - Добавьте новый реквизит с типом
СправочникСсылка.ИмяСправочникаилиДокументСсылка.ИмяДокумента. - Сохраните конфигурацию и обновите базу данных.
⚠️ Внимание: Изменение конфигурации может привести к ошибкам, если не соблюдать правила поддержки. Перед редактированием сделайте резервную копию базы (Администрирование → Выгрузить информационную базу).
3. Программное создание ссылок на объекты
Для автоматизации процессов часто требуется создавать ссылки на объекты 1С программно — например, при загрузке данных из внешних систем или при формировании сложных отчётов. В этом разделе разберём основные методы работы со ссылками на языке 1С:Предприятие.
Базовый объект для работы со ссылками — это тип Ссылка. Он позволяет получать ссылки на любые объекты метаданных. Рассмотрим ключевые методы:
| Метод | Описание | Пример использования |
|---|---|---|
Ссылка.ПустаяСсылка() |
Создаёт пустую ссылку заданного типа | |
Документы.ИмяДокумента.СоздатьСсылку() |
Создаёт ссылку на новый документ | |
Справочники.ИмяСправочника.НайтиПоНаименованию() |
Ищет элемент справочника по наименованию | |
Объект.Ссылка |
Получает ссылку на существующий объект | |
Пример практического использования: предположим, вам нужно в документе РеализацияТоваровУслуг автоматически проставить ссылку на договор, найденный по номеру:
Процедура ПриЗаписи(Отказ)
НомерДоговора = ЭтотОбъект.НомерДоговора;
СсылкаНаДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоНомеру(НомерДоговора);
Если Не СсылкаНаДоговор.Пустая() Тогда
ЭтотОбъект.Договор = СсылкаНаДоговор;
Иначе
Сообщить("Договор с номером " + НомерДоговора + " не найден!");
КонецЕсли;
КонецПроцедуры
Важные нюансы при работе со ссылками программно:
- 🔍 Всегда проверяйте ссылку на пустоту с помощью метода
.Пустая(), чтобы избежать ошибок. - 🔄 Для часто используемых ссылок (например, на справочник
Организации) можно завести глобальные переменные. - 📌 При работе с большими объёмами данных используйте менеджеры объектов (
Документы.ИмяДокумента,Справочники.ИмяСправочника) вместо прямого обращения к базе.
☑️ Проверка корректности ссылок в коде
4. Ссылки на отчёты и обработки
Ссылки на отчёты и обработки в 1С организованы иначе, чем ссылки на документы или справочники. Здесь нельзя просто указать тип ОтчетСсылка в реквизите — нужно использовать специальные механизмы платформы. Рассмотрим два основных подхода: через командный интерфейс и программно.
Способ 1: Добавление команды в интерфейс
Если вам нужно разместить ссылку на отчёт в панели навигации или в форме документа, используйте механизм Командный интерфейс:
- Откройте конфигуратор и найдите нужную форму (например, форму документа
ЗаказПокупателя). - Перейдите на закладку
Командыи добавьте новую команду. - В свойствах команды укажите:
- Имя:
ОткрытьОборотноСальдовуюВедомость - Заголовок:
Оборотно-сальдовая ведомость - Действие:
ОткрытьФорму - Параметр:
"Отчет.ОборотноСальдоваяВедомость.ФормаОтчета"
- Имя:
Все действия.Способ 2: Программный вызов отчёта
Чтобы открыть отчёт из кода, используйте метод ОткрытьФорму():
Процедура ОткрытьОборотноСальдовуюВедомость()
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("Период", ТекущаяДата());
ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость.ФормаОтчета", ПараметрыФормы);
КонецПроцедуры
Для передачи параметров в отчёт (например, периода или организации) используйте структуру ПараметрыФормы. Пример с фильтром по организации:
Процедура ОткрытьВедомостьПоОрганизации(Организация)
Параметры = Новый Структура();
Параметры.Вставить("Организация", Организация);
Параметры.Вставить("ДатаНачала", НачалоМесяца(ТекущаяДата()));
Параметры.Вставить("ДатаОкончания", КонецМесяца(ТекущаяДата()));
ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость.ФормаОтчета", Параметры);
КонецПроцедуры
Если отчёт требует сложных параметров (например, отбор по нескольким полям), можно использовать объект КомпоновкаДанных:
Процедура ОткрытьОтчетСОтбором()
Настройки = Отчеты.ОборотноСальдоваяВедомость.ПолучитьНастройкиПоУмолчанию();
ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Справочники.Организации.НайтиПоНаименованию("ООО Альфа");
ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость.ФормаОтчета", Настройки);
КонецПроцедуры
⚠️ Внимание: В некоторых конфигурациях (например, 1С:ERP) имена отчётов могут отличаться от стандартных. Чтобы узнать точное имя, откройте отчёт в режиме1С:Предприятие, затем перейдите вВсе функции → Отчётыи посмотрите свойства нужного отчёта.
5. Ссылки на внешние ресурсы и файлы
Помимо внутренних ссылок, в 1С часто требуется работать с внешними ресурсами: открывать веб-страницы, загружать файлы или отправлять данные по API. Для этого используются следующие методы:
1. Открытие веб-страницы в браузере
Чтобы открыть ссылку в браузере пользователя, используйте функцию ОткрытьЗначение():
ОткрытьЗначение("https://its.1c.ru/db/v8319doc");
Если нужно передать дополнительные параметры (например, для авторизации), используйте объект ИнтернетПрокси:
Прокси = Новый ИнтернетПрокси("https://api.example.com/data?token=12345");
Ответ = Прокси.Получить();
2. Работа с файлами
Для создания ссылок на файлы (например, прикреплённые к документу) используйте тип ХранилищеЗначения:
// Сохранение файла в хранилище
ДвоичныеДанные = Новый ДвоичныеДанные("C:\temp\contract.pdf");
Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
// Получение ссылки на файл
СсылкаНаФайл = Хранилище.Получить();
Чтобы открыть файл из 1С в связанной программе (например, PDF в Adobe Reader), используйте:
ПутьКФайлу = "C:\temp\contract.pdf";
СистемаКоманд.Выполнить(ПутьКФайлу);
3. Работа с API
Для взаимодействия с внешними API в 1С используются объекты 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. Эти методы используются в сложных интеграционных сценариях.
Ссылки в запросах
В языке запросов 1С ссылки возвращаются как стандартные поля. Чтобы получить ссылку на документ в результате запроса, укажите её в списке выбираемых полей:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка КАК СсылкаНаЗаказ,
| ЗаказПокупателя.Номер КАК Номер
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Дата > &ДатаНачала";
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата() - 30));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Строка(Выборка.СсылкаНаЗаказ) + ": " + Выборка.Номер);
КонецЦикла;
Если нужно получить ссылку на связанный объект (например, на контрагента из документа), используйте точку:
"ВЫБРАТЬ
| ЗаказПокупателя.Контрагент.Ссылка КАК СсылкаНаКонтрагента"
Ссылки в XDTO
При обмене данными через XDTO (например, при интеграции с внешними системами) ссылки сериализуются в специальный формат. Чтобы корректно передать ссылку, используйте метод ЗаписатьXDTO():
ОбъектXDTO = Новый ЗаписьXDTO();
ОбъектXDTO.ЗаписатьXMLНачалоЭлемента("Документ");
ОбъектXDTO.ЗаписатьXDTOАтрибут("Ссылка", СсылкаНаДокумент.УникальныйИдентификатор());
ОбъектXDTO.ЗаписатьXMLКонецЭлемента();
Для чтения ссылки из XDTO используйте ПрочитатьXDTO():
ЧтениеXDTO = Новый ЧтениеXDTO();
ЧтениеXDTO.УстановитьСтроку(ПолученныеДанные);
ЧтениеXDTO.Прочитать();
Если ЧтениеXDTO.Имя = "Документ" Тогда
Уид = ЧтениеXDTO.ПрочитатьXDTOАтрибут("Ссылка");
СсылкаНаДокумент = Документы.ЗаказПокупателя.НайтиПоУникальномуИдентификатору(Уид);
КонецЕсли;
При работе с XDTO учитывайте:
- 🔑 Ссылки передаются через
УникальныйИдентификатор(UID), а не через стандартное представление. - 🔄 Для обмена между базами 1С лучше использовать
УниверсальныйОбменДаннымивместо ручной работы с XDTO. - 📌 В некоторых конфигурациях (например, 1С:ERP) для обмена данными используются специализированные обработки.
8. Типичные ошибки и их решение
При работе со ссылками в 1С разработчики и пользователи часто сталкиваются с типичными ошибками. Разберём самые распространённые случаи и способы их исправления.
| Ошибка | Причина | Решение |
|---|---|---|
Ошибка при вызове метода контекста (ПустаяСсылка) |
Попытка получить свойство у пустой ссылки | Проверяйте ссылку на пустоту: Если Не Ссылка.Пустая() Тогда... |
Недопустимое значение типа (ожидается СправочникСсылка.Контрагенты) |
Передан объект неверного типа в ссылочное поле | Убедитесь, что тип ссылки соответствует типу реквизита (например, СправочникСсылка.Контрагенты) |
| Гиперссылка в тексте не кликабельна | Некорректный формат URL или ограничения безопасности | Проверьте формат (должен начинаться с http:// или https://) и настройки прав |
Объект не найден (УникальныйИдентификатор) |
Попытка получить объект по несуществующему UID | Проверьте корректность идентификатора и права доступа |
| Ссылка на отчёт не открывается | Неверное имя формы отчёта или отсутствуют права | Уточните имя формы в конфигураторе и проверьте роли пользователя |
Ошибка: "Недостаточно прав для просмотра объекта"
Если при открытии ссылки пользователь видит это сообщение, проблема в настройках ролей. Решение:
- Откройте конфигуратор и перейдите в
Администрирование → Пользователи. - Выберите роль пользователя и проверьте права на объект (например,
Чтениедля документаЗаказПокупателя). - Если прав недостаточно, добавьте их или создайте новую роль.
Ошибка: "Неверный формат гиперссылки"
Если гиперссылка в тексте не становится кликабельной, проверьте:
- 🔗 Формат ссылки (должен быть полным, например,
https://site.ru, а неsite.ru). - 📋 Настройки поля (если это
HTMLДокумент, проверьте разрешённые теги). - 🔒 Параметры безопасности (в некоторых конфигурациях внешние ссылки блокируются).
Ошибка: "Объект не найден по ссылке"
Если при попытке открыть объект по ссылке возникает эта ошибка, причины могут быть следующими:
- 🗑️ Объект был удалён из базы.
- 🔄 Ссылка указывает на объект в другой базе (при обмене данными). <