Изменить шрифт программно

1. 3762515 22.01.14 16:58 Сейчас в теме
В табличном документе, есть ячейка типа "шаблон" в ней три параметра, как программно изменить шрифт одного параметра? Или хотя бы одной ячейки...
Делал так - не работает
		ячейка = ТабДок.Области.Индекс("R1C5:R1C26");
		мШрифт = Новый Шрифт(, 26, Истина, , , ) ;
		ячейка.Шрифт = мШрифт; 
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Rothschild 22.01.14 17:53 Сейчас в теме
(1) 3762515,
для начала нужно понять, что такое
ячейка = ТабДок.Области.Индекс("R1C5:R1C26");

Атрибут Области имеет тип "КоллекцияОбластейТабличногоДокумента"
его метод .Индкес() возвращает вообще-то не ячейку, а число:

КоллекцияОбластейТабличногоДокумента (SpreadsheetDocumentAreaCollection)
Индекс (IndexOf)

Синтаксис:

Индекс(<Область>)
Параметры:

<Область> (обязательный)

Тип: ОбластьЯчеекТабличногоДокумента; РисунокТабличногоДокумента.
Область ячеек или рисунок.
Возвращаемое значение:

Тип: Число.
Индекс области или рисунка в коллекции. Если такой области или рисунка нет, возвращает -1.
Описание:

Получает индекс области или рисунка в коллекции областей табличного документа.

Показать
3. Rothschild 22.01.14 17:55 Сейчас в теме
(2)
ЗЫ
и передавать строковое значение методу судя по документации нельзя,
хотя как знать, как знать.
;)
4. Rothschild 22.01.14 17:56 Сейчас в теме
(1) 3762515,
попробуй так
        ячейка = ТабДок.Область("R1C5:R1C26");
        мШрифт = Новый Шрифт(, 26, Истина, , , ) ;
        ячейка.Шрифт = мШрифт; 

user1619761; alsan; Hogyoku; ledidinka; +4 Ответить
5. Rothschild 22.01.14 17:58 Сейчас в теме
(4)
если лень копаться в мануале, вот:

ТабличныйДокумент (SpreadsheetDocument)
Область (Area)

Вариант синтаксиса: По имени

Синтаксис:

Область(<ИмяОбласти>)
Параметры:

<ИмяОбласти> (обязательный)

Тип: Строка.
Имя области или адрес в формате "R1C1:R2C2", где число после "R" обозначает номер строки, число после "C" - номер колонки, символом ":" (двоеточие) разделяются координаты левого верхнего и правого нижнего угла области. В качестве имени также можно передавать пересечение двух областей, записываемое как "<Имя области 1> | <Имя области 2>".
Вариант синтаксиса: По адресу

Синтаксис:

Область(<НомерПервойСтроки>, <НомерПервойКолонки>, <НомерПоследнейСтроки>, <НомерПоследнейКолонки>)
Параметры:

<НомерПервойСтроки> (необязательный)

Тип: Число.
Номер первой строки области таблицы.
Если отсутствует, то указывается область, состоящая из колонок.
<НомерПервойКолонки> (необязательный)

Тип: Число.
Номер первой колонки области таблицы.
Если отсутствует, то указывается область, состоящая из строк.
<НомерПоследнейСтроки> (необязательный)

Тип: Число.
Номер последней строки области таблицы.
Если выделяется область из колонок (параметр <НомерПервойСтроки> не задан), то указывается номер строки, из которой берется формат строк.
<НомерПоследнейКолонки> (необязательный)

Тип: Число.
Номер последней колонки области таблицы.
Описание варианта метода:

Если последняя строка и последняя колонка отсутствуют, то область задана единственной ячейкой. Если строки или колонки отсутствуют, то область задана диапазоном строк или колонок соответственно. Если метод вызван без параметров, то область задана всей таблицей.
Возвращаемое значение:

Тип: ОбластьЯчеекТабличногоДокумента; РисунокТабличногоДокумента.

Описание:

Получает область табличного документа как область ячеек табличного документа, либо как рисунок с указанным именем. Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

ИменованнаяОбласть = ТабДок.Область("Шапка");
Ячейка = ТабДок.Область("R2C5");
ПрямоугольнаяОбластьЯчеек = ТабДок.Область("R2C2:R3C5");
ОбластьСтрока = ТабДок.Область("R2");
ОбластьСтрок = ТабДок.Область("R2:R4");
ОбластьКолонка = ТабДок.Область("C4");
ОбластьКолонок = ТабДок.Область("C4:C5");


