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

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

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

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

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

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

Ниже разобраны все варианты: от простого открытия списка до вызова формы записи с отбором по измерениям из кода, а также типичные ошибки вроде «Объект не найден» и пустой формы новой записи.

Как открыть форму регистра сведений через «Все функции»

Меню «Все функции» — универсальный способ добраться до любого объекта конфигурации, даже если разработчик не вывел его в интерфейс. В типовых конфигурациях оно открывается через кнопку главного меню (круглая кнопка или значок «≡» в левом верхнем углу) → «Все функции». В некоторых сборках пункт скрыт: тогда его включают через «Сервис» → «Параметры» → флажок «Отображать команду "Все функции"».

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

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

Если регистр независимый и непериодический, записи можно редактировать прямо в таблице. Для подчинённых регистратору регистров сведений прямое редактирование недоступно: записи создаются только документом-регистратором, и форма списка работает в режиме просмотра.

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

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

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

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

В коде на встроенном языке для открытия форм используется метод ОткрытьФорму(). Первый параметр — полное имя формы, второй — структура параметров. Для списка регистра сведений вызов выглядит так:

ПараметрыФормы = Новый Структура;

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

Если у регистра создана основная форма списка, имя формы можно сократить до "РегистрСведений.КурсыВалют.ФормаСписка" или вообще "РегистрСведений.КурсыВалют.Форма.ФормаСписка" — платформа подставит основную форму автоматически при вызове без уточнения вида. Для формы записи используется ФормаЗаписи.

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

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

Отбор = Новый Структура;

Отбор.Вставить("Валюта", ВыбраннаяВалюта);

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("Отбор", Отбор);

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

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

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

Для редактирования существующей записи нужно передать ключ записи — структуру со значениями всех измерений (и периода, если регистр периодический), преобразованную менеджером регистра:

СтруктураКлюча = Новый Структура;

СтруктураКлюча.Вставить("Период", ДатаКурса);

СтруктураКлюча.Вставить("Валюта", ВыбраннаяВалюта);

КлючЗаписи = РегистрыСведений.КурсыВалют.СоздатьКлючЗаписи(СтруктураКлюча);

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("Ключ", КлючЗаписи);

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

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

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

Чтобы открыть форму создания записи с предустановленными значениями, используйте параметр «ЗначенияЗаполнения»:

ЗначенияЗаполнения = Новый Структура;

ЗначенияЗаполнения.Вставить("Валюта", ВыбраннаяВалюта);

ЗначенияЗаполнения.Вставить("Период", ТекущаяДатаСеанса());

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);

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

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

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

Открытие формы из конфигуратора и тонкости независимых и подчинённых регистров

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

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

Способы открытия формы

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

Подходит пользователю без доработок; требует прав и иногда включения команды в параметрах

Командный интерфейс

Самый быстрый путь, если разработчик вывел команду; часто с уже установленным отбором

ОткрытьФорму() в коде

Полный контроль: отбор, ключ записи, режим окна; требует навыков разработки

ПолучитьФорму()

Возвращает объект формы до открытия — нужен, чтобы заполнить данные программно; форму затем показывают методом Открыть()

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

Самая частая ошибка — «Ошибка при вызове метода контекста (ОткрытьФорму): Форма не найдена». Причина почти всегда в опечатке в имени регистра или в обращении к форме записи у регистра, подчинённого регистратору, где она не предусмотрена. Проверьте точное имя объекта в конфигураторе — оно чувствительно к написанию, хотя регистр букв значения не имеет.

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

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

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

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

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

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

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

Форма открылась без ошибок
Норма

Отображается список или карточка записи регистра

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

Сообщение «Форма не найдена» или «Ошибка при вызове метода»

Содержимое списка
Норма

Видны записи, отбор соответствует заданным значениям

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

Список пуст при наличии данных — проверьте типы значений отбора

Доступность редактирования
Норма

Кнопки «Создать» и «Записать» активны для независимого регистра

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

Кнопки недоступны — регистр подчинён регистратору или не хватает прав

Ключ записи при открытии формы записи
Норма

Открылась существующая запись с ожидаемыми данными

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

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

Часто задаваемые вопросы

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

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

Можно ли открыть форму регистра сведений из внешней обработки?

Да, код идентичен: ОткрытьФорму("РегистрСведений.Имя.ФормаСписка", Параметры) работает из модулей внешних обработок так же, как из конфигурации. Главное условие — точное имя регистра и достаточные права у пользователя, запустившего обработку.

Почему ОткрытьФорму открывает пустую форму записи, хотя запись есть?

Чаще всего ключ записи собран не полностью: не хватает одного из измерений или периода для периодического регистра. Также проверьте, что значения измерений имеют правильный тип — например, ссылка на элемент справочника, а не его наименование строкой.

Как открыть форму регистра, подчинённого регистратору?

Форму списка открывают с отбором по регистратору: передайте в параметрах Отбор со структурой Регистратор = СсылкаНаДокумент. Форма отдельной записи для такого регистра обычно не используется — движения изменяются через проведение документа.

Чем ОткрытьФорму отличается от ПолучитьФорму?

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

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

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

Итог

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

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