Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: Злоп от 18 марта 2026, 22:37

Название: РФ.ПолучитьШиринуКолонки - неадекватные данные
Отправлено: Злоп от 18 марта 2026, 22:37
Первый раз пробую использовать сабж.
ТЗ на форме, штатно - все нормально.
Пытаюсь получить ширину колонок (кнопка с процедурой) - получаю какие-то неадекватные значения, не соответствующие видимому состоянию. В чем-то есть секрет, что-то я делаю не так?

//********************************************************************************************************
Процедура ПолучитьШиринуКолонки()

РасшФ = СоздатьОбъект("РасширениеФормы");
Колонка = ТЗФорма.ТекущаяКолонка(); НомерКолонки = ТЗФорма.ПолучитьПараметрыКолонки(Колонка);
Ширина = РасшФ.ПолучитьШиринуКолонки("ТЗФорма",НомерКолонки);
Сообщить(""+НомерКолонки+", "+Колонка+": "+Ширина);

КонецПроцедуры // ПолучитьШиринуКолонки()
Название: Re: РФ.ПолучитьШиринуКолонки - неадекватные данные
Отправлено: Харлампий Дымба от 18 марта 2026, 22:58
Для Сервис::ВысотаСтрокиТаблицы() есть
<ТипВозврата> - тип возвращаемого значения. Может принимать следующие значения:
1 - возвращается значение в миллиметрах,
2 - возвращается значение в экранных пикселях,
3 - возвращается значение во внутренних юнитах 1С.
Может для РасширениеФормы::ПолучитьШиринуКолонки значение возвращается в одной из этих единиц?
Название: Re: РФ.ПолучитьШиринуКолонки - неадекватные данные
Отправлено: АЛьФ от 19 марта 2026, 13:58
Нумерация колонок в этом методе начинается с нуля.

Ширина = РасшФ.ПолучитьШиринуКолонки("ТЗФорма",НомерКолонки - 1);
Название: Re: РФ.ПолучитьШиринуКолонки - неадекватные данные
Отправлено: Злоп от 19 марта 2026, 19:23
Цитата: АЛьФ от 19 марта 2026, 13:58Нумерация колонок в этом методе начинается с нуля.
Ширина = РасшФ.ПолучитьШиринуКолонки("ТЗФорма",НомерКолонки- 1);

Спасибо, выты - настоящий Самоделкин!
Разобрался!
1. Нумерация с нуля
2. Неадекватно работает при наличии невидимых колонок, если положиться на "как есть".
Например, если первыми в ТЗ идут 5ть невидимых колонок, то НомерКолонки возвращается №6, а визуально колонка - первая, и начинается галиматья в полуаемых ширнах колонок (в т.ч. и ширина=0). Поэтому, если в начале таблицы стоит N невидимых колонок, то следует параметр "номер колонки" вычислять как НомерКолонки-1-N. В случае, если видимые и невидимые колонки идут вперемешку - вычисление номера колонки для параметра метода будет посложнее. Поэтому: все невидимые колонки что возможно смещаем в конец колонок таблиц, далее - по обстоятельствам. При использовании ПланаРаскраски, когда положение колонки раскраски несущественно - её тоже кладем в конец таблицы. Если ПланРаскраски не используется, то для получения вычисления ширины колонки пишем код с учетом видимости и положения колонок подкраски.