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

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;
			Иначе
				Область.ШиринаКолонки = ШиринаКолонки;
			КонецЕсли;
		Конеццикла;
	КонецЦикла;
Показать
_7445_; bprogs; user1909744; Lenten; 1Cynep4eJIoBek; ILEO_911; user738634; Andrei_Ivanov; adamsonich; progersan; katyabelova; tolyan_ekb; etorpov; AndreyKaraganda; dammit666; i.c.h; boxter; +17 Ответить
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 389 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;
			Иначе
				Область.ШиринаКолонки = ШиринаКолонки;
			КонецЕсли;
		Конеццикла;
	КонецЦикла;
Показать
_7445_; bprogs; user1909744; Lenten; 1Cynep4eJIoBek; ILEO_911; user738634; Andrei_Ivanov; adamsonich; progersan; katyabelova; tolyan_ekb; etorpov; AndreyKaraganda; dammit666; i.c.h; boxter; +17 Ответить
9. AndreyKaraganda 07.07.20 15:27 Сейчас в теме
10. Svetlana_E 5 16.03.22 06:09 Сейчас в теме
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С:Предприятия возможно обращение к содержимому табличного документа, а, имея доступ к содержимому табличного документа, можно рассчитать и ширину колонок.

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

Разработчик 1С
Москва
зарплата от 100 000 руб.
Временный (на проект)

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день