Created attachment 567 [details] В линуксе В общем, бутылка 1c8.1.11.67 база tdemo Делал "Отчёты--отчёт по номенклатуре--сформировать" Прикладываю скрины. Смотреть на размеры ячеек.
Created attachment 568 [details] В Винде ---
1С получает координаты прямоугольника, по которому обрезается текст, с помощью функции IntersectRect, которая возвращает координаты прямоугольника, являющегося общей частью двух других прямоугольников. Первый прямоугольник для всех строк одинаковый, а второй для некоторых строк имеет меньшую, чем их длина, ширину. Причину этого выяснить не удалось. Вызов IntersectRect перед выводом строки "5 товаров с наибольшим остатком": 0009:Call user32.IntersectRect(0032ea3c,0032e9c4,0032ea3c) ret=1da9a580 trace:graphics:IntersectRect src1: left 48 right 1234 top 0 bottom 775 trace:graphics:IntersectRect src2: left 48 right 98 top 58 bottom 85 0009:Ret user32.IntersectRect() retval=00000001 ret=1da9a580 Вызов IntersectRect перед выводом строки "Остатки номенклатуры по складам": 0009:Call user32.IntersectRect(0032ec80,0032e9c4,0032ec80) ret=1da9a1ce trace:graphics:IntersectRect src1: left 48 right 1234 top 0 bottom 775 trace:graphics:IntersectRect src2: left 48 right 1234 top 433 bottom 460 0009:Ret user32.IntersectRect() retval=00000001 ret=1da9a1ce IntersectRect вызывается из moxelui.dll. Ширина ячейки таблицы определяется с помощью GetTextExtentPoint32A(hdc, "X", count, size). При замене Arial на Tahoma меняется шрифт, которым выводятся урезанные надписи, но длина их не меняется.
Илья, изволь пожалуйста записать выводы по этой баге.
Если смотреть, что произошло с ячейками в сохраненном mxl файле: 1) При попытке растянуть ячейку ей устанавливается минимальная, возможно фиксированная величина. В результате все ячейки, которые в windows растянуты и содержат текст - получаются короткими. 2) Несмотря на то, что ячейки короткие, текст в них отображается нормально, т.е. в функцию ExtTextOutW приходит корректный rect. 3) Исключение только для объединенных ячеек. В этом случае текст выводится в получившуюся ячейку и не выходит за ее границы. Бага наблюдается для объединенных растянутых ячеек, т.к. они короткие, а текст в случае объединения отрезается под размер ячейки.
Размер ячеек определяет сам 1с. Скорре всего, надо выяснить на основании чего определяется их ширина. Возможно, какая-то функция возвращает не то значение, что ждет 1с.
Перевесил на себя.
Сборка 1.0.10 10/6 Воспроизводится.
Эта бага достаточно трудоемкая и не очень критичная. Думаю, целесообразнее решать ее с разработчиками 1С.
Выложил хак. Временное решение - если текст не помещается в переданный в функцию ExtTextOutW прямоугольник, увеличить этот прямоугольник до необходимого размера. Для корректного решения проблемы необходимо знать, как 1с устанавливает ширину ячеек.
Принято. WINE@Etersoft eter27/eter19
Хак приводит к появлению ошибки #4269. Нужно более корректное решение.
to night: Воспроизведи, пожалуйста, где-нибудь в бутылке. 1c8.1.11.67 уже удалили.
WINE@Etersoft 1.0.12 eter5.2/eter4 ошибка не воспроизвелась.
Created attachment 1682 [details] В eter5.2/eter4
Принято.
Тестировал в бутылке 1c81/8.1.15.14
Создал новую бутылку: 1c81/1c81-Examples. Сделал конфигурацию.. Ошибка не воспроизвелась. WINE@Etersoft eter5.2/eter4
Проблемы нет. 1.0.12-eter5.4/5