Табличный документ, ширина колонки

1. annapam1983 02.12.16 12:56 Сейчас в теме
Скажите пожалуйста. уважаемые, интерактивно можно дважды щелкнуть по границе столбца - и ширина колонки будет рассчитана так - что текст указанный в колонке - в ней поместится.
А можно это сделать программно?
По теме из базы знаний
Найденные решения
5. onetone 02.12.16 17:21 Сейчас в теме
(1) Я вот для таких случаев так пишу после вывода

Для Кол = 1 По ТабДок.ШиринаТаблицы Цикл
		ШиринаКолонки = 0;
		Для Стр = 1 По ТабДок.ВысотаТаблицы Цикл
			Область = ТабДок.Область("R"+Формат(Стр,"ЧГ=0")+"C"+Формат(Кол,"ЧГ=0"));
			ШиринаОбласти = Область.Отступ+СтрДлина(СокрЛП(Область.Текст));
			ШиринаКолонки = Макс(ШиринаКолонки, ШиринаОбласти + 3);
			Если ШиринаКолонки > 40 Тогда
				Область.ШиринаКолонки = 40;
			Иначе
				Область.ШиринаКолонки = ШиринаКолонки;
			КонецЕсли;
		Конеццикла;
	КонецЦикла;
Показать
Nikola_N; user1210040; x-ynegve; _7445_; bprogs; RomanIvanov; Lenten; 1Cynep4eJIoBek; ILEO_911; user738634; Andrei_Ivanov; adamsonich; progersan; katyabelova; tolyan_ekb; etorpov; AndreyKaraganda; dammit666; i.c.h; boxter; +20 Ответить
2. akR00b 22 02.12.16 15:00 Сейчас в теме
(1)для костыля - получить количество символов самой длинной строки и а по ней сделать ширину.
IvanTerentev; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. akR00b 22 02.12.16 15:00 Сейчас в теме
(1)для костыля - получить количество символов самой длинной строки и а по ней сделать ширину.
IvanTerentev; +1 Ответить
3. dj_serega 392 02.12.16 17:06 Сейчас в теме
(2) А подругому и нельзя. Только нужно учесть что "Ш" и "1" имеют разную ширину ;)
6. annapam1983 03.12.16 12:23 Сейчас в теме
(2) Так и сделала. криво. но...

5. onetone 02.12.16 17:21 Сейчас в теме
(1) Я вот для таких случаев так пишу после вывода

Для Кол = 1 По ТабДок.ШиринаТаблицы Цикл
		ШиринаКолонки = 0;
		Для Стр = 1 По ТабДок.ВысотаТаблицы Цикл
			Область = ТабДок.Область("R"+Формат(Стр,"ЧГ=0")+"C"+Формат(Кол,"ЧГ=0"));
			ШиринаОбласти = Область.Отступ+СтрДлина(СокрЛП(Область.Текст));
			ШиринаКолонки = Макс(ШиринаКолонки, ШиринаОбласти + 3);
			Если ШиринаКолонки > 40 Тогда
				Область.ШиринаКолонки = 40;
			Иначе
				Область.ШиринаКолонки = ШиринаКолонки;
			КонецЕсли;
		Конеццикла;
	КонецЦикла;
Показать
Nikola_N; user1210040; x-ynegve; _7445_; bprogs; RomanIvanov; Lenten; 1Cynep4eJIoBek; ILEO_911; user738634; Andrei_Ivanov; adamsonich; progersan; katyabelova; tolyan_ekb; etorpov; AndreyKaraganda; dammit666; i.c.h; boxter; +20 Ответить
9. AndreyKaraganda 07.07.20 15:27 Сейчас в теме
Великолепное решение!
10. Svetlana_E 5 16.03.22 06:09 Сейчас в теме
(5) Спасибо, пригодилось!
12. adamsonich 14.02.23 09:36 Сейчас в теме
(5) Спасибо за код. Немного оптимизировал под свои надобности и убрал лишний (ИМХО) конструкт "Если".
Для Кол = 1 По ТабДок.ШиринаТаблицы Цикл
        ШиринаКолонки = 0;
        КоличествоПроверяемыхСтрок=мин(50,ТабДок.ВысотаТаблицы);
        Для Стр = 1 По КоличествоПроверяемыхСтрок Цикл
            Область = ТабДок.Область("R"+Формат(Стр,"ЧГ=0")+"C"+Формат(Кол,"ЧГ=0"));
            ШиринаОбласти = Область.Отступ+СтрДлина(СокрЛП(Область.Текст));
            ШиринаКолонки = Макс(ШиринаКолонки, ШиринаОбласти + 3);
        Конеццикла;
        Область.ШиринаКолонки= Мин(40,ШиринаКолонки);
