Справочники и Данные · 13 мин
Как открыть форму справочника в 1С
Как открыть форму справочника 1С: через интерфейс, командой ОткрытьФорму, с отбором и параметрами. Примеры кода для обычных и управляемых форм, типичные ошибки.
Форма справочника в 1С открывается двумя принципиально разными путями: интерактивно — пользователем через интерфейс программы, и программно — из встроенного языка с помощью методов ОткрытьФорму() и ПолучитьФорму(). Первый вариант нужен обычным пользователям для повседневной работы, второй — разработчикам и администраторам при доработке конфигураций, создании обработок и автоматизации действий.
Выбор способа зависит от задачи. Если нужно просто посмотреть или отредактировать элемент справочника «Номенклатура», достаточно интерфейса. Если требуется открыть форму конкретного элемента по кнопке в собственной обработке, передать отбор, запретить редактирование или открыть форму создания нового элемента с заполненными реквизитами — без программного вызова не обойтись.
Ниже разобраны оба подхода: работа через интерфейс в режиме «Предприятие», программное открытие формы списка и формы элемента, передача параметров и отборов, а также различия между обычными и управляемыми формами. Отдельно приведены типичные ошибки и способы проверить, что форма открылась корректно.
Как открыть справочник через интерфейс в режиме «Предприятие»
В типовых конфигурациях на управляемом интерфейсе (например, «1С:Бухгалтерия 8», «1С:Управление торговлей») справочники сгруппированы по разделам. Основной путь: откройте нужный раздел на панели разделов (например, «Справочники», «НСИ и администрирование» или «Продажи») и выберите нужный справочник в панели навигации или в подменю.
Универсальный способ, работающий почти в любой конфигурации, — меню «Все функции». Нажмите кнопку главного меню (круглая кнопка со стрелкой в левом верхнем углу) или сочетание клавиш и выберите пункт «Все функции». В открывшемся дереве раскройте ветку «Справочники» и дважды щёлкните по нужному объекту — откроется форма списка.
Если пункт «Все функции» не отображается, его нужно включить: откройте «Сервис → Параметры» и установите флажок «Отображать команду "Все функции"». Учтите, что право просмотра конкретного справочника определяется ролями пользователя: если справочник не виден ни в разделах, ни в «Все функции», вероятно, у учётной записи нет прав на этот объект.
Из формы списка элемент открывается двойным щелчком по строке или кнопкой «Изменить» (F2). Создать новый элемент можно кнопкой «Создать» (Insert), скопировать существующий — клавишей F9 в большинстве конфигураций.
- 1Перейдите в раздел, где размещён справочник, или откройте меню «Все функции»
- 2Раскройте ветку «Справочники» и дважды щёлкните по нужному объекту
- 3В форме списка дважды щёлкните по строке элемента, чтобы открыть его карточку
- 4Проверьте, что форма открылась и данные доступны для чтения или редактирования
Программное открытие формы списка справочника
Для управляемых форм основной метод — ОткрытьФорму(). Он доступен в клиентском контексте и принимает имя формы, параметры, владельца и другие аргументы. Простейший вызов формы списка выглядит так:
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");
Имя формы строится по шаблону Справочник.ИмяСправочника.ФормаСписка. Если в конфигураторе для справочника создана собственная форма списка с другим именем, указывается она: Справочник.Номенклатура.Форма.МояФормаСписка. Если имя формы не указывать вовсе и вызвать ОткрытьФорму("Справочник.Номенклатура"), платформа откроет основную форму, назначенную в конфигураторе.
Метод ОткрытьФорму() асинхронен по своей природе в веб-клиенте и тонком клиенте: он инициирует открытие, а код продолжает выполняться. Если после открытия нужно обработать результат (например, выбранное пользователем значение), используйте ОткрытьФормуМодально() с описанием оповещения либо передавайте описание оповещения о закрытии через параметр ОписаниеОповещенияОЗакрытии — в современных конфигурациях модальные вызовы запрещены режимом совместимости, поэтому предпочтителен второй вариант.
Как открыть форму элемента справочника
Чтобы открыть карточку конкретного элемента, в параметры формы передаётся ключ Ключ со ссылкой на элемент. Ссылку можно получить любым способом: поиском по коду, наименованию, реквизиту или из реквизита другого объекта.
НайденныйЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000123");
Если Не НайденныйЭлемент.Пустая() Тогда
ПараметрыФормы = Новый Структура("Ключ", НайденныйЭлемент);
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыФормы);
Иначе
Сообщить("Элемент не найден");
КонецЕсли;
Обязательно проверяйте, что ссылка не пустая, перед передачей в параметр Ключ. Если передать пустую ссылку, поведение зависит от конфигурации: чаще всего откроется форма с ошибкой или пустая карточка, что дезориентирует пользователя.
Для открытия формы создания нового элемента параметр Ключ не передаётся вовсе — достаточно вызвать ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта"). Если нужно открыть форму нового элемента с предзаполненными реквизитами, используйте параметр ЗначенияЗаполнения:
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Родитель", ГруппаТоваров);
ЗначенияЗаполнения.Вставить("Наименование", "Новая позиция");
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыФормы);
Параметр ЗначенияЗаполнения обрабатывается стандартным обработчиком ОбработкаЗаполнения объекта, поэтому заполнятся только те реквизиты, которые предусмотрены логикой конфигурации. Реквизиты, не задействованные в обработчике заполнения, могут быть проигнорированы — это нужно проверять на конкретной конфигурации.
Открытие формы списка с отбором и параметрами
Частая задача — открыть список справочника, уже отфильтрованный по условию: например, показать только элементы конкретной группы или контрагентов с определённым признаком. Для этого в параметры формы передаётся структура Отбор:
Отбор = Новый Структура("Родитель", НужнаяГруппа);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка", ПараметрыФормы);
Отбор применяется к динамическому списку формы. Пользователь сможет его снять, если у формы не установлен запрет изменения настроек. Если нужно жёстко ограничить состав данных, отбор устанавливается программно в обработчике ПриСозданииНаСервере формы через Список.Отбор с фиксацией элементов отбора.
Дополнительные полезные параметры формы списка: ТекущаяСтрока — позиционирует курсор на указанном элементе после открытия, РежимВыбора — открывает форму в режиме выбора (удобно для подбора значения), ЗакрыватьПриВыборе — управляет закрытием после выбора. Набор поддерживаемых параметров зависит от конкретной формы: стандартные параметры обрабатываются платформой, но прикладные формы могут добавлять свои.
Перед тем как передавать отбор по реквизиту, убедитесь, что этот реквизит индексирован или хотя бы доступен для отбора в динамическом списке. Отбор по неиндексированному реквизиту на большом справочнике может заметно замедлить открытие формы.
Различия для обычных и управляемых форм
В конфигурациях на обычных формах (старые версии «1С:Управление торговлей 10», «1С:Бухгалтерия 1.6» и подобные) используется другой подход — метод ПолучитьФорму():
ФормаСписка = Справочники.Номенклатура.ПолучитьФормуСписка();
ФормаСписка.Открыть();
ФормаЭлемента = НайденныйЭлемент.ПолучитьФорму();
ФормаЭлемента.Открыть();
Здесь сначала создаётся объект формы, затем вызывается её метод Открыть() или ОткрытьМодально(). Такой код не работает в управляемом приложении и в веб-клиенте, поэтому при переносе разработок на современную платформу его нужно переписывать на ОткрытьФорму().
Как понять, какой у вас режим: посмотрите на интерфейс. Управляемое приложение имеет панель разделов и «плиточный» вид команд, обычное — классические выпадающие меню в стиле старых версий Windows. Точный ответ даёт конфигуратор: свойство конфигурации «Режим использования модальности» и «Основной режим запуска» показывают, какие формы используются.
Сравнение способов открытия
Подходит пользователю для повседневной работы. Не требует знания кода, но не позволяет автоматизировать действия и передать параметры.
Стандарт для управляемых форм и веб-клиента. Позволяет передать ключ, отбор, значения заполнения. Работает только в клиентском контексте.
Применяется только в обычных формах старых конфигураций. Несовместим с управляемым приложением и веб-клиентом.
Типичные ошибки и как их избежать
Самая распространённая ошибка — неверное имя формы в строке вызова. Платформа сообщит «Ошибка при вызове метода контекста (ОткрытьФорму): Форма не найдена». Проверьте точное имя справочника в конфигураторе (это имя объекта метаданных, а не синоним) и правильность шаблона пути к форме, включая регистр-независимое, но точное по буквам написание.
Вторая группа ошибок связана с контекстом выполнения. ОткрытьФорму() нельзя вызвать на сервере или в фоновом задании — там нет пользовательского интерфейса. Если логика выполняется в серверной процедуре, открытие формы нужно перенести в клиентский вызов, а с сервера возвращать только данные (например, найденную ссылку).
Третья причина проблем — права доступа. Если у пользователя нет права «Просмотр» на справочник, программное открытие формы завершится ошибкой нарушения прав доступа, даже если код написан верно. Проверяйте роли в конфигураторе или тестируйте под пользователем с такими же правами, как у конечного сотрудника.
Как проверить результат и когда обращаться к специалисту
Признаки корректного открытия формы: появилось окно с ожидаемым заголовком, в форме списка применён заданный отбор (видно по строке отбора над таблицей), в форме элемента открыт именно тот объект, ссылка на который передавалась. Если форма открывается, но данные не те — проблема в параметрах, а не в механизме открытия.
Самостоятельная доработка кода безопасна в копии информационной базы. Никогда не проверяйте новые обработки и изменения конфигурации сразу на рабочей базе: ошибка в обработчике формы может блокировать открытие справочника для всех пользователей. Перед изменениями сделайте выгрузку базы через конфигуратор или средствами СУБД.
Если требуется доработка стандартной формы типовой конфигурации (добавление кнопки, своего отбора, проверки при открытии), а конфигурация находится на поддержке, лучше поручить работу специалисту по 1С: некорректное изменение типового модуля усложнит последующие обновления. Безопасная альтернатива — использование расширений конфигурации, которые не затрагивают типовой код.
Что важно запомнить
Пользователь открывает справочник через разделы меню или «Все функции». Программно в управляемых формах используется ОткрытьФорму() с параметром «Ключ» для элемента и «Отбор» для списка. Вызов возможен только в клиентском контексте, а ссылку перед передачей нужно проверять на пустоту.
Частые вопросы
Как открыть форму справочника, если её нет в меню программы?
Используйте команду «Все функции» из главного меню: раскройте ветку «Справочники» и выберите нужный объект. Если команда скрыта, включите её в «Сервис → Параметры» флажком «Отображать команду "Все функции"». Отсутствие справочника и там означает нехватку прав — обратитесь к администратору.
Чем ОткрытьФорму() отличается от ПолучитьФорму()?
ОткрытьФорму() — метод для управляемых форм и веб-клиента, он открывает форму по имени и параметрам. ПолучитьФорму() использовался в обычных формах старых конфигураций и в современном интерфейсе не работает. При доработке актуальных конфигураций применяйте только ОткрытьФорму().
Как открыть форму элемента по нажатию кнопки в своей обработке?
В клиентском обработчике команды кнопки получите ссылку на нужный элемент (из реквизита обработки или поиском), сформируйте структуру с параметром «Ключ» и вызовите ОткрытьФорму("Справочник.Имя.ФормаОбъекта", ПараметрыФормы). Перед вызовом проверьте, что ссылка не пустая.
Почему при открытии формы возникает ошибка «Форма не найдена»?
Почти всегда причина в неверном имени: указывается синоним справочника вместо имени объекта метаданных, опечатка или неправильный шаблон пути. Откройте конфигуратор, скопируйте точное имя справочника и проверьте, какие формы у него созданы — если нужной формы нет, используйте стандартные «ФормаСписка» или «ФормаОбъекта».
Можно ли открыть форму справочника из фонового задания или с сервера?
Нет. Открытие формы — интерактивная операция, доступная только в клиентском контексте. Из серверной процедуры или фонового задания верните нужные данные (например, ссылку) в клиентский код и вызовите ОткрытьФорму() уже там.
Как открыть список справочника сразу с отбором по группе?
Передайте в параметры формы структуру с ключом «Отбор», внутри которой указан реквизит «Родитель» и нужная группа: ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Родитель", Группа)). Форма списка откроется уже отфильтрованной, но пользователь сможет снять этот отбор вручную.