К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как открыть форму конкретного документа в 1С

Как открыть форму конкретного документа в 1С: команда ОткрытьЗначение, ОткрытьФорму с ключом, переход по ссылке, типичные ошибки и проверка результата.

Задача открыть форму именно конкретного документа, а не списка документов, встречается в 1С постоянно: при нажатии на гиперссылку в отчёте, из обработки, из другого документа или по команде на форме. В управляемом приложении для этого есть два основных механизма — метод ОткрытьЗначение() и метод ОткрытьФорму() с передачей ключа объекта. Оба работают на клиенте и требуют, чтобы у разработчика уже была ссылка на нужный документ.

Ключевой момент — различие между ссылкой и объектом. Форму открывают по ссылке (значению типа ДокументСсылка), а не по объекту данных. Если у вас есть только номер и дата документа, сначала нужно найти ссылку запросом или методом НайтиПоНомеру(), и только потом открывать форму. Попытка открыть «объект» или структуру с реквизитами приведёт к ошибке.

Для пользователя, не связанного с программированием, открыть конкретный документ можно через список документов, поиск по номеру, панель навигации или прямую навигационную ссылку вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=.... Ниже разобраны все сценарии — от пользовательских до программных.

Как пользователю открыть нужный документ без программирования

Стандартный способ — открыть список документов нужного вида через раздел меню (например, «Продажи» → «Реализации (акты, накладные)»), установить отбор по периоду и найти документ по номеру. Двойной щелчок по строке или кнопка «Изменить» открывают форму именно этого документа.

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

Если документ открывался недавно, он доступен в истории работы (кнопка со стрелкой назад в панели навигации или меню «Недавние»). Это самый быстрый путь вернуться к документу, с которым работали в текущем сеансе.

Открытие документа по навигационной ссылке

Каждый документ в 1С имеет уникальную навигационную ссылку. Получить её можно, открыв документ и выбрав в меню «Ещё» → «Получить ссылку» (или команду «Вывести ссылку» в зависимости от конфигурации). Ссылка имеет вид e1cib/data/Документ.ПоступлениеТоваровУслуг?ref=9f2d....

Такую ссылку можно отправить коллеге или сохранить в заметках. Вставив её в поле перехода (через меню «Файл» → «Открыть» либо вставку в адресную строку веб-клиента), вы откроете форму именно этого документа, минуя поиск в списках.

Программно навигационную ссылку получают функцией ПолучитьНавигационнуюСсылку(Ссылка), а перейти по ней — методом ПерейтиПоНавигационнойСсылке(). Это удобно для формирования писем и уведомлений с прямыми переходами к документам.

Открытие формы документа методом ОткрытьЗначение

Самый простой программный способ — ОткрытьЗначение(СсылкаНаДокумент). Метод выполняется на клиенте, сам определяет, какую форму использовать, и открывает основную форму объекта. Если форма уже открыта, платформа активирует существующее окно вместо создания дубликата.

bsl
&НаКлиенте
Процедура ОткрытьДокумент(Команда)
	ОткрытьЗначение(СсылкаНаДокумент);
КонецПроцедуры

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

Открытие через ОткрытьФорму с ключом и параметрами

Когда нужен контроль над параметрами формы, используют ОткрытьФорму(). Имя формы указывается полностью: Документ.РеализацияТоваровУслуг.ФормаОбъекта (или .Форма.ФормаДокумента для формы с явным именем). Конкретный документ задаётся параметром Ключ.

bsl
&НаКлиенте
Процедура ОткрытьСПараметрами(Команда)
	ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент);
	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры

Дополнительно можно передать владельца формы, уникальность и режим открытия окна. Если требуется получить результат после закрытия формы, используйте ОткрытьФорму() с описанием оповещения — в управляемом приложении модальные вызовы без оповещений запрещены при включённом режиме защиты от модальности.

Открытие с блокировкой окна владельца

Чтобы форма документа открылась поверх текущей и заблокировала её, передайте параметр РежимОткрытияОкна со значением БлокироватьОкноВладельца и укажите владельца. Это стандартный сценарий для выбора или редактирования связанного документа из другой формы.

Как найти ссылку на документ перед открытием

Частая ситуация: известны только номер и дата, а ссылки нет. Тогда ссылку получают на сервере методом менеджера документа: Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Номер, Дата). Если документ не найден, метод вернёт пустую ссылку — это нужно проверить через Ссылка.Пустая() до попытки открыть форму.

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

Порядок действий при поиске и открытии
  1. 1
    На сервере найдите ссылку: НайтиПоНомеру или запросом
  2. 2
    Проверьте, что ссылка не пустая: Ссылка.Пустая()
  3. 3
    Передайте ссылку на клиент (возврат из серверной функции)
  4. 4
    На клиенте вызовите ОткрытьЗначение(Ссылка) или ОткрытьФорму с параметром Ключ
  5. 5
    Убедитесь, что открылась форма именно нужного документа — сверьте номер и дату в заголовке

Типичные ошибки и ограничения

Типичные ошибки
01
Вызов ОткрытьЗначение на сервере — метод доступен только на клиенте, код на сервере завершится ошибкой
02
Передача в параметр Ключ объекта (ДокументОбъект) вместо ссылки — форма откроется пустой или возникнет ошибка приведения типов
03
Открытие формы пустой ссылки без проверки — пользователь увидит форму несуществующего документа или ошибку
04
Неверное имя формы в ОткрытьФорму, например пропущено 'Форма.' перед именем — платформа сообщит, что форма не найдена
05
Использование модального ОткрытьФормуМодально в тонком и веб-клиенте без оповещений — код не выполнится в режиме запрета модальности

Отдельный риск — права доступа. Если у пользователя нет права «Просмотр» на вид документа, форма не откроется даже при корректной ссылке: появится сообщение о нарушении прав. В RLS-настроенных базах документ может быть недоступен из-за ограничения на уровне записей — тогда поиск ссылки вернёт пустое значение, хотя документ физически существует.

Проверка результата и выбор подходящего способа

Контрольные точки

Как проверить результат

Какая форма открылась
Норма

Форма документа с нужным номером и датой в заголовке

Тревожный признак

Открылся список документов или пустая форма нового документа

Повторное открытие того же документа
Норма

Активируется уже открытое окно, дубликатов нет

Тревожный признак

Открываются новые копии формы — проверьте передачу Ключ

Поведение при отсутствии документа
Норма

Пользователь получает понятное сообщение, форма не открывается

Тревожный признак

Ошибка платформы или открытие формы пустой ссылки

Сравнение способов открытия

ОткрытьЗначение

Проще всего, сама платформа выбирает форму и активирует уже открытое окно. Не подходит, если нужны параметры или ожидание результата

ОткрытьФорму с Ключ

Полный контроль: параметры, владелец, оповещение о закрытии. Требует точного имени формы

Навигационная ссылка

Подходит для переходов из писем, уведомлений и внешних систем. Не позволяет передать параметры формы

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

Частые вопросы

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

Передайте в ОткрытьФорму структуру с параметром «ЗначенияЗаполнения» — вложенной структурой с реквизитами. Документ откроется как новый, с подставленными значениями, и будет записан только после нажатия «Записать».

Как открыть документ из отчёта по двойному щелчку?

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

Почему ОткрытьФорму выдаёт ошибку «Форма не найдена»?

Проверьте полный путь: Документ.ИмяДокумента.ФормаОбъекта — для основной формы, Документ.ИмяДокумента.Форма.ИмяФормы — для формы с конкретным именем. Также убедитесь, что у формы не снято назначение «основная» и тип документа указан без ошибок.

Можно ли открыть документ в режиме «только просмотр»?

Да. Передайте в параметры ОткрытьФорму структуру с ключом «ТолькоПросмотр» и значением Истина. Форма откроется заблокированной для редактирования, что удобно для показа документа без риска случайного изменения.

Как открыть документ, если известна только строка GUID?

Получите ссылку через Документы.ИмяДокумента.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаGUID)) на сервере, проверьте существование через запрос или Ссылка.ПолучитьОбъект(), и затем откройте форму на клиенте. Учтите: ссылка по GUID существует всегда, даже если сам документ удалён.

Итог

Что важно запомнить

Форму конкретного документа открывают по ссылке: ОткрытьЗначение для простых случаев, ОткрытьФорму с параметром Ключ — когда нужны параметры и оповещения. Перед открытием всегда проверяйте, что ссылка не пустая, и помните, что открытие форм возможно только на клиенте.