Почему при выборе документа в форме отображаются только дата и номер и как это исправить?

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

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

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

Выясняем причину: механизмы автогенерации форм

Давайте разберем по шагам, что происходит «под капотом» платформы. В системе 1С существует разделение на разные типы форм: форма документа, форма списка и форма выбора. Если разработчик создал объект (например, документ УчетЗаказов) и нарисовал для него только форму документа и форму списка, платформа оказывается в ситуации, когда явного указания, как должно выглядеть окно выбора, у нее нет.

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

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

Решение 1: Создание явной формы выбора в конфигураторе

Рассмотрим самый простой и правильный с точки зрения архитектуры способ решения проблемы — создание собственной формы выбора. Это позволит нам самостоятельно определить состав колонок, их порядок и настроить необходимые отборы.

Алгоритм действий:

  1. Откроем дерево метаданных в конфигураторе и найдем наш документ (например, УчетЗаказов).
  2. Перейдем на закладку «Формы».
  3. Нажмем на кнопку добавления (плюсик) и выберем тип формы — «Форма выбора».
  4. В мастере создания формы убедимся, что выбран основной реквизит с типом ДинамическийСписок, и в его настройках указана основная таблица нашего документа.
  5. На этапе конструирования формы выберем те реквизиты, которые должны видеть пользователи (например, Дата, Номер, Контрагент, СуммаДокумента).
  6. После создания формы обязательно проверим, что в окне редактирования объекта (на той же вкладке «Формы») в поле «Форма выбора» выбрана именно наша новая форма.

Теперь при нажатии на кнопку выбора в любом месте системы платформа будет использовать этот макет, и пользователь увидит все необходимые данные.

Решение 2: Использование стандартных настроек без создания формы

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

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

Решение 3: Программное управление выбором через «НачалоВыбора»

Иногда возникают ситуации, когда для одного и того же документа в разных контекстах нужны разные формы выбора. Рассмотрим пример, когда мы хотим программно вмешаться в процесс открытия формы. Для этого используем событие НачалоВыбора у элемента формы (поля ввода).

Посмотрим на пример кода, который позволяет переопределить стандартное поведение:


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

В этом примере мы используем параметр СтандартнаяОбработка = Ложь, чтобы остановить автоматический механизм платформы, и вызываем метод ОткрытьФорму(), передавая в него структуру параметров. Это дает нам полный контроль над тем, что увидит пользователь.

Дополнительные факторы: почему колонки могут исчезать?

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

  1. Ограничения прав доступа (RLS): Если в системе настроены права доступа на уровне записей и у пользователя нет прав на чтение конкретного поля (например, Сумма), то даже в самой красивой форме выбора эта колонка будет скрыта или пуста для этого конкретного пользователя. Проверьте роли и права доступа в конфигураторе.
  2. Функциональные опции: В современных конфигурациях (БП 3.0, УТ 11) многие реквизиты привязаны к функциональным опциям. Например, если в настройках программы отключен учет по складам, то колонка Склад автоматически исчезнет изо всех форм, включая форму выбора, даже если она добавлена туда вручную. Проверьте, включена ли соответствующая константа в режиме «1С:Предприятие».

Рекомендации по настройке динамического списка

При создании формы выбора мы работаем с объектом ДинамическийСписок. Чтобы форма работала быстро и корректно, разберем важные настройки его свойств:

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

← На главную