При работе с табличными документами в 1С:Предприятии, мы часто сталкиваемся с необходимостью тонкой настройки внешнего вида элементов. Одним из таких элементов является объект Картинка типа Текст, который позволяет размещать форматированный текст непосредственно в макете. Однако, когда дело доходит до изменения шрифта такого объекта, мы можем обнаружить, что привычные методы прямого изменения свойств шрифта не работают так, как ожидалось.
Давайте разберем причину такого поведения и рассмотрим эффективные способы решения этой задачи.
Суть проблемы заключается в том, что объект Шрифт в 1С:Предприятии является неизменяемым. Это означает, что мы не можем напрямую изменить отдельные его свойства, такие как Шрифт.Полужирный, Шрифт.Размер или Шрифт.Наклонный. Попытка сделать это не приведет к желаемому результату, поскольку объект Шрифт в контексте присвоения ведет себя как константа.
Для того чтобы изменить шрифт объекта Картинка типа Текст, нам необходимо создать новый объект Шрифт с нужными нам параметрами и затем присвоить его свойству Шрифт нашего объекта рисунка. Для создания нового объекта Шрифт мы будем использовать конструктор Новый Шрифт().
Давайте подробно рассмотрим параметры конструктора Новый Шрифт(), которые позволяют нам гибко настраивать внешний вид текста:
Новый Шрифт(<ИмяШрифта>, <Размер>, <Полужирный>, <Наклонный>, <Подчеркнутый>, <Зачеркнутый>, <Масштаб>)
<ИмяШрифта> (необязательный): Строковое значение, указывающее системное наименование шрифта (например, "Arial", "Verdana", "Times New Roman"). Если этот параметр не указан, будет использован шрифт по умолчанию.<Размер> (необязательный): Числовое значение, определяющее размер шрифта в пунктах. Если параметр не указан, используется размер шрифта по умолчанию.<Полужирный> (необязательный): Булево значение. Если установлено в Истина, шрифт будет полужирным.<Наклонный> (необязательный): Булево значение. Если установлено в Истина, шрифт будет наклонным (курсивом).<Подчеркнутый> (необязательный): Булево значение. Если установлено в Истина, текст будет подчеркнутым.<Зачеркнутый> (необязательный): Булево значение. Если установлено в Истина, текст будет зачеркнутым.<Масштаб> (необязательный): Числовое значение, представляющее коэффициент масштабирования шрифта в процентах (например, 100 для обычного размера, 110 для увеличения на 10%). Этот параметр удобен для пропорционального изменения размера.Обратите внимание, что если какой-либо из необязательных параметров не указан (или вместо него передано пустое значение), то для этого свойства будет использовано значение из текущего шрифта или значение по умолчанию.
Давайте проанализируем несколько практических примеров, которые помогут нам освоить этот подход.
Предположим, у нас есть объект рисунка в табличном документе, который мы назвали РисунокКартинка2. Мы хотим изменить его шрифт.
Это один из наиболее распространенных сценариев, который был предложен в исходной теме форума. Мы хотим взять текущий шрифт объекта и изменить только одно его свойство — сделать его полужирным, сохранив при этом имя шрифта, размер и другие начертания.
Для этого мы передадим текущий объект Шрифт в качестве первого параметра конструктору Новый Шрифт(). Это укажет системе взять все свойства из текущего шрифта. Затем мы установим Истина для параметра Полужирный, который является третьим по счету.
РисунокКартинка2.Шрифт = Новый Шрифт(РисунокКартинка2.Шрифт,,,Истина);
В этом примере мы видим, что после первого параметра РисунокКартинка2.Шрифт (который является исходным шрифтом), идут два пустых параметра (для Размер и Полужирный). Это означает, что для этих свойств будут взяты значения из исходного шрифта РисунокКартинка2.Шрифт. А вот третий параметр, Истина, явно указывает, что новый шрифт должен быть полужирным.
Если нам требуется полностью задать шрифт, его размер и сделать его жирным, мы можем явно указать все эти параметры в конструкторе.
РисунокКартинка2.Шрифт = Новый Шрифт("Verdana", 12, Истина);
Этот код установит для объекта РисунокКартинка2 шрифт "Verdana", размером 12 пунктов и сделает его полужирным. Остальные параметры (наклонный, подчеркнутый, зачеркнутый, масштаб) будут установлены в значения по умолчанию (не наклонный, не подчеркнутый и т.д.).
Предположим, нам нужно изменить только размер шрифта, но при этом сохранить его имя, жирность, наклон и другие свойства. Мы можем получить текущие значения этих свойств из объекта РисунокКартинка2.Шрифт и передать их в конструктор нового шрифта.
// Более подробный вариант
РисунокКартинка2.Шрифт = Новый Шрифт(
РисунокКартинка2.Шрифт.Имя,
14, // Новый размер
РисунокКартинка2.Шрифт.Полужирный,
РисунокКартинка2.Шрифт.Наклонный,
РисунокКартинка2.Шрифт.Подчеркнутый,
РисунокКартинка2.Шрифт.Зачеркнутый,
РисунокКартинка2.Шрифт.Масштаб
);
// Более краткий вариант, если остальные параметры по умолчанию не меняются
РисунокКартинка2.Шрифт = Новый Шрифт(
РисунокКартинка2.Шрифт.Имя,
14, // Новый размер
РисунокКартинка2.Шрифт.Полужирный // Сохраняем жирность
);
В первом варианте мы явно передаем все существующие свойства шрифта, кроме размера, который мы меняем на 14. Во втором, более кратком, мы полагаемся на то, что остальные параметры конструктора (кроме указанных) будут взяты по умолчанию или из исходного шрифта, если это допустимо.
Параметр Масштаб позволяет пропорционально изменить размер шрифта, что очень удобно. Если мы хотим увеличить шрифт на 20% от его текущего размера, сохраняя при этом все остальные свойства, мы можем сделать это следующим образом:
РисунокКартинка2.Шрифт = Новый Шрифт(РисунокКартинка2.Шрифт,,,,,,, 120);
Здесь мы снова передаем исходный объект Шрифт в качестве первого параметра, чтобы сохранить все его свойства, а затем пропускаем все промежуточные параметры до Масштаб, устанавливая его в 120 (120% от текущего размера).
Важно понимать, что объект Картинка типа Текст обычно используется в табличных документах (например, в печатных формах или отчетах) для отображения текста с возможностью его форматирования. Для добавления такого рисунка в коллекцию рисунков табличного документа мы используем метод Добавить() с указанием типа ТипРисункаТабличногоДокумента.Текст.
Само текстовое содержимое, которое будет отображаться этим рисунком, задается через свойство Текст у объекта рисунка.
// Предположим, у нас есть ТабличныйДокумент
Перем ТабДок;
ТабДок = Новый ТабличныйДокумент;
// Добавляем рисунок типа Текст
НовыйРисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
// Устанавливаем его размеры и положение
НовыйРисунок.Лево = 10;
НовыйРисунок.Верх = 10;
НовыйРисунок.Ширина = 100;
НовыйРисунок.Высота = 20;
// Задаем текст
НовыйРисунок.Текст = "Пример текста";
// Теперь можем изменить шрифт, как мы это рассматривали выше
НовыйРисунок.Шрифт = Новый Шрифт(НовыйРисунок.Шрифт,,,Истина); // Делаем текст полужирным
// Выводим табличный документ
ТабДок.Показать();
Таким образом, мы выяснили, что для изменения шрифта в объекте Картинка типа Текст в 1С:Предприятии необходимо создавать новый объект Шрифт с требуемыми параметрами с помощью конструктора Новый Шрифт() и присваивать его соответствующему свойству рисунка. Этот подход позволяет нам гибко управлять внешним видом текста, обходя ограничение на неизменяемость объекта Шрифт.
Помните: всегда создавайте новый объект Шрифт, даже если вы хотите изменить всего одно свойство. Это ключ к успешному форматированию текста в объектах типа Картинка.