К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как зафиксировать колонки в табличной части документа 1С

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

Когда табличная часть документа содержит десятки колонок — номенклатура, характеристика, количество, цена, скидка, сумма, НДС, склад, — при горизонтальной прокрутке ключевые поля уходят за левый край экрана. Пользователь теряет контекст строки и вынужден постоянно возвращаться к началу таблицы. Фиксация колонок решает эту проблему: выбранные столбцы остаются на месте, а остальные прокручиваются.

В 1С:Предприятии 8.3 фиксация реализуется двумя способами: через настройку формы в конфигураторе (свойства таблицы формы) и программно — через свойства ФиксацияСлева и ФиксацияСправа. Оба подхода доступны разработчику, а в типовых конфигурациях часть настроек может выполнить и пользователь через механизм изменения формы.

Важно понимать: фиксация — это свойство таблицы формы, а не отдельной колонки. Значение задаётся числом: сколько колонок слева (или справа) останутся неподвижными. Ниже разберём оба способа, ограничения, проверку результата и типичные ошибки.

Как работает фиксация колонок в управляемой форме

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

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

Фиксация слева и справа работает одновременно: можно закрепить первые две колонки слева и последнюю («Сумма») справа. Между ними останется прокручиваемая область. Это удобно для широких табличных частей, где итоговое поле должно быть всегда на виду.

Фиксация колонок через конфигуратор

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

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

Обратите внимание: свойство находится у самой таблицы, а не у отдельных колонок. Если вы ищете «фиксацию» в свойствах поля «Номенклатура» — там её нет. Выделяйте именно элемент таблицы формы.

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

Программная фиксация колонок

Когда форму менять нежелательно или фиксация должна зависеть от условий (роль пользователя, настройки учёта), свойство устанавливают кодом. Обычно это делают в обработчике ПриСозданииНаСервере модуля формы.

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.Товары.ФиксацияСлева = 2;

КонецПроцедуры

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

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

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Элементы.Товары.ФиксацияСлева = 2;
	Элементы.Товары.ФиксацияСправа = 1;
КонецПроцедуры

Фиксация через изменение формы в режиме предприятия

В типовых конфигурациях на БСП (Управление торговлей, ERP, Бухгалтерия) пользователь с правами администратора может открыть «Ещё — Изменить форму» и настроить видимость и порядок колонок без конфигуратора. Однако фиксация колонок в этом диалоге, как правило, не редактируется — настройка доступна только разработчику.

Поэтому если требуется закрепить колонки для всех пользователей типовой базы, вариантов два: расширение конфигурации с изменённой формой либо программная установка свойства через расширение модуля формы. Пользовательский «Изменить форму» подходит только для порядка и видимости колонок.

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

Ограничения и особенности поведения

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

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

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

Типичные ошибки
01
Поиск свойства фиксации у колонки вместо таблицы формы — свойство есть только у таблицы целиком
02
Использование в коде имени табличной части вместо имени элемента формы — свойство не применяется или возникает ошибка
03
Фиксация слишком большого числа колонок — прокручиваемая область сжимается до неудобной ширины
04
Проверка на узком наборе данных без прокрутки — кажется, что настройка не сработала, хотя прокручивать просто нечего

Проверка результата после настройки

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

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

Контрольные точки

Как проверить результат

Прокрутка таблицы вправо
Норма

Первые колонки остаются на месте, остальные прокручиваются

Тревожный признак

Все колонки уходят за край — фиксация не задана или задана не той таблице

Код в модуле формы
Норма

Свойство установлено у элемента формы без ошибок при открытии

Тревожный признак

Ошибка «Поле объекта не обнаружено» — неверное имя элемента

Ширина прокручиваемой области
Норма

Остаётся достаточно места для работы с данными

Тревожный признак

Закреплено слишком много колонок, таблицей неудобно пользоваться

FAQ: частые вопросы о фиксации колонок

Можно ли зафиксировать колонки без доступа к конфигуратору?

Штатного способа в пользовательском режиме нет: диалог «Изменить форму» управляет видимостью и порядком колонок, но не фиксацией. Потребуется разработчик, который задаст свойство в конфигураторе, расширении или программно.

Фиксация задана, но колонки не закрепляются. В чём причина?

Чаще всего таблица целиком помещается на экране и прокрутки нет — фиксация визуально не проявляется. Либо свойство установлено не тому элементу формы: проверьте, что изменена именно таблица, отображающая нужную табличную часть.

Можно ли закрепить колонку, которая стоит в середине таблицы?

Нет. Фиксация работает только от краёв: число колонок слева или справа. Чтобы закрепить нужную колонку, переместите её в начало (или конец) списка колонок в дереве элементов формы.

Работает ли фиксация в динамических списках и журналах документов?

Да, свойства ФиксацияСлева и ФиксацияСправа есть у любой таблицы формы, включая динамические списки. Настройка выполняется аналогично — у элемента таблицы в форме списка.

Сохранится ли фиксация после обновления типовой конфигурации?

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

Итог

Что важно запомнить

Фиксация колонок — свойство таблицы формы (ФиксацияСлева и ФиксацияСправа), задаётся числом колонок. Настройка выполняется в конфигураторе, расширении или программно; в пользовательском режиме недоступна. Закрепляйте 1–2 ключевые колонки и проверяйте результат на данных с реальной горизонтальной прокруткой.