Ширина колонок в списках, отчётах и макетах 1С: от мыши до кода

· 9 мин

Содержание

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

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

Ширина колонки в списке и табличной части: мышью

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

  1. Наведите курсор на вертикальную границу между двумя заголовками колонок.
  2. Когда курсор станет двойной стрелкой, зажмите левую кнопку.
  3. Потяните влево или вправо и отпустите.

Меняется ширина колонки слева от границы. Соседние колонки сдвигаются, а если места не хватает, внизу появляется горизонтальная прокрутка.

Что ещё умеет мышь:

  • 🖱 Двойной щелчок по границе обычно подгоняет колонку под содержимое. Если не сработало, потяните вручную.
  • 🔀 Перетаскивание заголовка меняет порядок колонок, а не ширину.
  • 📏 Колонка, у которой разработчик задал растягивание, занимает всё свободное место и мышью почти не регулируется. Её ширину меняют соседние колонки.

Если нужной колонки в списке нет вообще, дело не в ширине. Её надо включить через настройку списка, об этом ниже.

Где 1С запоминает ширину и как её вернуть

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

Отсюда два следствия:

  • Бухгалтер не может «растянуть колонку всем». У каждого своя ширина.
  • Если сотрудник жалуется на «кривой» список, то у него в настройках накопилась каша. У вас всё в порядке.

Сброс к стандартному виду

Откройте проблемный список, найдите меню Ещё в командной панели формы и выберите пункт Изменить форму…. В открывшемся окне есть кнопка возврата стандартных настроек. После её нажатия ширина, видимость и порядок колонок возвращаются к тому, что задумал разработчик.

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

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

Список с динамическим отбором и группировкой

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

Ширина столбцов в отчёте и в печатной форме

Отчёт и печатная форма выводятся в табличный документ. Он устроен иначе, чем список: это сетка ячеек, как в электронной таблице, и ширина колонки относится ко всей сетке, а не к одному «полю».

Что можно сделать руками:

  • Протянуть границу колонки в заголовке сетки, если у табличного документа включены заголовки строк и колонок. В отчётах они обычно скрыты.
  • Если заголовков нет, ширину можно менять только через границы самой ячейки в макете (это уже работа разработчика, см. следующие разделы).

Поэтому типичная жалоба «в отчёте всё сжато, цифры показываются как ###» решается не мышью. Знаки решётки вместо числа означают, что число не помещается в ячейку. Варианты:

Что сделатьКогда помогаетРиск
Уменьшить шрифт в настройках отчётаКолонка чуть-чуть не хватаетПечать мелким шрифтом
Убрать лишние колонки из варианта отчётаВ отчёте много лишних показателейИсчезнет нужная информация
Поправить макет или параметры оформленияОтчёт делает разработчикНужен доступ к конфигурации
Выгрузить в Excel и растянуть тамНужно срочно и один разФорматирование не сохранится в 1С

Выгрузка в Excel — запасной путь, но не решение: в следующий раз придётся делать то же самое.

Настройка ширины в варианте отчёта и в настройках списка

Вариант отчёта хранит состав колонок, группировки, отборы и оформление. Ширина «в пикселях» там не хранится так, как в списке, поэтому сохранённый вариант не гарантирует, что вы увидите те же размеры.

Что реально можно сделать пользователю:

  1. Открыть отчёт и нажать Ещё → Изменить вариант… (в части отчётов эта команда вынесена кнопкой Настройки).
  2. Убрать из вывода колонки, которые не нужны.
  3. Сократить число показателей: у каждой колонки с суммой своя минимальная ширина по формату числа.
  4. Сохранить вариант под своим именем, чтобы не повторять настройку каждый раз.

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

Ширина колонки из кода: форма и табличный документ

Здесь два разных объекта, и код у них разный. Путают их постоянно.

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Элементы.СписокНоменклатура.Ширина = 40;
    Элементы.СписокЦена.Ширина = 12;
КонецПроцедуры

Здесь СписокНоменклатура и СписокЦена — имена колонок вашей таблицы. Подставьте свои.

Что стоит знать:

  • Ширину поля меняют на клиенте, процедура должна быть клиентской или выполняться при открытии формы.
  • Если у колонки включено растягивание по горизонтали, жёстко заданная ширина будет работать иначе. Решите, что важнее: фиксированная ширина или заполнение свободного места.
  • Сохранённая пользовательская настройка применяется поверх значений разработчика. Поэтому после смены ширины в конфигураторе у части пользователей ничего не меняется: им нужно сбросить настройки формы (см. выше).
  • Проверяйте результат под обычным пользователем, а не только под администратором. У администратора настройки формы накапливаются годами и маскируют ошибку.

Колонка в табличном документе

Табличный документ работает с областями, а у области есть свойство ШиринаКолонки:

Процедура УстановитьШирину(ТабДок)
    // Область, охватывающая колонку 3 целиком
    ОбластьКолонки = ТабДок.Область(0, 3, 0, 3);
    ОбластьКолонки.ШиринаКолонки = 18;

    // Колонки с 4 по 6 одним действием
    Область = ТабДок.Область(0, 4, 0, 6);
    Область.ШиринаКолонки = 12;
КонецПроцедуры

Нули в параметрах Область(Верх, Лево, Низ, Право) означают «по всей высоте». Номера колонок считаются с единицы, A — это 1.

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

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

Это самая частая причина вопроса «задал ширину, а таблица ниже разъехалась». Строки с разной шириной в одном табличном документе не существуют: колонка общая для всех строк. Хотите разную ширину — делайте объединение ячеек или разносите блоки в разные колонки.

Ширина в макете и в схеме компоновки данных

Постоянное решение для печатных форм и отчётов — правильный макет.

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

Отчёт на СКД. Схема компоновки данных формирует колонки автоматически, и ширину в ней напрямую не «рисуют». Влиять на неё можно так:

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

Перенос по словам в ячейке — отдельная настройка оформления. Он часто решает проблему лучше, чем широкая колонка: текст раскладывается в несколько строк, и отчёт влезает на лист.

Если отчёт печатается на A4 и не помещается по ширине, смотрите не на колонки, а на параметры страницы печати: масштаб и «Вписать в страницу по ширине». Это быстрее, чем подгонять каждую колонку.

Колонка отчёта выглядит плохо: что проверить
Выполнено: 0 / 5

Тонкий клиент, веб-клиент и мобильные устройства

Принцип одинаковый: тянете границу заголовка. Отличия в деталях:

Тонкий клиентВеб-клиент
Протягивание границыПлавно, мышьюТак же, но возможны задержки при слабом канале
Где хранится ширинаВ настройках пользователя в базеТам же, на сервере
Двойной щелчок по границеПодгоняет по содержимомуРаботает не во всех браузерах одинаково
Масштаб экранаБерётся из настроек WindowsЗависит ещё и от масштаба страницы в браузере

Практическое следствие для веб-клиента: если колонки «поехали», проверьте масштаб страницы в браузере (сочетание Ctrl+0 возвращает 100 %). Нередко проблема именно в нём, а не в 1С.

Если на экране с высоким разрешением всё мелкое или, наоборот, огромное, дело в масштабировании операционной системы и в параметрах запуска клиента. Ширина колонок тут вторична.

Что проверить разработчику перед правкой

Прежде чем лезть в код, ответьте себе на три вопроса. Они экономят час возни.

  1. Чья это форма? Типовую форму лучше не править напрямую. Ширину колонок в типовой конфигурации на поддержке меняют через расширение, иначе при обновлении правка слетит или потребует ручного объединения.
  2. Что именно жалуются пользователи? «Мало места под наименование» решается шириной. «Всё не влезает на экран» решается составом колонок. Это разные задачи.
  3. На каком экране работают люди? Бухгалтерия на мониторах 1920 пикселей и склад на небольших терминалах нуждаются в разных решениях. Задавать жёсткие 60 символов под наименование там, где экран узкий, значит получить горизонтальную прокрутку.

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

Если ширина не меняется или сбрасывается

Типичные причины, по убыванию вероятности:

  • 🔒 Колонка с авто-растягиванием. Мышью не двигается. Меняйте соседние колонки или попросите разработчика снять растягивание.
  • ♻️ Настройка не сохраняется. Пользователь работает под общим логином, и кто-то регулярно сбрасывает настройки формы. Заведите личную учётную запись.
  • 🧹 После обновления конфигурации форма поменялась, и старые пользовательские настройки частично не подошли. Сброс через Изменить форму… лечит.
  • 🖥 Разные разрешения экрана у двух рабочих мест при одной учётной записи. Ширина в символах одинаковая, но визуально на мониторах отличается.
  • 🧾 В табличном документе одна колонка на все строки. Смотрите предупреждение выше.

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

Можно ли задать одинаковую ширину колонок всем пользователям?
Да, но только в конфигураторе или расширении: ширину задают в свойствах колонки формы. После этого пользователям с сохранёнными настройками нужно сбросить настройки формы, иначе их собственные значения останутся в силе.
Почему в ячейке отчёта вместо числа решётки?
Число шире колонки. Увеличьте ширину, уменьшите шрифт или уберите лишние разряды в формате числа.
Сохраняется ли ширина колонок при обновлении 1С?
Пользовательские настройки лежат в базе и переживают обновление платформы. Обновление конфигурации может изменить саму форму, и тогда часть настроек придётся сбросить.
Как растянуть колонку в табличном документе из кода?
Получите область колонки методом Область и присвойте её свойству ШиринаКолонки нужное значение. Ширина общая для всех строк документа.
Можно ли сохранить ширину колонок отчёта в варианте?
Вариант хранит состав и оформление отчёта, но не гарантирует конкретные размеры колонок. Для стабильного вида правят макет или параметры оформления.