Показать
6. 3762515 23.01.14 08:14 Сейчас в теме
(4) Rothschild, так устанавливается размер шрифта не в одной ячейке, а на всем документе.
7. Rothschild 23.01.14 08:29 Сейчас в теме
(6) 3762515,
не для всего документа, а
для обозначенной тобой области документа
ТабДок.Область("R1C5:R1C26");

которую ты обозвал "ячейкой"
***
но ячейкой она правда не является
;)
8. 3762515 23.01.14 14:28 Сейчас в теме
(7) Rothschild, но шрифт уменьшился во всем документе и как следствие весь макет "съехал"
9. Rothschild 23.01.14 14:55 Сейчас в теме
21. пользователь 11.04.19 15:13
Сообщение было скрыто модератором.
...
22. Achyutagauradas 11.04.19 15:14 Сейчас в теме
//Вот как проще;
Макет = Отчеты.ПрайсЛист.ПолучитьМакет("Макет");// Получаем Макет, 
//здесь ПрайсЛист это имя Отчета который мы создали Отчеты->ПрайсЛист 
ОблЭлемент = Макет.ПолучитьОбласть("Элемент"); Получаем область из Макета. 
//Но надо понимать, что когда создавали макет, 
// то там назначали область(если не знаешь как это то посмотри урок по созданию макетов) 
Выборка = Справочники.Номенклатура.ВыбратьИерархически(); 
// Переменная Выборка принимает коллекцию из справочника Номенклатура 
//(Т.е. будет содержать значения таблицы Номенклатура) 
//Нужно не забывать что потом нужно обходить коллекцию, 
// т.е. пройтись в цикле по всей таблице Номенклатура и взять данные каждой строки. 
//Цикл простой: 
Пока Выборка.Следующий() Цикл 
ОблЭлемент.Параметры.Заполнить(Выборка);	
ТабДок.Вывести(ОблЭлемент); 
ячейка = ТабДок.Область("Элемент"); Получаем Область Табличного документа 
// с названием области которое создавали в Макете	
мШрифт = Новый Шрифт(, 10, Истина, , , ) ; Создаем новый шрифт Жирный. 
//Если хотим не жирный то тогда 3-й параметр меняаем на Ложь 
//пример - мШрифт = Новый Шрифт(, 10, Ложь, , , ) ; 
ячейка.Шрифт = мШрифт; И записываем в ячейку этот шрифт. 
КонецЦикла; 
Показать

Надеюсь все просто и понятно.
fuser; user1619761; jun-ko; v_moskalyk; +4 Ответить
10. sergio_krf 14 24.01.14 14:32 Сейчас в теме
Попробуйте так
ВремОбласть = ТабДок.Область("Обл1");
ВремОбласть.Шрифт = Новый Шрифт(ВремОбласть.Шрифт, ,РазмерТекста)
, а область лучше сделать именованной.
Rasten; user1619761; 3gf; alena_igorevna; +4 Ответить
11. 3762515 19.02.14 17:10 Сейчас в теме
Всем спасибо за ответы
12. kiv1c 809 18.04.16 12:49 Сейчас в теме
если нужно поменять шрифт в конкретной области с параметром (Например, параметр ИмяНоменклатуры) то в макете надо назначить области с параметром имя
и тогда получить ее через ВремОбласть = ТабДок.Область("ОбластьСПараметромИмяНоменклатуры"); будет легко.
Rasten; f.lex; +2 Ответить
13. 3762515 19.04.16 20:19 Сейчас в теме
14. psa247 17 13.08.16 22:51 Сейчас в теме
(13) 3762515, так чем решился вопрос? почему бы не написать итог работы?
16. 3762515 17.08.16 16:30 Сейчас в теме
(14) psa247, пост от 2014 года, я банально не помню как решил проблему. Но что-то из предложенного тут помогло)
15. psa247 17 14.08.16 15:50 Сейчас в теме
Это работает!!!

Процедура КнопкаПовернутьТекстНажатие(Элемент)
	ТабДок = ЭлементыФормы.ТабДок;
	ОбТекст = ТабДок.Область("Информация");
	ТекущееПоложение = ОбТекст.ОриентацияТекста;
	ОбТекст.ОриентацияТекста = ?(ТекущееПоложение = 0, 90, 0);
	ОриентацияТекста = ?(ТекущееПоложение = 0, 90, 0);
