Почему в управляемой форме списка справочника отсутствует кнопка «Выбрать» и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Причина 1: Форма открывается не в режиме выбора

Самая распространенная причина заключается в том, что система открывает форму в режиме обычного просмотра списка, а не в контексте подбора значения. Управляемая форма — это гибкий объект, поведение которого зависит от параметров, переданных при инициализации. Если форма «не знает», что её открыли для выбора значения в конкретное поле, она ведет себя как обычный реестр данных.

Проанализируем ситуацию: если вы открываете справочник программно, обязательно нужно явно указывать системе цель открытия. Рассмотрим правильный пример программного вызова формы выбора:


Процедура ПриНачалеВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    // Отменяем стандартную обработку, чтобы вызвать форму с нашими параметрами
    СтандартнаяОбработка = Ложь;
    
    // Формируем структуру параметров
    ПараметрыВыбора = Новый Структура;
    ПараметрыВыбора.Вставить("РежимВыбора", Истина);
    ПараметрыВыбора.Вставить("ЗакрыватьПриВыборе", Истина);
    
    // Открываем форму, передавая Элемент в качестве владельца
    ОткрытьФорму("Справочник.ИмяВашегоСправочника.ФормаВыбора", ПараметрыВыбора, Элемент);
    
КонецПроцедуры

Обратите внимание на параметр Владелец (третий параметр функции ОткрытьФорму). Если не передать элемент управления, который инициировал выбор, форма может открыться в режиме просмотра, даже если установлен флаг РежимВыбора.

Причина 2: Свойства элемента «Список» на форме

Выясним причину, связанную с настройками самой формы внутри конфигуратора. За отображение данных в списке отвечает элемент типа Таблица, связанный с динамическим списком. У этого элемента есть специфические свойства, которые могут блокировать появление кнопки выбора.

Разберем, что нужно проверить в конфигураторе:

  1. Откройте нужную форму (списка или выбора).
  2. Выберите в дереве элементов формы основной элемент Список (таблица).
  3. В палитре свойств найдите флаг Режим выбора (Choice Mode). Если он не установлен, таблица не будет реагировать на попытки выбора элемента.
  4. Проверьте свойство Имя команды выбора. По умолчанию там должна стоять стандартная команда, но если поле изменено или очищено, кнопка «Выбрать» может исчезнуть.
  5. Убедитесь, что для командной панели таблицы установлено свойство Автозаполнение, либо кнопка «Выбрать» добавлена туда вручную из состава стандартных команд.

Причина 3: Использование формы списка вместо формы выбора

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

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

Причина 4: Глюки кэша и синхронизации метаданных

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

Если вы столкнулись с необъяснимым поведением формы, попробуйте следующие шаги:

Причина 5: Особенности задач и бизнес-процессов

Ситуация усложняется, если речь идет об объектах типа ЗадачаИсполнителя. В типовых конфигурациях (например, «1С:Документооборот») логика открытия форм часто переопределена в модуле менеджера в обработчике ОбработкаПолученияФормы.

Рассмотрим пример проблемного кода из обсуждения:


Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
    Если ВидФормы = "ФормаОбъекта" Тогда
        // Ошибка: Попытка обращения к Ключу без проверки его наличия
        КодВозврата = БизнесПроцессыИЗадачиВызовСервера.ПолучитьФормуВыполненияЗадачи(Параметры.Ключ);
        // ... логика подмены формы
    КонецЕсли;
КонецПроцедуры

В данном случае, если форма открывается для создания новой задачи или выбора из списка, структура Параметры не содержит поля Ключ (ссылки на объект), что вызывает ошибку или некорректное открытие формы. При работе с задачами важно всегда проверять, какие именно параметры передаются в форму выбора, и не блокировать стандартную обработку там, где это не требуется.

Резюме

Для гарантированного появления кнопки «Выбрать» выполните следующую последовательность действий:

  1. Убедитесь, что форма открывается с параметром РежимВыбора = Истина.
  2. Проверьте наличие флага «Режим выбора» у элемента Таблица на форме.
  3. Сбросьте пользовательские настройки формы через «Изменить форму — Установить стандартные».
  4. Если ничего не помогает, создайте новую чистую форму выбора и назначьте её основной в свойствах справочника.
← На главную