Работа с навигационными ссылками в 1С:Предприятие — одна из самых востребованных задач при разработке отчетов, обработок и интеграций. Эти ссылки позволяют быстро переходить к конкретным документам прямо из интерфейса программы, email-рассылок или внешних систем. Однако не все пользователи и даже разработчики знают, что существует как минимум 5 различных способов получить такую ссылку — от ручного копирования до автоматизированного генератора через встроенный язык.
В этой статье мы разберем все актуальные методы: от простейшего (доступного даже бухгалтерам без навыков программирования) до продвинутых технических решений для разработчиков. Особое внимание уделим уникальной особенности платформы 1С 8.3 — динамическому формированию ссылок с учетом прав доступа пользователя, что часто упускают из виду при интеграциях. Материал будет полезен как начинающим специалистам, так и опытным программистам, которые хотят оптимизировать работу с документооборотом.
1. Ручное получение ссылки через интерфейс 1С (без программирования)
Самый простой способ — использовать встроенные возможности платформы. Этот метод подходит для разовых задач, когда нужно быстро скопировать ссылку на документ для отправки коллеге или вставки в отчет.
Инструкция актуальна для всех современных конфигураций (УТ 11, ERP 2, БП 3.0, ЗУП 3.1):
- Откройте нужный документ в режиме
1С:Предприятие(не в конфигураторе!). - Нажмите правой кнопкой мыши на заголовок документа (где отображается его номер и дата).
- В контекстном меню выберите пункт
Копировать ссылку(в некоторых конфигурациях может называтьсяСкопировать адрес). - Ссылка автоматически попадет в буфер обмена. Ее можно вставить в письмо, чат или другой документ.
⚠️ Внимание: В старых версиях платформы (до 8.3.10) этот пункт меню может отсутствовать. В таком случае используйте методы из следующих разделов.
Если пункт "Копировать ссылку" неактивен, проверьте права пользователя — для формирования ссылок требуется хотя бы право на просмотр документа.
2. Получение ссылки через "Все функции" (полуавтоматический метод)
Для пользователей с правами администратора или разработчика доступен более гибкий способ через системное меню Все функции. Этот метод позволяет получить ссылку даже на те документы, которые не отображаются в стандартных списках.
Пошаговая инструкция:
- 🔍 Откройте главное меню 1С и выберите
Все функции(или нажмитеCtrl+Shift+F). - 📄 В дереве объектов найдите ветку
Документы → [ТипВашегоДокумента](например,Документы → РеализацияТоваровУслуг). - 🔗 Выделите нужный документ в списке, нажмите правую кнопку мыши и выберите
Копировать ссылку. - 📋 Для массового копирования ссылок используйте кнопку
Еще → Скопировать ссылки на выделенные.
Этот способ особенно удобен, когда нужно получить ссылки на документы, которые:
- Находятся в архивных периодах
- Скрыты фильтрами в стандартных отчетах
- Принадлежат другим организациям в многопользовательском режиме
Как ускорить поиск в "Все функции"
Используйте быстрый фильтр (Ctrl+F) по названию документа или его номеру. Система покажет только релевантные объекты.
3. Программное получение ссылки через встроенный язык (для разработчиков)
Для автоматизации процессов и создания обработок необходимо уметь получать ссылки программно. В 1С 8.3 это реализуется через метод ПолучитьСсылку() или конструктор Новый Структура("Адрес", ...).
Основные способы:
// Метод 1: Для текущего документа в форме
СсылкаНаДокумент = ЭтотОбъект.Ссылка.ПолучитьСсылку();
// Метод 2: Для произвольного документа по идентификатору
Док = Документы.ЗаказПокупателя.НайтиПоНомеру("ЗП-000123", Дата("01.07.2023"));
Если Док.Пустая() Тогда
Сообщить("Документ не найден!");
Иначе
Ссылка = Док.ПолучитьСсылку();
КонецЕсли;
// Метод 3: Универсальный (работает для любых объектов)
Функция ПолучитьНавигационнуюСсылку(Объект)
Возврат "oneс:://" + СтрЗначПараметровСеанса.Идентификатор + "?ref=" + Объект.УникальныйИдентификатор();
КонецФункции
⚠️ Внимание: При использовании метода 3 учитывайте, что УникальныйИдентификатор() может измениться при переносе базы или восстановлении из резервной копии. Для стабильных ссылок используйте ПолучитьСсылку().
| Метод | Преимущества | Ограничения |
|---|---|---|
ПолучитьСсылку() |
Простота, стабильность, учитывает права доступа | Требует прямой ссылки на объект |
Конструктор Новый Структура |
Гибкость, можно добавлять параметры | Сложнее в реализации |
УникальныйИдентификатор() |
Работает для любых объектов | Нестабилен при переносах базы |
4. Генерация ссылок через обработки и внешние отчеты
Для массовой обработки документов удобно создавать специализированные обработки. Рассмотрим пример создания универсальной обработки для экспорта ссылок в Excel.
Алгоритм создания обработки:
- Создайте новую обработку в конфигураторе (
Файл → Новый → Обработка). - Добавьте реквизит
ТаблицаДокументовтипаТаблицаЗначенийс колонками:- 📄
Ссылка(типСтрока) - 🔗
НавигационнаяСсылка(типСтрока) - 📅
Дата(типДата)
- 📄
ЗаписьXML или ПоместитьФайл().Процедура ЗаполнитьТаблицу(ТипДокумента, ДатаНачала, ДатаОкончания)
Выборка = Документы[ТипДокумента].ВыбратьПериод(ДатаНачала, ДатаОкончания);
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаДокументов.Добавить();
НоваяСтрока.Ссылка = Выборка.Ссылка.Представление();
НоваяСтрока.НавигационнаяСсылка = Выборка.Ссылка.ПолучитьСсылку();
НоваяСтрока.Дата = Выборка.Дата;
КонецЦикла;
КонецПроцедуры
☑️ Проверка перед выгрузкой ссылок
Готовую обработку можно сохранять как внешний файл (.epf) и запускать в любых базах 1С. Это особенно удобно для регулярных задач, например, еженедельной рассылки ссылок на новые заказы менеджерам.
5. Использование REST API и HTTP-сервисов для внешних систем
Для интеграции с внешними системами (сайтами, CRM, мессенджерами) требуется генерация ссылок через REST API или HTTP-сервисы. В современных версиях 1С (начиная с 8.3.15) это реализуется через Публикацию веб-сервисов.
Пример кода для создания веб-сервиса, возвращающего ссылку:
// В модуле HTTP-сервиса
Функция ПолучитьСсылкуНаДокумент(ИдДокумента, ТипДокумента) Экспорт
Документ = Документы[ТипДокумента].НайтиПоУникальномуИдентификатору(ИдДокумента);
Если Документ.Пустая() Тогда
Возврат Новый Структура("Успех, Ссылка", Ложь, "");
Иначе
Возврат Новый Структура("Успех, Ссылка", Истина, Документ.ПолучитьСсылку());
КонецЕсли;
КонецФункции
Для настройки публикации:
- Откройте конфигуратор и перейдите в
Администрирование → Публикация на веб-сервере. - Создайте новый HTTP-сервис с указанной функцией.
- Настройте аутентификацию (рекомендуется
OAuth 2.0илиBasic Auth). - Опубликуйте сервис на веб-сервере (Apache, IIS или встроенном веб-сервере 1С).
- 📊 1С:ERP 2.4+: Поддерживает
Глубокие ссылкис передачей параметров (например, открытие документа на конкретной закладке). - 💼 1С:ЗУП 3.1: Для кадровых документов требуется дополнительная проверка прав на персональные данные.
- 🏭 1С:УТ 11: В розничных продажах ссылки на чеки ККМ формируются через отдельный механизм
РМК. - 📈 1С:БП 3.0: Для банковских выписок ссылки генерируются с учетом подключенных клиент-банков.
⚠️ Внимание: При публикации веб-сервисов обязательно настройте ограничения по IP-адресам и используйте HTTPS-протокол. Непубликуйте сервисы с возможностью получения ссылок на все документы без проверки прав.
6. Особенности работы с ссылками в разных конфигурациях
Несмотря на универсальность методов, некоторые конфигурации имеют специфические нюансы:
В управляемых формах (начиная с 8.2) ссылки автоматически адаптируются под текущий интерфейс (тонкий клиент, веб-клиент или мобильное приложение). Например, ссылка для веб-клиента будет выглядеть как:
https://server.name/1c_app/?ref=Document.РеализацияТоваровУслуг.УТ-000123#mode=view
А для толстого клиента:
oneс:://server.name/1c_app?ref=Document%5CРеализацияТоваровУслуг%5CУТ-000123
Всегда тестируйте Generated ссылки в целевой среде — веб-клиент и толстый клиент могут обрабатывать их по-разному.
7. Типичные ошибки и их решение
При работе со ссылками разработчики и пользователи часто сталкиваются с типичными проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
Недостаточно прав для просмотра документа |
Пользователь не имеет прав на объект | Настройте права в Администрирование → Настройка прав |
| Ссылка ведет на несуществующий документ | Документ удален или перенесен | Используйте ПроверкаСсылки() перед генерацией |
Неверный формат ссылки |
Несоответствие версии платформы | Обновите конфигурацию до актуальной версии |
| Ссылка не открывается в веб-клиенте | Неверные настройки публикации | Проверьте Администрирование → Публикация |
Для диагностики проблем используйте Журнал регистрации (Администрирование → Журналы → Журнал регистрации). Фильтруйте записи по типу ОшибкаНавигационнойСсылки.
⚠️ Внимание: В облачных версиях 1С (1C:Fresh) некоторые методы генерации ссылок могут быть ограничены политиками безопасности. Уточняйте актуальные ограничения в документации вашего тарифа.
FAQ: Частые вопросы по навигационным ссылкам в 1С
Можно ли получить ссылку на документ, который еще не проведен?
Да, метод ПолучитьСсылку() работает независимо от статуса проведения документа. Ссылка будет вести на форму документа в том состоянии, в котором он находится в базе (включая несохраненные изменения, если документ открыт в редактировании).
Как сделать так, чтобы ссылка открывала документ на конкретной закладке?
В современных конфигурациях (начиная с 8.3.16) поддерживаются глубокие ссылки с параметрами. Добавьте в конце ссылки #tab=ИмяЗакладки. Например:
oneс:://.../РеализацияТоваровУслуг.УТ-000123#tab=Товары
Список доступных закладок можно получить через ЭтотОбъект.Форма.ЭлементыФормы.
Почему при переходе по ссылке открывается пустая форма?
Это типичная проблема при:
- Несоответствии прав пользователя
- Удалении документа из базы
- Изменении структуры метаданных (после обновления конфигурации)
Проверьте актуальность ссылки через Метаданные.НайтиПоИдентификатору().
Можно ли получить ссылку на строку табличной части документа?
Да, но для этого требуется программный код. Пример для строки табличной части "Товары":
СсылкаНаСтроку = "oneс:://" + СтрЗначПараметровСеанса.Идентификатор +
"?ref=" + Документ.Ссылка.УникальныйИдентификатор() +
"&tab=Товары&line=" + НомерСтроки;
Обратите внимание, что не все конфигурации поддерживают такой формат — тестируйте перед использованием.
Как защитить ссылки от несанкционированного доступа?
Используйте комбинацию методов:
- Настройка прав в 1С на уровне ролей
- Дополнительная аутентификация в HTTP-сервисах
- Шифрование параметров в ссылке (например, через
ХешированиеДанных) - Ограничение времени действия ссылок (для чувствительных данных)
В облачных решениях (1C:Fresh) эти механизмы часто реализованы на уровне платформы.