Разработка и Конфигурация · 9 мин
1С: как открыть документ по ссылке
Как в 1С открыть документ по ссылке: методы ОткрытьЗначение, ПолучитьФорму, навигационные ссылки e1cib, команды в запросе и типичные ошибки разработчика.
Задача открыть документ 1С по ссылке возникает в двух разных контекстах: у пользователя есть навигационная ссылка вида e1cib/data/..., и её нужно открыть в программе, либо разработчик в коде имеет ссылку на объект и хочет показать пользователю форму документа. Оба сценария решаются штатными средствами платформы без сторонних инструментов.
Ключевое понятие здесь — ссылка (тип ДокументСсылка). Это не сам документ, а уникальный указатель на запись в базе данных. Получив ссылку любым способом, можно открыть форму объекта одной командой. Ниже разобраны все рабочие способы: от простого перехода по навигационной ссылке до программного открытия формы с параметрами.
Что такое ссылка на документ и где её взять
Ссылка — это значение, которое однозначно идентифицирует документ в информационной базе. Внутри неё хранится тип объекта и уникальный идентификатор (GUID). Сама по себе ссылка не содержит реквизитов документа: чтобы прочитать номер, дату или табличную часть, нужно либо обратиться к данным через точку (платформа выполнит запрос к базе), либо вызвать метод ПолучитьОбъект().
Получить ссылку можно несколькими путями: из результата запроса, из реквизита другого объекта, поиском по номеру и дате через Документы.РеализацияТоваровУслуг.НайтиПоНомеру(), а также из навигационной ссылки. Важно понимать, что преобразование строки в ссылку напрямую невозможно — для этого существуют специальные механизмы, описанные ниже.
Как открыть документ по навигационной ссылке e1cib
Если коллега прислал ссылку вида e1cib/data/Документ.ПоступлениеТоваровУслуг?ref=8a2b00112233445566778899aabbccdd, открыть её можно без программирования. В тонком клиенте перейдите в главное меню «Файл — Открыть» (или нажмите Ctrl+O в некоторых версиях платформы) и вставьте ссылку в поле. Платформа сама определит тип объекта и откроет его форму.
Альтернатива — внешняя обработка или команда запуска. Тонкий клиент можно запустить с параметром /C"e1cib/data/...", и после входа в базу откроется нужный документ. Этот приём удобен для ярлыков на рабочем столе, ведущих к часто используемым документам.
Если база опубликована на веб-сервере, навигационная ссылка работает и в браузере: достаточно дополнить её адресом публикации. При этом у пользователя должны быть права на просмотр этого вида документов, иначе появится сообщение о нарушении прав доступа.
- 1Скопируйте навигационную ссылку целиком, начиная с e1cib/
- 2В тонком клиенте откройте меню «Файл — Открыть»
- 3Вставьте ссылку в поле и подтвердите ввод
- 4Убедитесь, что открылась форма именно того документа — сверьте номер и дату
Программное открытие формы документа по ссылке
В коде на встроенном языке самый простой способ — метод ПоказатьЗначение() в управляемом приложении или ОткрытьЗначение() в обычном. Оба принимают ссылку и открывают основную форму объекта. Разница в том, что ПоказатьЗначение() работает асинхронно и не блокирует выполнение кода, что соответствует требованиям современных версий платформы.
// Управляемое приложение
ПоказатьЗначение(, СсылкаНаДокумент);
// Обычное приложение (устаревший режим)
ОткрытьЗначение(СсылкаНаДокумент);
Когда нужен более тонкий контроль — например, открыть форму с блокировкой, передать дополнительные параметры или обработать закрытие — используется ОткрытьФорму() с указанием полного имени формы и параметра «Ключ»:
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента", ПараметрыФормы);
Параметр «Ключ» сообщает форме, какой объект нужно загрузить. Если передать ссылку на несуществующий или удалённый документ, форма откроется с ошибкой «Объект не найден» — об этом подробнее в разделе про ошибки.
Как получить ссылку, если известны только номер и дата
Частая ситуация: из внешней системы пришёл номер документа, и нужно открыть его в 1С. Метод НайтиПоНомеру() ищет документ по номеру в пределах периода, соответствующего дате (для большинства видов — в пределах года):
НайденнаяСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("0000-000123", Дата(2026, 6, 15));
Если Не НайденнаяСсылка.Пустая() Тогда
ПоказатьЗначение(, НайденнаяСсылка);
Иначе
Сообщить("Документ с таким номером не найден");
КонецЕсли;
Более гибкий вариант — запрос с отбором по номеру и организации. Он позволяет искать по части номера, по нескольким условиям сразу и возвращать ссылки пакетно. Помните, что номера документов могут повторяться между организациями и годами, поэтому отбор только по номеру без дополнительных условий ненадёжен.
Получение ссылки из строки GUID
Если известен уникальный идентификатор документа (например, из лога обмена или внешней системы), ссылку можно восстановить конструктором Новый УникальныйИдентификатор() и методом ПолучитьСсылку():
Ид = Новый УникальныйИдентификатор("8a2b0011-2233-4455-6677-8899aabbccdd");
СсылкаНаДокумент = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Ид);
ПоказатьЗначение(, СсылкаНаДокумент);
Тонкость: ПолучитьСсылку() создаёт ссылку даже если объекта с таким GUID в базе нет. Перед открытием стоит проверить существование документа запросом или методом ПолучитьОбъект() с проверкой на Неопределено, иначе пользователь увидит «битую ссылку».
Типичные ошибки при открытии документов по ссылке
Самая частая проблема — «Объект не найден» при открытии формы. Причины: документ удалён, ссылка получена из другой информационной базы (GUID совпадает по формату, но объекта нет), либо ссылка сконструирована вручную с несуществующим идентификатором. Перед открытием всегда проверяйте существование объекта.
Вторая группа ошибок связана с контекстом выполнения. Методы ПоказатьЗначение() и ОткрытьФорму() доступны только на клиенте — вызов их в серверной процедуре приведёт к ошибке компиляции или выполнения. Если ссылка формируется на сервере (например, в фоновом задании), её нужно вернуть на клиент и открыть уже там.
Третья причина — права доступа. Команда открытия выполнится успешно, но форма покажет ошибку нарушения прав, если у пользователя нет права «Просмотр» на этот вид документов или RLS-ограничение скрывает конкретную запись. Проверяйте сценарий под реальной учётной записью пользователя, а не под администратором.
Как проверить, что открылся нужный документ
После открытия формы убедитесь, что загружен именно тот объект. Визуальный контроль: номер, дата и организация в шапке формы должны совпадать с ожидаемыми. Если документ искали по номеру, сверьте также контрагента или сумму — совпадение номеров у разных документов не редкость.
Программно проверка выполняется сравнением ссылок: оператор = для ссылок сравнивает и тип, и идентификатор. Дополнительно полезно сравнить Ссылка.УникальныйИдентификатор() с исходным GUID, если ссылка пришла из внешней системы.
Как проверить результат
Номер, дата и организация совпадают с исходными данными
Открылся документ с тем же номером, но другой организации или периода
Запрос по ссылке возвращает одну строку
Запрос пуст — ссылка битая, форма покажет ошибку
Форма открывается под учётной записью пользователя
Ошибка нарушения прав доступа при открытии
Часто задаваемые вопросы
Можно ли открыть документ по ссылке из другой базы 1С?
Автоматически — нет: GUID действителен только внутри своей информационной базы. Если базы связаны обменом и документ синхронизирован, можно найти его по GUID через ПолучитьСсылку() в целевой базе. Для несинхронизированных баз нужен поиск по ключевым реквизитам: номеру, дате и организации.
Чем ПоказатьЗначение отличается от ОткрытьФорму?
ПоказатьЗначение — универсальная команда для любого значения: платформа сама выбирает основную форму объекта. ОткрытьФорму позволяет указать конкретную форму, передать параметры, задать владельца и обработчик закрытия. Для простого показа документа достаточно ПоказатьЗначение, для нестандартных сценариев — ОткрытьФорму.
Почему ссылка e1cib не открывается в браузере?
Ссылка вида e1cib/data/... сама по себе не является веб-адресом. Для браузера её нужно дополнить адресом публикации базы на веб-сервере. Если база не опубликована, ссылку можно открыть только в тонком или толстом клиенте через меню «Файл — Открыть».
Как открыть документ в режиме только для чтения?
Передайте в ОткрытьФорму параметр ТолькоПросмотр: ПараметрыФормы = Новый Структура("Ключ, ТолькоПросмотр", Ссылка, Истина). Форма откроется без возможности редактирования и записи. Это полезно для показа документов из отчётов и журналов, где изменение не предполагается.
Что делать, если по номеру находится несколько документов?
Метод НайтиПоНомеру возвращает первый найденный документ, что ненадёжно при дублях. Используйте запрос с отбором по номеру, периоду и организации, а если строк несколько — покажите пользователю список для выбора через ПоказатьВыборИзСписка.
Можно ли открыть форму нового документа с заполнением по ссылке-основанию?
Да: передайте в ОткрытьФорму параметр Основание со ссылкой на документ-основание вместо параметра Ключ. Платформа вызовет обработчик заполнения, и форма нового документа откроется уже заполненной данными основания.
Что важно запомнить
Документ по ссылке открывается через ПоказатьЗначение или ОткрытьФорму с параметром Ключ, навигационная ссылка e1cib — через «Файл — Открыть». Получение ссылки возможно по номеру и дате, из запроса или по GUID. Перед открытием проверяйте существование объекта и права пользователя, а методы открытия форм вызывайте только на клиенте.