Как быстро найти реквизит или элемент управления на перегруженной обычной форме в 1С?

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

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

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

Способ 1. Проверка через окно «Размещение данных»

Самый быстрый способ выяснить, привязан ли реквизит объекта к визуальному элементу формы — воспользоваться встроенным мастером размещения данных.

  1. Откроем нужную форму в конфигураторе.
  2. В главном меню перейдем в пункт Форма и выберем команду Размещение данных... (или нажмем соответствующую кнопку на командной панели редактора формы).
  3. В открывшемся окне отобразится полное дерево реквизитов объекта и формы. Проанализируем список: если напротив нужного реквизита (например, Подразделение) установлен флажок, значит, он размещен на форме. Если флажка нет — реквизит визуально не выведен.

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

Способ 2. Поиск через список элементов управления формы

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

  1. Откроем форму документа в конфигураторе.
  2. Нажмем сочетание клавиш Ctrl + Shift + L (или через меню Форма → Список элементов управления).
  3. В открывшемся диалоговом окне отображаются все элементы, принадлежащие данной форме. Кликнем на любую строку списка для передачи фокуса.
  4. Нажмем сочетание клавиш Ctrl + F, введем наименование искомого реквизита или элемента (например, Подразделение) и нажмем клавишу Enter.
  5. Для перехода по найденным совпадениям используем клавишу F3.
  6. При выборе элемента в этом списке конфигуратор автоматически выделит соответствующий элемент рамкой на макете формы.

Способ 3. Проверка слоев, страниц и порядка обхода

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

  1. Механизм слоев формы. В обычном приложении элементы могут быть привязаны к определенному слою (свойство Слой). Откроем пункт меню Форма → Слои и проверим, включена ли видимость всех слоев в конфигураторе. Также в коде модуля формы видимость может переключаться через свойство ТекущийСлой.
  2. Многостраничные панели. Элемент управления может быть вложен в объект Панель и находиться на неактивной вкладке (странице). При переключении страниц панели в редакторе формы отображаются только элементы текущей закладки.
  3. Порядок обхода. Перейдем в меню Форма → Порядок обхода. В этом окне отображается строгая иерархия визуального обхода элементов по клавише Tab. Выбор элемента в данном окне сразу фокусирует его границы на форме.
  4. Наложение и нулевые размеры. Поле ввода может иметь нулевую ширину, быть перекрыто рамкой группы (декорацией) или вынесено за видимые координаты формы.

Способ 4. Поиск элемента по свойству «Данные» через программный код

В обычных формах имя элемента управления может отличаться от имени реквизита, с которым он связан (например, элемент назван разработчиком как ПолеВвода3, а в свойстве Данные указано Подразделение). В таком случае поиск по имени элемента не даст результата.

Рассмотрим, как найти элемент по пути к данным программно. Для этого в процедуре ПриОткрытии модуля формы или через точку останова в отладчике выполним следующий код:


Для Каждого ТекЭлемент Из ЭлементыФормы Цикл
    Попытка
        Если ТекЭлемент.Данные = "Подразделение" Или ТекЭлемент.Данные = "ЭтотОбъект.Подразделение" Тогда
            Сообщить("Элемент найден! Имя элемента на форме: " + ТекЭлемент.Имя);
        КонецЕсли;
    Исключение
        // У некоторых элементов управления (например, Надпись или Разделитель) свойство Данные отсутствует
    КонецПопытки;
КонецЦикла;

Способ 5. Поиск ссылок в объекте

Чтобы окончательно убедиться, задействован ли реквизит в форме (в интерфейсе или в коде модуля формы), используем глобальный поиск связей:

  1. В дереве метаданных конфигуратора найдем нужный документ и раскроем список его реквизитов.
  2. Нажмем правой кнопкой мыши на реквизите и выберем команду Поиск ссылок в объекте.
  3. В отчете о ссылках проанализируем результаты. Если форма отсутствует в списке ссылок, значит, реквизит не используется в ее элементах и не вызывается в текстах процедур модуля формы.
← На главную