Разработка и Конфигурация · 9 мин
Как зафиксировать колонки в табличной части документа 1С
Как закрепить колонки в табличной части документа 1С: настройка фиксации в форме, программное закрепление колонок, решение типичных проблем и ответы на вопросы.
Когда табличная часть документа содержит десятки колонок — номенклатура, характеристика, количество, цена, скидка, сумма, НДС, склад, — при горизонтальной прокрутке ключевые поля уходят за левый край экрана. Пользователь теряет контекст строки и вынужден постоянно возвращаться к началу таблицы. Фиксация колонок решает эту проблему: выбранные столбцы остаются на месте, а остальные прокручиваются.
В 1С:Предприятии 8.3 фиксация реализуется двумя способами: через настройку формы в конфигураторе (свойства таблицы формы) и программно — через свойства ФиксацияСлева и ФиксацияСправа. Оба подхода доступны разработчику, а в типовых конфигурациях часть настроек может выполнить и пользователь через механизм изменения формы.
Важно понимать: фиксация — это свойство таблицы формы, а не отдельной колонки. Значение задаётся числом: сколько колонок слева (или справа) останутся неподвижными. Ниже разберём оба способа, ограничения, проверку результата и типичные ошибки.
Как работает фиксация колонок в управляемой форме
В управляемых формах табличная часть документа отображается элементом «Таблица формы». У этого элемента есть два свойства: ФиксацияСлева и ФиксацияСправа. Они принимают целое число — количество колонок, которые будут закреплены у соответствующего края таблицы. По умолчанию оба свойства равны нулю, то есть фиксация отключена.
Платформа учитывает порядок колонок в дереве элементов формы, а не их текущее визуальное расположение. Если пользователь в режиме предприятия перетащил колонку в другое место, фиксироваться будет заданное число колонок с учётом этого порядка. Поэтому при проектировании формы важно расположить ключевые поля (например, «Номенклатура») первыми в списке колонок.
Фиксация слева и справа работает одновременно: можно закрепить первые две колонки слева и последнюю («Сумма») справа. Между ними останется прокручиваемая область. Это удобно для широких табличных частей, где итоговое поле должно быть всегда на виду.
Фиксация колонок через конфигуратор
Самый надёжный способ — задать фиксацию на этапе разработки формы. Настройка сохраняется в конфигурации и применяется для всех пользователей, не зависит от их индивидуальных настроек и не слетает при обновлении релиза, если форма не переопределяется расширением.
- 1Откройте конфигуратор и найдите нужный документ в дереве конфигурации
- 2Откройте основную форму документа (обычно ФормаДокумента)
- 3В дереве элементов формы выделите таблицу, связанную с табличной частью (например, «Товары»)
- 4В палитре свойств найдите «ФиксацияСлева» и укажите число закрепляемых колонок, например 2
- 5При необходимости задайте «ФиксацияСправа» для колонок у правого края
- 6Обновите конфигурацию базы данных и откройте документ в режиме предприятия
- 7Прокрутите таблицу вправо и убедитесь, что первые колонки остались на месте
Обратите внимание: свойство находится у самой таблицы, а не у отдельных колонок. Если вы ищете «фиксацию» в свойствах поля «Номенклатура» — там её нет. Выделяйте именно элемент таблицы формы.
Если форма документа типовая и конфигурация на поддержке, прямое изменение потребует включения возможности изменения. Более безопасный вариант — вынести настройку в расширение конфигурации, чтобы не усложнять будущие обновления.
Программная фиксация колонок
Когда форму менять нежелательно или фиксация должна зависеть от условий (роль пользователя, настройки учёта), свойство устанавливают кодом. Обычно это делают в обработчике ПриСозданииНаСервере модуля формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Товары.ФиксацияСлева = 2;
КонецПроцедуры
Здесь «Товары» — имя элемента таблицы формы, а не имя табличной части. Имена обычно совпадают, но если разработчик переименовал элемент, код сработает только с именем элемента формы. Проверить имя можно в конфигураторе в дереве элементов формы.
Если фиксацию нужно менять динамически — например, закреплять колонку «Склад» только когда включён ордерный учёт, — вынесите установку свойства в отдельную процедуру и вызывайте её при изменении соответствующих реквизитов.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Товары.ФиксацияСлева = 2;
Элементы.Товары.ФиксацияСправа = 1;
КонецПроцедурыФиксация через изменение формы в режиме предприятия
В типовых конфигурациях на БСП (Управление торговлей, ERP, Бухгалтерия) пользователь с правами администратора может открыть «Ещё — Изменить форму» и настроить видимость и порядок колонок без конфигуратора. Однако фиксация колонок в этом диалоге, как правило, не редактируется — настройка доступна только разработчику.
Поэтому если требуется закрепить колонки для всех пользователей типовой базы, вариантов два: расширение конфигурации с изменённой формой либо программная установка свойства через расширение модуля формы. Пользовательский «Изменить форму» подходит только для порядка и видимости колонок.
Индивидуальные настройки формы хранятся в пользовательском хранилище. Если после внедрения фиксации пользователь сообщает, что «ничего не изменилось», проверьте, не перекрывают ли его сохранённые настройки новый вид формы — иногда помогает сброс настроек формы в «Ещё — Установить стандартные настройки».
Ограничения и особенности поведения
Фиксация не работает, если таблица помещается на экране целиком: горизонтальная прокрутка отсутствует, и закреплять нечего. Это нормальное поведение, а не ошибка настройки. Проверяйте фиксацию на данных, где колонки реально не влезают в ширину окна.
В обычных формах (толстый клиент, обычное приложение) механизм другой: там используется свойство табличного поля, и настройка выполняется через конфигуратор похожим образом, но состав свойств отличается. Инструкция выше относится к управляемым формам, которые используются в подавляющем большинстве современных конфигураций.
При большом числе зафиксированных колонок прокручиваемая область сужается, и работать с таблицей становится неудобно. Практичный ориентир — закреплять одну-две ключевые колонки слева и не более одной справа.
Проверка результата после настройки
После изменения формы или кода откройте документ с заполненной табличной частью и прокрутите таблицу вправо до конца. Зафиксированные колонки должны остаться у левого края, а между ними и прокручиваемой областью появится визуальный разделитель.
Проверьте форму у разных пользователей и при разном масштабе экрана. Если у части пользователей сохранены индивидуальные настройки формы, убедитесь, что порядок колонок в их настройках не сдвигает ключевые поля за пределы зафиксированной зоны.
Как проверить результат
Первые колонки остаются на месте, остальные прокручиваются
Все колонки уходят за край — фиксация не задана или задана не той таблице
Свойство установлено у элемента формы без ошибок при открытии
Ошибка «Поле объекта не обнаружено» — неверное имя элемента
Остаётся достаточно места для работы с данными
Закреплено слишком много колонок, таблицей неудобно пользоваться
FAQ: частые вопросы о фиксации колонок
Можно ли зафиксировать колонки без доступа к конфигуратору?
Штатного способа в пользовательском режиме нет: диалог «Изменить форму» управляет видимостью и порядком колонок, но не фиксацией. Потребуется разработчик, который задаст свойство в конфигураторе, расширении или программно.
Фиксация задана, но колонки не закрепляются. В чём причина?
Чаще всего таблица целиком помещается на экране и прокрутки нет — фиксация визуально не проявляется. Либо свойство установлено не тому элементу формы: проверьте, что изменена именно таблица, отображающая нужную табличную часть.
Можно ли закрепить колонку, которая стоит в середине таблицы?
Нет. Фиксация работает только от краёв: число колонок слева или справа. Чтобы закрепить нужную колонку, переместите её в начало (или конец) списка колонок в дереве элементов формы.
Работает ли фиксация в динамических списках и журналах документов?
Да, свойства ФиксацияСлева и ФиксацияСправа есть у любой таблицы формы, включая динамические списки. Настройка выполняется аналогично — у элемента таблицы в форме списка.
Сохранится ли фиксация после обновления типовой конфигурации?
Если настройка сделана через расширение конфигурации или кодом в расширении — да, обновления пройдут штатно. Если форма изменена напрямую в основной конфигурации, при обновлении может потребоваться ручное сравнение и объединение форм.
Что важно запомнить
Фиксация колонок — свойство таблицы формы (ФиксацияСлева и ФиксацияСправа), задаётся числом колонок. Настройка выполняется в конфигураторе, расширении или программно; в пользовательском режиме недоступна. Закрепляйте 1–2 ключевые колонки и проверяйте результат на данных с реальной горизонтальной прокруткой.