gifts2017

Избавляемся от горизонтальной полосы прокрутки в табличном поле

Опубликовал Сергей Старых (tormozit) в раздел Программирование - Практика программирования

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

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

Добавьте в командную панель для нужного табличного поля кнопку, которая будет вызывать данную процедуру. Пример можно посмотреть в консоли запросов в табличном поле результата http://infostart.ru/projects/1274/

// Пропорционально сжимает ширины колонок табличного поля.
//
// Параметры:
// ТабличноеПоле – ТабличноеПоле;
// Сжатие – Число, *2 – коэффициент сжатия;
// УважатьЗапретИзмененияРазмера – Булево, *Истина – не сжимать колонки с запретом изменения размера;
//
Процедура ЛксСжатьКолонкиТабличногоПоля(ТабличноеПоле, Сжатие = 2, УважатьЗапретИзмененияРазмера = Истина) Экспорт

 МассивКолонокДляОбработки = Новый Массив;
 Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
  Ширина = Колонка.Ширина;
  Если Ширина = 0 Тогда
  // Антибаг платформы.
  Ширина = 10;
  КонецЕсли;
  Если Ложь
  Или Не УважатьЗапретИзмененияРазмера
  Или Колонка.ИзменениеРазмера = ИзменениеРазмераКолонки.Изменять
  Тогда
  НоваяШирина = Ширина / Сжатие;
  НоваяШирина = Макс(НоваяШирина, 1);
  Колонка.Ширина = НоваяШирина;
  КонецЕсли;
 КонецЦикла;

КонецПроцедуры // ЛксСжатьКолонкиТабличногоПоля()

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Петр (redgad) 01.06.09 08:03
а можно так:

ЭлементыФормы.ТабличноеПоле.ГоризонтальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.НеИспользовать;
2. Максим (Fuego) 01.06.09 09:00
а по-моему ширина колонки при значении 0 - это автоширина, при которой ширина колонки составляет 9, а не 10. И "антибагом" зря обозвал. :)
3. Антон Степанов (Stepa86) 01.06.09 09:02
(0) я б добавил в начало процедуры

Если Сжатие = 0 Тогда
Сжатие = (СуммаШиринВсехКолонок + 1)/ТабличноеПоле.Ширина;
КонецЕсли;

и Сжатие - по умолчанию 0
4. Сергей Старых (tormozit) 01.06.09 09:34
(2) Прошу тогда продемонстрировать, как ее можно задать интерактивно. Ни в конфигураторе, ни в предприятии мне не дают установить ширину в 0.
5. Сергей Старых (tormozit) 01.06.09 09:39
(1) Имелось ввиду не просто избавиться от полосы прокрутки, а избавиться от ее отображения в автоматическом режиме. Иначе говоря втиснуть все колонки в текущую ширину.
6. v_id (v_id) 05.06.09 08:19
(0) В идеале хотелось бы автоподбор ширины по содержимому колонки, с ограничением максимальной длины. Много хочу? :)
7. Сергей Старых (tormozit) 05.06.09 09:23
(6) Это совсем другая задача. Пока она передо мной не вставала.
8. v_id (v_id) 05.06.09 09:30
(7) Просто мне автоподбор ширины в рамках темы статьи кажется более оптимальным и красивым решением, имхо конечно.
9. Сергей Романов (Seraph) 07.12.09 17:31
Сделал автоподбор, вроде работает, но экстенсив тестинг ещё не проводил.
Цепляется как внешняя обработка табличной части документа.
Для Предприятие 8.2
Прикрепленные файлы:
АвтоподборШирины.epf
10. Stas Churkin (Stas-ch) 04.10.10 16:49
А зачем в шапке написали:
"Алгоритм для 1С: Предприятие 8.1; 1С: Предприятие 8.2" ??? :o
Процедура там работать не будет! только в 1С Предприятие 8.1!!!
11. Сергей Старых (tormozit) 04.10.10 17:17
(10) Видимо ты пытался применить этот код для управляемой формы.
Если написано 8.1 и 8.2, то очень вероятно, что в управляемом режиме работать не будет, т.к. его нет в 8.1. В обычных формах 8.2 алгоритм точно работает.
12. Алексей Захаров (almas) 06.08.11 20:30
Привет. С управляемым еще не работал? Можешь написать код для управляемой формы?
13. kiruha Дронов (kiruha) 12.08.13 12:35
А не лучше - когда пользователь сам разок настроит под себя - а далее платформа запомнит ?
14. Ivan Veres (MrFlanker) 27.12.13 17:05
Как избавится от горизонтальной прокрутки табличной части в управляемых формах ?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа