Почему в поле ввода не отображается кнопка выбора типа документа (буква Т) в 1С?

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

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

Однако на практике разработчики сталкиваются с ситуацией, когда у одних пользователей кнопка «Т» доступна, а у других (часто у администраторов или пользователей с расширенными правами) она исчезает, оставляя только кнопку выбора «...». Разберем по шагам, почему это происходит и как решить проблему.

Причины исчезновения кнопки выбора типа

Поведение платформы 1С при отображении кнопки выбора типа подчиняется строгим правилам работы элемента управления ПолеВвода. Выясним основные причины, из-за которых кнопка «Т» пропадает:

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

Способ 1. Очистка значения интерактивно и горячими клавишами

Проанализируем самый простой способ проверки поведения поля непосредственно в режиме «1С:Предприятие»:

  1. Установим курсор в проблемное поле ввода.
  2. Нажмем комбинацию горячих клавиш Shift + F4 (очистка значения).
  3. Если в свойствах поля включена кнопка очистки (крестик «Х»), нажмем на нее.

Если после очистки значения кнопка «Т» появилась, это подтверждает, что в поле хранилась пустая ссылка ранее выбранного типа.

Способ 2. Очистка сохраненных настроек отчета или обработки

Если проблема возникает только у определенных пользователей, необходимо удалить сохраненные пользовательские данные из информационной базы:

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

Способ 3. Программная инициализация реквизита значением Неопределено

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

Откроем модуль формы отчета или обработки и добавим сброс реквизита в процедуре ПриОткрытии или ПередОткрытием:


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

Способ 4. Программный вызов диалога выбора типа

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

Назначим для элемента управления обработчик события НачалоВыбора:


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

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

← На главную