Ширина колонок в списках, отчётах и макетах 1С: от мыши до кода
Содержание
Чтобы изменить ширину столбца в 1С, наведите курсор на правую границу заголовка колонки, дождитесь двусторонней стрелки и протяните границу мышью. Это работает в любом списке, журнале и табличной части. Многие думают, что ширина «слетает» сама по себе. На деле она сохраняется, просто не везде и не всегда там, где вы ожидаете.
Если вы пользователь, вам хватит первых двух разделов. Программисту нужны разделы про код и макеты. Отдельно разобрано, почему в тонком и веб-клиенте картина разная и как вернуть колонки, если форма превратилась в кашу.
Ширина колонки в списке и табличной части: мышью
Это самый частый случай: справочник, журнал документов , табличная часть документа.
- Наведите курсор на вертикальную границу между двумя заголовками колонок.
- Когда курсор станет двойной стрелкой, зажмите левую кнопку.
- Потяните влево или вправо и отпустите.
Меняется ширина колонки слева от границы. Соседние колонки сдвигаются, а если места не хватает, внизу появляется горизонтальная прокрутка.
Что ещё умеет мышь:
- 🖱 Двойной щелчок по границе обычно подгоняет колонку под содержимое. Если не сработало, потяните вручную.
- 🔀 Перетаскивание заголовка меняет порядок колонок, а не ширину.
- 📏 Колонка, у которой разработчик задал растягивание, занимает всё свободное место и мышью почти не регулируется. Её ширину меняют соседние колонки.
Если нужной колонки в списке нет вообще, дело не в ширине. Её надо включить через настройку списка, об этом ниже.
Где 1С запоминает ширину и как её вернуть
В управляемых формах (а это весь современный интерфейс) ширина колонок хранится в пользовательских настройках формы. Они привязаны к вашему пользователю и к базе, а не к компьютеру. Зайдёте с другого рабочего места под тем же логином, и колонки будут такими же. Другой пользователь увидит свои.
Отсюда два следствия:
- Бухгалтер не может «растянуть колонку всем». У каждого своя ширина.
- Если сотрудник жалуется на «кривой» список, то у него в настройках накопилась каша. У вас всё в порядке.
Сброс к стандартному виду
Откройте проблемный список, найдите меню Ещё в командной панели формы и выберите пункт Изменить форму…. В открывшемся окне есть кнопка возврата стандартных настроек. После её нажатия ширина, видимость и порядок колонок возвращаются к тому, что задумал разработчик.
Туда же стоит заглянуть, когда колонку нужно не растянуть, а добавить. В окне настройки формы она включается галочкой.
Сброс затрагивает все настройки этой формы: порядок колонок, отбор по умолчанию и оформление. Если вы долго подгоняли список под себя, запишите, что там было.
Список с динамическим отбором и группировкой
В списках с группировкой (например, дерево групп слева, элементы справа) у каждой части своя ширина. Протянули колонку в правой части, а в дереве слева ничего не изменилось. Это нормально.
Ширина столбцов в отчёте и в печатной форме
Отчёт и печатная форма выводятся в табличный документ. Он устроен иначе, чем список: это сетка ячеек, как в электронной таблице, и ширина колонки относится ко всей сетке, а не к одному «полю».
Что можно сделать руками:
- Протянуть границу колонки в заголовке сетки, если у табличного документа включены заголовки строк и колонок. В отчётах они обычно скрыты.
- Если заголовков нет, ширину можно менять только через границы самой ячейки в макете (это уже работа разработчика, см. следующие разделы).
Поэтому типичная жалоба «в отчёте всё сжато, цифры показываются как ###» решается не мышью. Знаки решётки вместо числа означают, что число не помещается в ячейку. Варианты:
| Что сделать | Когда помогает | Риск |
|---|---|---|
| Уменьшить шрифт в настройках отчёта | Колонка чуть-чуть не хватает | Печать мелким шрифтом |
| Убрать лишние колонки из варианта отчёта | В отчёте много лишних показателей | Исчезнет нужная информация |
| Поправить макет или параметры оформления | Отчёт делает разработчик | Нужен доступ к конфигурации |
| Выгрузить в Excel и растянуть там | Нужно срочно и один раз | Форматирование не сохранится в 1С |
Выгрузка в Excel — запасной путь, но не решение: в следующий раз придётся делать то же самое.
Настройка ширины в варианте отчёта и в настройках списка
Вариант отчёта хранит состав колонок, группировки, отборы и оформление. Ширина «в пикселях» там не хранится так, как в списке, поэтому сохранённый вариант не гарантирует, что вы увидите те же размеры.
Что реально можно сделать пользователю:
- Открыть отчёт и нажать
Ещё→Изменить вариант…(в части отчётов эта команда вынесена кнопкойНастройки). - Убрать из вывода колонки, которые не нужны.
- Сократить число показателей: у каждой колонки с суммой своя минимальная ширина по формату числа.
- Сохранить вариант под своим именем, чтобы не повторять настройку каждый раз.
Для списков (справочников, журналов) добавьте колонку в окне Изменить форму…, а ширину потом выставьте мышью. Порядок важен: сначала состав колонок, потом ширина. Иначе после включения новой колонки соседние поползут.
Ширина колонки из кода: форма и табличный документ
Здесь два разных объекта, и код у них разный. Путают их постоянно.
Колонка таблицы на управляемой форме
Таблица формы состоит из элементов. У каждой колонки есть свойство Ширина (в символах) и флаги растягивания. Чаще всего ширину задают в конфигураторе в палитре свойств элемента формы. Из кода это выглядит так:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Элементы.СписокНоменклатура.Ширина = 40;
Элементы.СписокЦена.Ширина = 12;
КонецПроцедуры
Здесь СписокНоменклатура и СписокЦена — имена колонок вашей таблицы. Подставьте свои.
Что стоит знать:
- Ширину поля меняют на клиенте, процедура должна быть клиентской или выполняться при открытии формы.
- Если у колонки включено растягивание по горизонтали, жёстко заданная ширина будет работать иначе. Решите, что важнее: фиксированная ширина или заполнение свободного места.
- Сохранённая пользовательская настройка применяется поверх значений разработчика. Поэтому после смены ширины в конфигураторе у части пользователей ничего не меняется: им нужно сбросить настройки формы (см. выше).
- Проверяйте результат под обычным пользователем, а не только под администратором. У администратора настройки формы накапливаются годами и маскируют ошибку.
Колонка в табличном документе
Табличный документ работает с областями, а у области есть свойство ШиринаКолонки:
Процедура УстановитьШирину(ТабДок)
// Область, охватывающая колонку 3 целиком
ОбластьКолонки = ТабДок.Область(0, 3, 0, 3);
ОбластьКолонки.ШиринаКолонки = 18;
// Колонки с 4 по 6 одним действием
Область = ТабДок.Область(0, 4, 0, 6);
Область.ШиринаКолонки = 12;
КонецПроцедуры
Нули в параметрах Область(Верх, Лево, Низ, Право) означают «по всей высоте». Номера колонок считаются с единицы, A — это 1.
Ширина задаётся в условных единицах, близких к числу символов стандартного шрифта. Подберите значение на глаз, выведя печатную форму на экран, и не пытайтесь переводить в миллиметры.
Менять ширину нужно до вывода областей макета в результат или строго для того диапазона, где колонка уже существует. Если выводить в документ несколько разных областей макета с разной шириной колонок, в результирующем табличном документе будет единая сетка, и ширина колонки одна на весь документ.
Это самая частая причина вопроса «задал ширину, а таблица ниже разъехалась». Строки с разной шириной в одном табличном документе не существуют: колонка общая для всех строк. Хотите разную ширину — делайте объединение ячеек или разносите блоки в разные колонки.
Ширина в макете и в схеме компоновки данных
Постоянное решение для печатных форм и отчётов — правильный макет.
Макет печатной формы. В конфигураторе откройте макет, выделите колонку и протяните границу в заголовке сетки либо задайте ширину в палитре свойств. Так ширина становится частью макета и применяется у всех пользователей одинаково.
Отчёт на СКД. Схема компоновки данных формирует колонки автоматически, и ширину в ней напрямую не «рисуют». Влиять на неё можно так:
- в настройках отчёта у поля есть параметры оформления, связанные с шириной: минимальная и максимальная. Они ограничивают, как сильно колонка сожмётся или растянется;
- в макете оформления группировки можно задать ширину колонок для определённой области;
- длинные тексты ограничивают по длине и разрешают перенос по словам, иначе колонка раздувается под самую длинную строку.
Перенос по словам в ячейке — отдельная настройка оформления. Он часто решает проблему лучше, чем широкая колонка: текст раскладывается в несколько строк, и отчёт влезает на лист.
Если отчёт печатается на A4 и не помещается по ширине, смотрите не на колонки, а на параметры страницы печати: масштаб и «Вписать в страницу по ширине». Это быстрее, чем подгонять каждую колонку.
Тонкий клиент, веб-клиент и мобильные устройства
Принцип одинаковый: тянете границу заголовка. Отличия в деталях:
| Тонкий клиент | Веб-клиент | |
|---|---|---|
| Протягивание границы | Плавно, мышью | Так же, но возможны задержки при слабом канале |
| Где хранится ширина | В настройках пользователя в базе | Там же, на сервере |
| Двойной щелчок по границе | Подгоняет по содержимому | Работает не во всех браузерах одинаково |
| Масштаб экрана | Берётся из настроек Windows | Зависит ещё и от масштаба страницы в браузере |
Практическое следствие для веб-клиента: если колонки «поехали», проверьте масштаб страницы в браузере (сочетание Ctrl+0 возвращает 100 %). Нередко проблема именно в нём, а не в 1С.
Если на экране с высоким разрешением всё мелкое или, наоборот, огромное, дело в масштабировании операционной системы и в параметрах запуска клиента. Ширина колонок тут вторична.
Что проверить разработчику перед правкой
Прежде чем лезть в код, ответьте себе на три вопроса. Они экономят час возни.
- Чья это форма? Типовую форму лучше не править напрямую. Ширину колонок в типовой конфигурации на поддержке меняют через расширение, иначе при обновлении правка слетит или потребует ручного объединения.
- Что именно жалуются пользователи? «Мало места под наименование» решается шириной. «Всё не влезает на экран» решается составом колонок. Это разные задачи.
- На каком экране работают люди? Бухгалтерия на мониторах 1920 пикселей и склад на небольших терминалах нуждаются в разных решениях. Задавать жёсткие 60 символов под наименование там, где экран узкий, значит получить горизонтальную прокрутку.
Хорошая практика: одной-двумя колонкам оставить растягивание по горизонтали (обычно наименование), остальным задать фиксированную ширину по содержимому. Тогда форма сама подстраивается под окно, а числовые колонки не расползаются.
Если ширина не меняется или сбрасывается
Типичные причины, по убыванию вероятности:
- 🔒 Колонка с авто-растягиванием. Мышью не двигается. Меняйте соседние колонки или попросите разработчика снять растягивание.
- ♻️ Настройка не сохраняется. Пользователь работает под общим логином, и кто-то регулярно сбрасывает настройки формы. Заведите личную учётную запись.
- 🧹 После обновления конфигурации форма поменялась, и старые пользовательские настройки частично не подошли. Сброс через
Изменить форму…лечит. - 🖥 Разные разрешения экрана у двух рабочих мест при одной учётной записи. Ширина в символах одинаковая, но визуально на мониторах отличается.
- 🧾 В табличном документе одна колонка на все строки. Смотрите предупреждение выше.
Если проблема в одной форме у одного человека, сначала сбросьте настройки формы. Если у всех и сразу после обновления, значит разработчик изменил форму, и ширину придётся поправить в конфигурации.
Можно ли задать одинаковую ширину колонок всем пользователям?
Почему в ячейке отчёта вместо числа решётки?
Сохраняется ли ширина колонок при обновлении 1С?
Как растянуть колонку в табличном документе из кода?
Область и присвойте её свойству ШиринаКолонки нужное значение. Ширина общая для всех строк документа.