Разработка и Конфигурация · 9 мин
Как открыть форму списка регистра сведений в 1С
Как открыть форму списка регистра сведений в 1С: через интерфейс пользователя, конфигуратор и программно. Команды, примеры кода, типичные ошибки.
Регистр сведений в 1С хранит данные, привязанные к измерениям: цены номенклатуры, курсы валют, адреса контрагентов. Чтобы увидеть эти данные, нужно открыть форму списка регистра. Сделать это можно тремя способами: через стандартный интерфейс пользователя, через конфигуратор и программно — из кода встроенного языка.
Выбор способа зависит от задачи. Пользователю достаточно найти регистр в меню или через функцию «Все функции». Разработчику, который хочет открыть список из кнопки формы или обработки, понадобится метод ОткрытьФорму с правильным именем объекта и параметрами отбора. Ниже разобраны все варианты с примерами кода и ограничениями.
Открытие через интерфейс пользователя
В типовых конфигурациях регистры сведений обычно доступны из разделов подсистем. Например, регистр «Курсы валют» открывается из справочника валют по кнопке, а регистры цен — из раздела закупок или продаж. Но не все регистры выведены в командный интерфейс: многие служебные регистры разработчики намеренно скрывают от пользователей.
Универсальный способ — открыть список через «Все функции». В тонком клиенте и веб-клиенте нажмите Ctrl+Shift+F (или найдите пункт «Все функции» в главном меню). В открывшемся дереве раскройте ветку «Регистры сведений» и дважды щёлкните по нужному регистру — откроется его форма списка.
Учтите: команда «Все функции» доступна только пользователям с правами администратора или при включённом режиме технического специалиста. Если пункта нет, проверьте права доступа к конкретному регистру — без права «Просмотр» форма списка не откроется даже программно.
- 1Нажмите Ctrl+Shift+F или откройте «Все функции» из главного меню
- 2Раскройте ветку «Регистры сведений»
- 3Найдите нужный регистр и дважды щёлкните по нему
- 4Проверьте, что список открылся и данные отображаются
Открытие формы списка программно
Для открытия формы из кода используется глобальный метод ОткрытьФорму. Первый параметр — полное имя формы. Для формы списка регистра сведений оно строится по шаблону РегистрСведений.ИмяРегистра.ФормаСписка.
ОткрытьФорму("РегистрСведений.КурсыВалют.ФормаСписка");Если у регистра в конфигураторе создана дополнительная форма списка с собственным именем (например, «ФормаСпискаРасширенная»), укажите её: РегистрСведений.КурсыВалют.Форма.ФормаСпискаРасширенная. Если имя формы не задано явно, платформа откроет основную форму списка, назначенную в свойствах регистра.
Метод ОткрытьФорму работает только в клиентском контексте — в клиентских процедурах форм и обработок. Вызов из серверной процедуры без контекста клиента приведёт к ошибке, потому что на сервере нет пользовательского интерфейса.
Открытие списка с отбором по измерению
Частая задача — показать пользователю не весь регистр, а только записи по конкретному объекту: например, все цены одной номенклатуры или адреса одного контрагента. Для этого во второй параметр ОткрытьФорму передаётся структура с ключом «Отбор», внутри которой — ещё одна структура с именами измерений и значениями отбора.
&НаКлиенте
Процедура ПоказатьЦены(Команда)
Отбор = Новый Структура("Номенклатура", Объект.Номенклатура);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("РегистрСведений.ЦеныНоменклатуры.ФормаСписка", ПараметрыФормы);
КонецПроцедурыИмена полей в структуре отбора должны точно совпадать с именами измерений регистра в конфигураторе, включая регистр букв. Если указать несуществующее измерение, платформа выдаст ошибку при открытии формы. Отбор по ресурсам и реквизитам таким способом работает не всегда — надёжнее использовать отбор только по измерениям, для которых он поддерживается стандартной формой.
Открытая с отбором форма будет иметь фиксированный фильтр: пользователь увидит только нужные записи, а новые записи, созданные из этой формы, автоматически получат значение измерения из отбора. Это удобно для подчинённых списков в формах документов и справочников.
Дополнительные параметры открытия
Метод ОткрытьФорму принимает до семи параметров: имя формы, параметры, владельца, уникальность, окно, навигационную ссылку и описание оповещения о закрытии. На практике чаще всего используются первые четыре.
Параметр «Владелец» связывает открываемую форму с текущей: при закрытии владельца закроется и форма списка. Параметр «Уникальность» определяет, откроется ли новая копия формы или активируется уже открытая. Если передать в уникальность, например, ссылку на объект, то повторный вызов для того же объекта не создаст дубль окна, а активирует существующее.
ОткрытьФорму("РегистрСведений.КурсыВалют.ФормаСписка", , ЭтаФорма, Истина);Если нужно открыть не список, а конкретную запись регистра, передайте в параметрах ключ записи: Новый Структура(\"Ключ\", КлючЗаписи) и откройте форму записи. Предварительно ключ записи формируют через менеджер регистра: РегистрыСведений.ИмяРегистра.СоздатьКлючЗаписи(СтруктураИзмерений).
Открытие в управляемом и обычном приложении
В управляемом приложении (тонкий, толстый и веб-клиент) используется описанный выше метод ОткрытьФорму. В обычном приложении, которое встречается в старых конфигурациях на платформе 8.2 и ранних 8.3, синтаксис другой: форму получают через ПолучитьФорму и затем вызывают метод Открыть.
Сравнение подходов
Асинхронная модель, работает в веб-клиенте и тонком клиенте. Стандарт для современных конфигураций.
Только толстый клиент обычного приложения. Не работает в веб-клиенте, актуально для устаревших решений.
Не требует программирования, но нужны права администратора и ручной поиск регистра в дереве.
При переходе конфигурации с обычного на управляемое приложение все вызовы ПолучитьФорму нужно переписывать на ОткрытьФорму: старый метод в управляемом режиме недоступен или ведёт себя иначе.
Типичные ошибки и их причины
Отдельный случай — регистр сведений, подчинённый регистратору. Для такого регистра в отборе обычно используется измерение «Регистратор», и открывать список без отбора по нему имеет смысл только для административных задач: записей может быть очень много, и форма будет открываться медленно.
Как проверить результат
Как проверить результат
Отображается таблица записей регистра с колонками измерений и ресурсов
Ошибка «Объект не найден» или пустое окно — проверьте имя регистра
В списке только записи с заданным значением измерения, в заголовке или панели виден фильтр
Показаны все записи — имя поля отбора не совпадает с именем измерения
Список доступен под целевой учётной записью
Под администратором работает, под пользователем нет — не хватает прав на регистр
Для отладки программного открытия полезно временно вывести имя формы и параметры через Сообщить() перед вызовом — так видно, что именно передаётся в метод. Если форма открывается, но ведёт себя не так, проверьте, какая форма назначена основной формой списка в свойствах регистра в конфигураторе.
Что важно запомнить
В интерфейсе форму списка открывают через «Все функции» (Ctrl+Shift+F), в коде — через ОткрытьФорму с именем «РегистрСведений.ИмяРегистра.ФормаСписка». Отбор передаётся структурой с ключом «Отбор» по именам измерений. Метод работает только на клиенте, а для больших регистров всегда задавайте отбор.
Частые вопросы
Как открыть форму списка регистра сведений, если его нет в меню?
Нажмите Ctrl+Shift+F, чтобы открыть «Все функции», раскройте ветку «Регистры сведений» и дважды щёлкните по нужному регистру. Если команда недоступна, попросите администратора включить режим «Все функции» в параметрах сеанса или выдать соответствующие права.
Можно ли открыть форму списка с отбором по периоду?
Да, если регистр периодический. В структуру параметров добавьте ключ «Отбор» с полем «Период» или используйте стандартные настройки динамического списка формы. Для сложных условий по диапазону дат надёжнее создать собственную форму списка и настроить отбор в ней.
Почему ОткрытьФорму выдаёт ошибку «Метод объекта не обнаружен»?
Чаще всего вызов выполняется в серверной или внешней по контексту процедуре. Открытие форм возможно только на клиенте — перенесите код в процедуру с директивой &НаКлиенте.
Как открыть форму списка в отдельном окне, а не в текущей вкладке?
Передайте в пятый параметр метода ОткрытьФорму значение «ОтдельноеОкно» или используйте вариант открытия с указанием окна. В типовом сценарии формы списков открываются в рабочей области, и это нормальное поведение платформы.
Чем отличается форма списка от формы записи регистра сведений?
Форма списка показывает таблицу всех записей регистра с возможностью отбора и редактирования. Форма записи открывает одну конкретную запись по ключу, составленному из значений измерений (и периода для периодических регистров).
Почему отбор в открытой форме не срабатывает, хотя код без ошибок?
Проверьте, что имя поля в структуре отбора точно совпадает с именем измерения в конфигураторе, а тип значения соответствует типу измерения. Также убедитесь, что основная форма списка регистра — стандартная: произвольная форма может игнорировать переданный параметр «Отбор».