Как добраться до скрытых колонок широкой табличной части на маленькой форме в 1С?

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

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

Способ 1: Использование списка элементов управления формы

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

  1. Откройте нужную форму в конфигураторе.
  2. Нажмите комбинацию клавиш Ctrl+Shift+L или выберите в меню команду «Список элементов управления формы».
  3. В появившемся окне найдите нужное поле ввода, относящееся к табличной части.
  4. Кликните по нему, чтобы выделить, и перейдите к его свойствам.

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

Способ 2: Временное изменение размеров формы

Проанализируем самый очевидный, но не всегда удобный вариант, который часто первым приходит в голову.

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

Этот способ работает, но он крайне неудобен, если форма имеет сложную привязку элементов — при изменении размеров «верстка» может разъехаться, и придется тратить время на ее восстановление.

Способ 3: Доступ через свойство «Колонки» в палитре свойств (Оптимальный метод)

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

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

Способ 4: Временное скрытие соседних колонок через «Размещение данных»

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

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

Способ 5: Временный сдвиг (изменение порядка) колонок

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

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

Способ 6: Программное назначение обработчиков

Выясним, как поступить, если визуально добираться до элемента управления вообще не хочется или колонка генерируется динамически. Мы можем назначить события программно прямо в модуле формы. В обычных формах для этого используется метод УстановитьДействие. Лучше всего это делать в обработчике ПриОткрытии.

Посмотрим на пример кода:


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

// Сама процедура обработчика (должна быть экспортируемой, если назначается программно)
Процедура ТоварыСкрытоеПолеПриИзменении(Элемент)
    Сообщить("Событие программно назначенного обработчика сработало!");
КонецПроцедуры

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

← На главную