Почему на форме 1С появляются элементы, которых нет в конфигураторе: разбираем механизмы динамического интерфейса

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

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

Причина №1: Динамическая подмена формы в модуле менеджера

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

Для диагностики этого механизма необходимо открыть Модуль менеджера соответствующего справочника и найти в нем обработчик события ОбработкаПолученияФормы. Рассмотрим пример кода, который может там находиться:


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

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

Причина №2: Подсистема «Контактная информация» (БСП)

Если мы убедились, что форма выбрана верно, но элемент «Телефон» все равно берется «из ниоткуда», скорее всего, работает Библиотека стандартных подсистем (БСП). В современных решениях 1С поля адресов и телефонов не рисуются статично. На форме создается пустая группа-контейнер, а наполнение происходит программно при открытии.

Проанализируем процесс создания таких элементов. В модуле формы (обычно в процедуре ПриСозданииНаСервере) вызываются методы общих модулей, например:


// В модуле формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Подготовка параметров контактной информации
    ПараметрыКИ = УправлениеКонтактнойИнформацией.ПараметрыПриСозданииНаСервере(Объект, "ГруппаКонтактнаяИнформация");
    УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыКИ);
    
КонецПроцедуры

Даже если вы закомментируете этот код в самой форме, элементы могут добавляться через общие модули с постфиксом «Переопределяемый» или через механизмы расширений. Программа считывает данные из справочника ВидыКонтактнойИнформации и для каждой записи (Телефон, Email, Юридический адрес) программно выполняет команду Элементы.Добавить(). Посмотрим на логику системы: она видит, что для партнеров разрешен ввод телефона, и сама создает поле ввода в указанной группе.

Причина №3: Пользовательские настройки и «Изменить форму»

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

Важные моменты, которые стоит проверить:

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

Чтобы проверить эту версию, попробуйте сбросить настройки формы (Еще — Изменить форму — Установить стандартные настройки). Если после этого элемент примет «нормальный» вид, значит, дело было в пользовательских правках.

Причина №4: Двуязычные конфигурации и мультиязычность

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

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

Методика поиска «призрачных» элементов

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

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

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

← На главную