новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Полуторные интервалы в текстах (пример решения проблемы)

  • Добавить свою публикацию
  • для этого требуется регистрация

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

Сделать можно вставляя текст через строку, где каждая вторая и будет этим интервалом, но данное решение редко возможно, потому что (как к примеру в моем случае) в тексте много параметров разной длины и предугадать размещение совершенно не возможно.

Решил проблему следующим способом:

На макете для одного выводимого раздела создал две области:

1) Тут уже либо параметром одним весь тест загоняем, либо шаблоном, но условие такое, что текст будет в одной ячейке

2) Область с двумя строками (1 - обычной высоты, 2 - для интервала), в первой строке у нас всего один параметр и назовем его к примеру "Текст";

Далее получаем первую область ("ТекстПриказа1" к примеру) и заполняем параметры. Область выводим в другой ТабличныйДокумент 

Получаем из другого ТаблчиногоДокумента заполненное значение параметра, в цикле ищем пробелы, режем строки и выводит вторую область ("ТекстПриказа2")

 

Пример кода:

 

/// выводим область во второй табличный документ
ТабДокумент2.Вывести(Область);
/// читаем заполненную строку
СтрокаЗаполнения = ТабДокумент2.ПолучитьОбласть(1, 1).ТекущаяОбласть.Текст;
ДлинаДо = СтрДлина(СтрокаЗаполнения);
Отрезать = 1;

/// отрезаем и выводим то, что меньше 75 символов - по умолчанию считал такой длину строки (можно меньше)
Пока ДлинаДо > 75 Цикл
	Если ДлинаДо > 75 Тогда
		сч = 75;
	Иначе
		сч = ДлинаДо;
	КонецЕсли;
	
	Пока НЕ сч = 0 Цикл
		Если КодСимвола(СтрокаЗаполнения, сч) = 32 Тогда
			сч1 = сч;
			сч = 0;
		Иначе
			сч = сч-1;
		КонецЕсли;
	КонецЦикла;

	Область = Макет.ПолучитьОбласть("ТекстПриказа2");

	СтрокаЗаполнения1= Лев(СтрокаЗаполнения, сч1);
	ЗаполнитьСтроку = СтрокаЗаполнения1+ Символ(32)+"ненужныенеотображаемыеобязательныеишниесимволы безвторогословавообщеникакнезабиваетячейку";
	Область.Параметры.Текст = ЗаполнитьСтроку;
	ТабДокумент.Вывести(Область);
	
	Отрезать = ДлинаДо - сч1;
	СтрокаЗаполнения = Прав(СтрокаЗаполнения, Отрезать);
	ДлинаДо = СтрДлина(СтрокаЗаполнения);
КонецЦикла;

/// выводим то, что осталось
Область = Макет.ПолучитьОбласть("ТекстПриказа2");
ЗаполнитьСтроку = СтрокаЗаполнения ;
Область.Параметры.Текст= ЗаполнитьСтроку;
ТабДокумент.Вывести(Область);

 

Поясениня:

При формировании строки "Заполнить строку" после пробела вставляем два слова большой длины, эти два слова у нас перенесутся, но не отобразятся

Во второй области необходимо соответствующе настроить первую строку - чтобы прижимала книзу текст и переносила, но высоту строки не увеличивала

 
0
Читайте также
1С фриланс
В наше время становиться все более популярным удаленное программирование 1С фриланс - когда программисты создают собственные компоненты и плиложения для 1С удаленно.
Как из 1С записать формулу в ячейке MS EXCEL
Записать формулу в ячейке MS EXCEL
Культура программирования
1С программистам-пишите любые программы корректно (даже мелкие обработки)
Разработки
Нумератор документов 7.7
Как установить нумерацию документов? Можно использовать во всех конфигурациях.
Автоматический подбор шрифта в объекте РисунокТабличногоДокумента
Объект табличного документа -автоматический подбор шрифта
Как свернуть все активные окна
Обработка - Как сворачивать активные окна
≡ к списку статей