КонецПроцедуры

Процедура РазмерШрифтаПриИзменении(Элемент)
	ТабДок = ЭлементыФормы.ТабДок;
	ОбТекст = ТабДок.Область("Информация");
	ОбТекст.Шрифт = Новый Шрифт(ОбТекст.Шрифт, ,РазмерШрифта);
КонецПроцедуры
Показать
17. Kochevnik 06.10.16 11:25 Сейчас в теме
Надо было изначально работать не с ТабДоком а с макетом, если работать через ячейки. Например, есть именованная область "Строка" и внутри есть интервал ячеек

Макет = ПолучитьМакет("Макет1");
...
	ОбластьПодСтрока = Макет.Область("R7C4:R7C13");
	ОбластьПодСтрока.Шрифт = Новый Шрифт(ОбластьПодСтрока.Шрифт, ,16);
	
	ОбластьМакета = Макет.ПолучитьОбласть("Строка");
...	
	ТабДок.Вывести(ОбластьМакета);


Можно, естественно, сохранить шрифт, потом его восстановить.
user1619761; ekuz; +2 Ответить
18. psa247 17 09.10.16 09:49 Сейчас в теме
(17) Kochevnik, а есть принципиальная разница? с чем лучше работать - с табдоком или макетом?
19. progr-2008 118 20.07.17 12:40 Сейчас в теме
(18)Макет вроде более фиксирован, чем программно создаваемый табличный документ.
20. APTEM_SLV 164 27.03.19 11:08 Сейчас в теме
Шрифт:
Новый Шрифт("Arial",8,Ложь,Ложь,Ложь,Ложь); //имя,размер,полужирный,наклонный,подчеркивание,зачеркивание
user1316759; One_Assembler; Dr.LektoR; st4rk; Ryo3000; user822247; Capitullo; Aligator69; Lilia; MarinkaPG; wowik; ivv1970; +12 Ответить
23. wau8824ru 22 16.12.19 11:05 Сейчас в теме
(20)
Шрифт:

Устаревшая информация.
24. wau8824ru 22 16.12.19 11:31 Сейчас в теме
(20)
Шрифт:

Шрифт (Font)
На основании другого шрифта
Синтаксис:
Новый Шрифт(<Шрифт>, <ИмяШрифта>, <Размер>, <Полужирный>, <Наклонный>, <Подчеркнутый>, <Зачеркнутый>, <Масштаб>)
Параметры:
<Шрифт> (обязательный)
Тип: Шрифт.
Шрифт, на основании которого будет формироваться новый шрифт.
<ИмяШрифта> (необязательный)
Тип: Строка.
Системное наименование шрифта. Если параметр не задан, то не изменять относительно исходного шрифта.
Значение по умолчанию: Пустая строка.
<Размер> (необязательный)
Тип: Число.
Размер шрифта. Если параметр не указан, то не изменять относительно исходного шрифта.
Значение по умолчанию: -1.
<Полужирный> (необязательный)
Тип: Булево.
Признак жирности шрифта. Если параметр не указан, то не изменять относительно исходного шрифта.
<Наклонный> (необязательный)
Тип: Булево.
Признак наклонного начертания шрифта. Если параметр не указан, то не изменять относительно исходного шрифта.
<Подчеркнутый> (необязательный)
Тип: Булево.
Признак подчеркнутого начертания шрифта. Если параметр не указан, то не изменять относительно исходного шрифта.
<Зачеркнутый> (необязательный)
Тип: Булево.
Признак зачеркнутого начертания шрифта. Если параметр не указан, то не изменять относительно исходного шрифта.
<Масштаб> (необязательный)
Тип: Число.
Задает значение свойства Масштаб.
Значение по умолчанию: 100.
Описание:
Создает шрифт на основании имеющегося шрифта. Все параметры могут быть взяты из исходного шрифта, при этом параметры, указанные в конструкторе, имеют приоритет над исходными.
Пример:
ЖирныйШрифт = Новый Шрифт(Макет.Область(1,1).Шрифт,,,Истина);
Aligator69; +1 Ответить
25. wau8824ru 22 16.12.19 11:33 Сейчас в теме
(20)
Шрифт:

Шрифт (Font)
На основании описания шрифта
Синтаксис:
Новый Шрифт(<ИмяШрифта>, <Размер>, <Полужирный>, <Наклонный>, <Подчеркнутый>, <Зачеркнутый>, <Масштаб>)
Параметры:
<ИмяШрифта> (необязательный)
Тип: Строка.
Системное наименование шрифта. Если параметр не задан, то не изменять относительно стиля.
Значение по умолчанию: Пустая строка.
<Размер> (необязательный)
Тип: Число.
Размер шрифта. Если параметр не указан, то не изменять относительно стиля.
Значение по умолчанию: -1.
<Полужирный> (необязательный)
Тип: Булево.
Признак жирности шрифта. Если параметр не указан, то не изменять относительно стиля.
<Наклонный> (необязательный)
Тип: Булево.
Признак наклонного начертания шрифта. Если параметр не указан, то не изменять относительно стиля.
<Подчеркнутый> (необязательный)
Тип: Булево.
Признак подчеркнутого начертания шрифта. Если параметр не указан, то не изменять относительно стиля.
<Зачеркнутый> (необязательный)
Тип: Булево.
Признак зачеркнутого начертания шрифта. Если параметр не указан, то не изменять относительно стиля.
<Масштаб> (необязательный)
Тип: Число.
Задает значение свойства Масштаб.
Значение по умолчанию: 100.
Описание:
Создает шрифт из отдельных параметров.
Пример:
ШрифтШапки = Новый Шрифт("Verdana", 20,Истина);
26. wau8824ru 22 18.12.19 17:59 Сейчас в теме
	Макет = ПолучитьМакет("Счет");
	Если ЭтаИБ <> "1''УТ" Тогда
		Если ЭтаИБ = "2''УТ" Тогда
			НовШрифт = Новый Шрифт( , , Ложь, Истина);
		ИначеЕсли ЭтаИБ = "3''УТ" Тогда
			НовШрифт = Новый Шрифт( , , Истина, Ложь);
		КонецЕсли;
		Для Каждого Обл Из Макет.Области Цикл
			// Не всегда шрифт у области доступен, поэтому через попытку.
			Попытка
				Обл.Шрифт = НовШрифт;
			Исключение
			КонецПопытки;
		КонецЦикла;
	КонецЕсли;
Показать


Новый Шрифт( , , Полужирный, Наклонный);


Таким образом меняются только характеристики шрифта - Полужирный, Наклонный

Если указать шрифт в первом параметре, то программа примет размер шрифта для всех областей, для правильного изменения шрифта нужно в 1вый параметр вносить ссылку на шрифт изменяемых ячеек а он недоступен у области.
27. kauksi 216 25.01.24 15:11 Сейчас в теме
я написал проще в конце процедуры Сформировать отчет (для УПП)
ДокументРезультат.Область(1,1,1000,20).Шрифт= Новый Шрифт(ДокументРезультат.Область(1,1).Шрифт,,8,Ложь,ложь,ложь,ложь);
28. satord 14.03.24 15:06 Сейчас в теме
Мне необходимо было установить в одной ячейке строки выделенный шрифт по условию,
а из статьи это не получалось.
Получилость так:

[******
ОбластьСтрока1 = Макет.ПолучитьОбласть("Строка|ДокументОснование");
ОбластьСтрока2 = Макет.ПолучитьОбласть("Строка|Документ");

ТекШрифт = ОбластьСтрока2.ВыделенныеОбласти[0].Шрифт;
ВыдШрифт = Новый Шрифт(ТекШрифт,,,Истина);

*******

ТекДокументОснованиеТЗ = МСдвиг+Строка(ДокументОснованиеТЗ);
ТекДокументТЗ = МСдвиг+Строка(ДокументТЗ);

ОбластьСтрока1.Параметры.ДокументОснованиеТЗ = ДокументОснованиеТЗ;
ОбластьСтрока2.Параметры.ДокументТЗ = ДокументТЗ;
ОбластьСтрока1.Параметры.ТекДокументОснованиеТЗ = ТекДокументОснованиеТЗ;
ОбластьСтрока2.Параметры.ТекДокументТЗ = ТекДокументТЗ ;

Если ДокументТЗ = ДокументСсылка_НаФорме Тогда
ОбластьСтрока2.ВыделенныеОбласти[0].Шрифт = ВыдШрифт;
Иначе
ОбластьСтрока2.ВыделенныеОбласти[0].Шрифт = ТекШрифт;
КонецЕсли;

ТабДок.Вывести(ОбластьСтрока1,ТекУровень);
ТабДок.Присоединить(ОбластьСтрока2,ТекУровень);

********
Сильно не пинайте, что неотформатировал код.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот