Как этот факт был обнаружен.
Решалась задача выводить в печатную форму текст, являющийся смесью неподчёркнутых и подчёркнутых фрагментов. Насколько я знаю, возможность вывести строки с разной подчёркнутостью в одну ячейку табличного документа или их объединение пока отсутствует. Было решено: разбивать текст на куски, каждый из которых либо подчёркнут, либо нет; каждый кусок выводить в область-кирпичик, получаемую как объединение подходящего количества ячеек небольшой ширины; из полученных кирпичиков формировать итоговый табличный документ.
Небольшое отступление по поводу подчёркивания. Предпочтительным вариантом было использование нижней границы ячеек табличного документа, а не подчёркнутого шрифта, так как в случае использования нижней границы результирующая печатная форма больше похожа на типографскую форму, в которую впечатана информация из конкретного документа. Это пояснение - только для того, чтобы у читателя не было лишних вопросов, на суть статьи вариант подчёркивания не влияет.
Ещё одно пояснение - по поводу конечного результата. Нужна была печатная форма некоего документа. Распечатывать его планировалось, предварительно сохраняя табличный документ в формате PDF. Скорее всего, изображение, получаемое при печати табличного документа, - такое же, как и и при его сохранении в PDF, но на всякий случай замечу, что в рамках данной статьи под печатью понимается именно получение изображения через сохранение табличного документа в PDF.
Вернёмся к основной теме раздела.
Как формировалась печатная форма поясню на примере текста "Однажды, в студёную зимнюю пору".
Сначала в макете подбиралась область для вывода строки "Однажды", и эта область выводилась в результирующий табличный документ.
Затем в макете подбиралась область для вывода строки "в студёную", и эта область (только подчёркнутая) присоединялась к результирующему табличному документу.
Затем успешно отрабатывался вывод строки "зимнюю".
А вот на строке " пору" происходило неожиданное: область с подобранной шириной после присоединения к результирующему табличному документу эту строку уже не вмещала.
Сначала я грешным делом заподозрил, что метод табличного документа ПроверитьВывод, использовавшийся при подборе ширины области, работает не так, как алгоритм, определяющий необходимость переноса строк при печати. Оказалось, что зря. Проблему решило изменение алгоритма подбора области: её нужно было подбирать, используя те же колонки, в которых эта область оказывается после присоединения к табличному документу - результату.
Примечание: фраза, использованная в примере, является отвлечённой, и была использована только для того, чтобы нагляднее пояснить что было нужно и как это достигалось. На самом деле эффект был обнаружен при выводе другой строки. Для тех кто сомневается в достоверности описанного или просто хочет воспроизвести ситуацию - следующий раздел.
Как можно воспроизвести эффект:
- создём новый табличный документ;
- у первых 100 колонок устанавливаем ширину 1;
- у первой строки устанавливаем шрифт "Times New Roman, 12", авто-высоту строки и размещение текста "переносить";
- в первой строке делаем два объединения ячеек: в колонках с 1 по 18 и с 22 по 39;
- в каждом объединении устанавливаем границу "сплошная" со всех сторон, вертикальное положение "Верх" и текст "50 гр.Однажды,".
Получим:
Далее нажимаем "Просмотр", смотрим что получается, нажимаем два раза "увеличить" и сравниваем с тем что было до увеличения:
Далее: выходим из просмотра, сохраняем табличный документ в файл PDF, и открываем его через Acrobat Reader. Видим следующее:
Замечаем: cтрока в первой области печатается без переноса текста на следующую строку, во второй области - с переносом. Налицо тот эффект, который был описан в анонсе.
Дополнительно, из сравнения того, как выглядел табличный документ, того, что мы видели при просмотре и того, что видно в PDF'е, нелишне зафиксировать:
- табличный документ выглядит не так, как он будет выглядеть после распечатки (см. примечание по поводу распечатки выше);
- на предварительный просмотр полагаться на 100% тоже нельзя: при просмотре табличного документа получаемые картинки зависят от масштаба.
Надеюсь подобные мелкие замечания не вызовут пессимизма в душе читателя. Как оказалось в результате решения описанной в предыдущем разделе задачи, успешно предсказывать перенос строк при печати и подбирать подходящие области позволяет использование метода ПроверитьВывод.
Что касается воспроизводимости эксперимента.
Думаю, что результаты, получаемые в описанном эксперименте, могут зависеть от платформы 1С. Поэтому уточняю: версия платформы, на которой я работал - 8.3.15.1830.
Далее. Уверен, что воспроизводимость эксперимента может зависеть и от факторов, лежащих вне платформы 1С. Поэтому учточню: я работал с "Windows 7 Профессинальная", Service Pack 1.