Конеццикла;
Показать
13. shoy 19 19.06.23 18:20 Сейчас в теме
(12) А ничего что Область теперь вне цикла?
Так ничего не изменишь!
14. lev6975 23.09.23 18:21 Сейчас в теме
(5)
Для Кол = 1 По ТабДок.ШиринаТаблицы Цикл
ШиринаКолонки = 0;
Для Стр = 1 По ТабДок.ВысотаТаблицы Цикл
Область = ТабДок.Область("R"+Формат(Стр,"ЧГ=0")+"C"+Формат(Кол,"ЧГ=0"));
ШиринаОбласти = Область.Отступ+СтрДлина(СокрЛП(Область.Текст));
ШиринаКолонки = Макс(ШиринаКолонки, ШиринаОбласти + 3);
Если ШиринаКолонки > 40 Тогда
Область.ШиринаКолонки = 40;
Иначе
Область.ШиринаКолонки = ШиринаКолонки;
КонецЕсли;
Конеццикла;
КонецЦикла;
Показать


У меня ошибка возникает:
ВнешняяОбработка.Ведомость.Форма.Форма.Форма(570,44)}: Неопознанный оператор
табдокумент.Область("R11C1").ШиринаКолонки<<?>>; (Проверка: Тонкий клиент)

ВООБЩЕ НЕ ПОЙМУ НА РОВНОМ МЕСТЕ!!!!!!!
Должно все работать
ЧЯДНТ????
Платформа 8.3.23.1782
Просто тупо не компилит Табдок.Область("R...C...").Ширинаколонки
Платформа кривая????
А вот так вот работает
АдресКолонки = "R11C1";
Выполнить("Сообщить(Табдокумент.Область(АдресКолонки).ШиринаКолонки)");

Жесть... не пойму в чем дело... через Выполнить конечно изврат полный))))
4. spe1c 5 02.12.16 17:19 Сейчас в теме
Возможно это и не требуется. Есть возможность сохранить текущую ширину колонок при закрытии формы и программно восстановить при следующем открытии. Т.е. один раз настроил и забыл. В упр интерфейсе автоматом должно быть.
7. annapam1983 03.12.16 12:26 Сейчас в теме
(4) Данные в макете меняются. надо вычислять ширину колонок. поясню - есть печатная форма табеля.
В большинстве колонок 1 или 2 символа (8, 8К, УК, ОЖ) и так далее.. Для столбцов в макете выставлена ширина 4,5
Но бывают и изыски например - 24ДД. Тогда надо ширину колонки менять.



8. Max777 1 30.04.19 14:42 Сейчас в теме
По идее это команда РастягиватьПоГоризонтали.
Область.РастягиватьПоГоризонтали=Истина.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Содержит признак того, что ширина колонки рассчитывается автоматически в зависимости от размера отображаемой области документа.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:
Значение по умолчанию: Ложь.

Но я попробовал, что то слишком сильно растягивает, больше чем нужно для текста, а это тоже не удобно.

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

Но опять же, попробовал, этот режим всегда остается включенным (что конечно лучше чем выключен), но почему такие странности не понятно.

Пробовал в обычных формах
sv_baranov; IvanGorbunov; dammit666; +3 Ответить
11. пользователь 25.03.22 11:52
Сообщение было скрыто модератором.
...
15. qux 25 26.10.23 09:52 Сейчас в теме
Инфа с ИТС: "Автоматический расчет ширины колонок результата отчета
В некоторых отчетах возникает необходимость автоматического расчета ширин колонок в зависимости от их содержимого. Построитель отчета и табличный документ такой возможности не предоставляют. Однако способ решить данную задачу все-таки есть. Дело в том, что из встроенного языка 1С:Предприятия возможно обращение к содержимому табличного документа, а, имея доступ к содержимому табличного документа, можно рассчитать и ширину колонок.

Пример процедуры, которая автоматически рассчитывает ширины колонок табличного документа, можно найти в конфигурации "Примеры ИТС", в отчете "Продажи номенклатуры". Данная процедура расположена в модуле основной формы отчета и называется "РасчетШириныКолонок".
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот