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

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

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

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

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

Выбор способа зависит от задачи. Пользователю достаточно найти регистр в меню или через функцию «Все функции». Разработчику, который хочет открыть список из кнопки формы или обработки, понадобится метод ОткрытьФорму с правильным именем объекта и параметрами отбора. Ниже разобраны все варианты с примерами кода и ограничениями.

Открытие через интерфейс пользователя

В типовых конфигурациях регистры сведений обычно доступны из разделов подсистем. Например, регистр «Курсы валют» открывается из справочника валют по кнопке, а регистры цен — из раздела закупок или продаж. Но не все регистры выведены в командный интерфейс: многие служебные регистры разработчики намеренно скрывают от пользователей.

Универсальный способ — открыть список через «Все функции». В тонком клиенте и веб-клиенте нажмите Ctrl+Shift+F (или найдите пункт «Все функции» в главном меню). В открывшемся дереве раскройте ветку «Регистры сведений» и дважды щёлкните по нужному регистру — откроется его форма списка.

Учтите: команда «Все функции» доступна только пользователям с правами администратора или при включённом режиме технического специалиста. Если пункта нет, проверьте права доступа к конкретному регистру — без права «Просмотр» форма списка не откроется даже программно.

Порядок действий в интерфейсе
  1. 1
    Нажмите Ctrl+Shift+F или откройте «Все функции» из главного меню
  2. 2
    Раскройте ветку «Регистры сведений»
  3. 3
    Найдите нужный регистр и дважды щёлкните по нему
  4. 4
    Проверьте, что список открылся и данные отображаются

Открытие формы списка программно

Для открытия формы из кода используется глобальный метод ОткрытьФорму. Первый параметр — полное имя формы. Для формы списка регистра сведений оно строится по шаблону РегистрСведений.ИмяРегистра.ФормаСписка.

bsl
ОткрытьФорму("РегистрСведений.КурсыВалют.ФормаСписка");

Если у регистра в конфигураторе создана дополнительная форма списка с собственным именем (например, «ФормаСпискаРасширенная»), укажите её: РегистрСведений.КурсыВалют.Форма.ФормаСпискаРасширенная. Если имя формы не задано явно, платформа откроет основную форму списка, назначенную в свойствах регистра.

Метод ОткрытьФорму работает только в клиентском контексте — в клиентских процедурах форм и обработок. Вызов из серверной процедуры без контекста клиента приведёт к ошибке, потому что на сервере нет пользовательского интерфейса.

Открытие списка с отбором по измерению

Частая задача — показать пользователю не весь регистр, а только записи по конкретному объекту: например, все цены одной номенклатуры или адреса одного контрагента. Для этого во второй параметр ОткрытьФорму передаётся структура с ключом «Отбор», внутри которой — ещё одна структура с именами измерений и значениями отбора.

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

Имена полей в структуре отбора должны точно совпадать с именами измерений регистра в конфигураторе, включая регистр букв. Если указать несуществующее измерение, платформа выдаст ошибку при открытии формы. Отбор по ресурсам и реквизитам таким способом работает не всегда — надёжнее использовать отбор только по измерениям, для которых он поддерживается стандартной формой.

Открытая с отбором форма будет иметь фиксированный фильтр: пользователь увидит только нужные записи, а новые записи, созданные из этой формы, автоматически получат значение измерения из отбора. Это удобно для подчинённых списков в формах документов и справочников.

Дополнительные параметры открытия

Метод ОткрытьФорму принимает до семи параметров: имя формы, параметры, владельца, уникальность, окно, навигационную ссылку и описание оповещения о закрытии. На практике чаще всего используются первые четыре.

Параметр «Владелец» связывает открываемую форму с текущей: при закрытии владельца закроется и форма списка. Параметр «Уникальность» определяет, откроется ли новая копия формы или активируется уже открытая. Если передать в уникальность, например, ссылку на объект, то повторный вызов для того же объекта не создаст дубль окна, а активирует существующее.

bsl
ОткрытьФорму("РегистрСведений.КурсыВалют.ФормаСписка", , ЭтаФорма, Истина);

Если нужно открыть не список, а конкретную запись регистра, передайте в параметрах ключ записи: Новый Структура(\"Ключ\", КлючЗаписи) и откройте форму записи. Предварительно ключ записи формируют через менеджер регистра: РегистрыСведений.ИмяРегистра.СоздатьКлючЗаписи(СтруктураИзмерений).

Открытие в управляемом и обычном приложении

В управляемом приложении (тонкий, толстый и веб-клиент) используется описанный выше метод ОткрытьФорму. В обычном приложении, которое встречается в старых конфигурациях на платформе 8.2 и ранних 8.3, синтаксис другой: форму получают через ПолучитьФорму и затем вызывают метод Открыть.

Сравнение подходов

ОткрытьФорму (управляемое приложение)

Асинхронная модель, работает в веб-клиенте и тонком клиенте. Стандарт для современных конфигураций.

ПолучитьФорму + Открыть (обычное приложение)

Только толстый клиент обычного приложения. Не работает в веб-клиенте, актуально для устаревших решений.

Меню «Все функции»

Не требует программирования, но нужны права администратора и ручной поиск регистра в дереве.

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

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

Типичные ошибки
01
Опечатка в имени регистра или слове «РегистрСведений» — платформа сообщает «Ошибка при вызове метода контекста (ОткрытьФорму)». Проверьте имя в конфигураторе.
02
Вызов ОткрытьФорму в серверной процедуре — метод доступен только на клиенте. Перенесите вызов в клиентскую процедуру.
03
Отбор по несуществующему измерению — форма не открывается. Сверьте имена измерений с метаданными.
04
Передача в отбор значения неверного типа, например строки вместо ссылки — отбор молча не срабатывает или даёт пустой список.
05
Отсутствие прав у пользователя — форма не открывается без сообщения об ошибке кода. Проверьте роли.

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

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

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

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

Форма открылась
Норма

Отображается таблица записей регистра с колонками измерений и ресурсов

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

Ошибка «Объект не найден» или пустое окно — проверьте имя регистра

Отбор применился
Норма

В списке только записи с заданным значением измерения, в заголовке или панели виден фильтр

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

Показаны все записи — имя поля отбора не совпадает с именем измерения

Права пользователя
Норма

Список доступен под целевой учётной записью

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

Под администратором работает, под пользователем нет — не хватает прав на регистр

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

Итог

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

В интерфейсе форму списка открывают через «Все функции» (Ctrl+Shift+F), в коде — через ОткрытьФорму с именем «РегистрСведений.ИмяРегистра.ФормаСписка». Отбор передаётся структурой с ключом «Отбор» по именам измерений. Метод работает только на клиенте, а для больших регистров всегда задавайте отбор.

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

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

Нажмите Ctrl+Shift+F, чтобы открыть «Все функции», раскройте ветку «Регистры сведений» и дважды щёлкните по нужному регистру. Если команда недоступна, попросите администратора включить режим «Все функции» в параметрах сеанса или выдать соответствующие права.

Можно ли открыть форму списка с отбором по периоду?

Да, если регистр периодический. В структуру параметров добавьте ключ «Отбор» с полем «Период» или используйте стандартные настройки динамического списка формы. Для сложных условий по диапазону дат надёжнее создать собственную форму списка и настроить отбор в ней.

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

Чаще всего вызов выполняется в серверной или внешней по контексту процедуре. Открытие форм возможно только на клиенте — перенесите код в процедуру с директивой &НаКлиенте.

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

Передайте в пятый параметр метода ОткрытьФорму значение «ОтдельноеОкно» или используйте вариант открытия с указанием окна. В типовом сценарии формы списков открываются в рабочей области, и это нормальное поведение платформы.

Чем отличается форма списка от формы записи регистра сведений?

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

Почему отбор в открытой форме не срабатывает, хотя код без ошибок?

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