перенос текста в печатной форме 1с
Вывод большого текста на печать и переносы
Поясняю сабж.
Формирую макет внешней печатной формы. Вывожу область шапки (примерно 5 см от листа), и большой текст. Текст помещаю в 1 ячейку (с параметром «переносить»).
Если текст не лезет на 1-й лист целиком то он весь выкидывется на второй и не разрывается как в word.
Есть какие-либо ещё идеи как решить эту проблему?
(1) SuhoffGV, решал подобную задачу. Придумал одно решение, возможно, неуклюжее, но работало. Схема такая:
Там ещё много всяких нюансов, но работало железно. Текст переносился, как в word. Алгоритм совершенствовать не стал, так как задача была разовая. Не было смысла сильно напрягаться.
Есть еще вариант с картинками. Текст выводится во временный табличный документ «пословесно» в виде области-картинки:
Как только высота картинки превысит рассчитанную величину (можно линейкой измерить), значит перенос совершен. Однако, работать будет медленнее, чем вариант из (8). Сам использую «картиночный» вариант, когда нужно знать количество строк в ячейке.
Есть еще вариант с картинками. Текст выводится во временный табличный документ «пословесно» в виде области-картинки:
пТабДок.Вывести(нОбласть);
Надпись = пТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
Надпись.Расположить(пОбласть);
Высота = Надпись.Высота;
Как только высота картинки превысит рассчитанную величину (можно линейкой измерить), значит перенос совершен. Однако, работать будет медленнее, чем вариант из (8). Сам использую «картиночный» вариант, когда нужно знать количество строк в ячейке.
Можно поподробнее? За счет чего будет изменяться высота картинки?
Точно такой код у меня не сработал.
Что Я Делаю Не Так?
(8) mikr, Не прокатило на стадии тестов.
1. Создал временный массив МассивСтрок для хранения строк текста которые будут помещаться в 1 строку без переноса.
Добавлял получившуюся строку в МассивСтрок (естественно БЕЗ последнего, не влезающего, слова). Т.е. там должны быть строки помещающиеся на в строку без переносов.
Для теста вывел в цикле все строки массива в области из п.2. В итоге в каждой области 3-5 строк текста вместо 1-й как задумывалось.
Макеты печатных форм в 1С 8.3
Для того, чтобы распечатать сформированный документ в 1С, его необходимо преобразовать в печатную форму при помощи макета печатной формы. Такой шаблон формы для печати создается при помощи специального конструктора, который внешне схож с таблицей Excel.
Используя программу 1С в режиме управляемых форм, можно редактировать макет печатной формы и вносить изменения в печатную форму документа самостоятельно. Не изменения конфигурации программы пользователь имеет возможность менять внешний вид (линии таблиц, шрифт и т.д), вставить свой логотип и другое.
Подробнее разберем, что такое печатный макет в 1С, рассмотрим возможности изменения, просмотра и настроек, используем в качестве примера программу 1С:Бухгалтерия версии 3.0.
Как изменить макет печатной формы в 1С 8.3
В качестве примера создадим документ типа «Реализация (акт, накладная)» находящийся в меню «Продажи» и выстоим печатную форму для данной накладной.
Нам понадобилось внести изменения в печатную форму, а также в документ добавить логотип организации.
Организация вправе кроме обязательных реквизитов вносить изменения, при этом сохраняя утверждённый формат документа. Наличие логотипа не является обязательны реквизитом, однако организация может его добавить. Нажав кнопку «Печать», вы переходите в печатную форму, далее нажимает кнопку «Еще», там высвечиваются следующие пункты: «Перейти к макетам форм» и «Изменить макет».
Следующей командой выбираем «Перейти к макетам форм», там представлен весь перечень предлагаемых печатных форм, имеющихся в программе. Используя при помощи отбора пункт «стандартные макеты» (не имеют изменений) просмотр можно сделать более удобным.
Для того, чтобы документ можно было просмотреть и отредактировать необходимо нажать команду «Изменить макет». Далее на экране появится макет печатной формы, выбранный для редактирования. Видно, что большая часть полей формы имеет определенные команды, при использовании которых и происходит заполнение формы. Изменять имена областей и параметров нельзя, так как это может способствовать нарушению работы печатной формы.
Для изменения шрифта, определения линий границ таблицы, выравнивания текста и других изменений касаемо изменений внешнего вида используется панель инструментов, на работоспособность это не влияет. Работа с макетом печатной формы похожа на работу с таблицей Excel.
В случае если в печатной форме мешают линии их можно удалить, использовав кнопку «Границы» далее «Нет границы». Когда линии не мешают, они остаются без изменения, а рисунок расположится сверху.
Если требуется вставить картинку, для этого необходимо нажать кнопку «Еще» и выбрать команду «Картинки», которая находится в меню «Рисунок».
Далее в открывшимся окне необходимо нажать «Выбрать из файла» и выбираем нужный логотип.
Нужный рисунок разместился в форме. При помощи маркеров по краям рисунка, возможно увеличить или уменьшить его размер. В случае если что-то не получилось, действие можно изменить, для этого достаточно использовать комбинации Ctrl+Y – вернуть действие, Ctrl+Z – отменить действие.
Вставляется логотип в рамке. Далее правой кнопкой нажимаем на вставленный логотип и выбираем меню «Свойства».
В появившимся окне можно задать параметры объекта. Нам необходимо удалить рамку, для этого мы нажимаем «Стиль линии» далее «Без линии».
Размещение рисунка между двумя горизонтальными линиями красного цвета, является обязательным, не стоит об этом забывать. В противном случае его попросту не будет видно в форме. Что бы рисунок поместился, строки формы мы раздвинули. Далее нажимаем «Записать и закрыть» и оцениваем получившийся результат.
Проверили, логотип на месте.
Так у пользователя есть возможность вносить изменения в макеты печатных форм, не меняя при это конфигурацию.
После этого, если зайти в раздел «Перейти к макетам печатных форм», нажать кнопку «Еще», то можно увидеть, что возле измененного макета появился зелёный карандаш, что говорит о том, что макет является изменённым. В случае если пользователю понадобится восстановить исходный макет, то достаточно нажать кнопку «Использовать стандартный макет».
Цвет карандаша при этом изменится на черно-белый, а при печати форма документа будет стандартной.
В том случае, если изменения нужно удалить навсегда, то следует нажать на красный крестик. Появившийся ранее карандаш исчезнет, а все изменения макета будут удалены.
В макет печатной формы рисунок вставляется автоматически.
Шаблон и параметры макета
Таким образом пользователь самостоятельно способен добавить в макет какие-то значения для документа, при помощи параметров. Для того, чтобы удобнее было сориентироваться в параметрах, лучше просмотреть другие макеты документов. Например, для того чтобы в ячейку выводилась цена, артикул или товар, нужно просто указать необходимый параметр в ячейке.
Для просмотра настроек этой ячейки, необходимо нажать на нее правой кнопкой мыши и выбрать «Свойства».
На экране появилось окно, в котором видно, что значение ячейки — это параметр. Но задать можно не только параметры и текст, также в макете для ячейки возможно задать шаблон, в свойствах должно быть указано, что это именно шаблон. При использовании шаблона можно скомбинировать параметры и текстовые значения. Для это нужно в значении ячейки товара отметить, что это шаблон, а при выборе значения шаблона в поле «Текст» при указании параметра использовать квадратные скобки.
После сохранения макета, рядом появляется карандаш, который говорит о том, что макет изменялся.
Теперь проверяем сохраненный макет, открываем и видим, что в ячейке есть написанный текст.
Текст с форматированием в макете печатной формы добавляется таким же образом. Используя шаблон нельзя в одной ячейке применить сразу несколько вариантов форматирования, это значит, что оформление будет для всей ячейки.
Рассмотрев примеры видно, что при необходимости изменить макеты возможно. В случаях, требующих создания внешней или новой печатной формы, используется уже режим «Конфигуратор», в пользовательском же режиме доступны только не большие изменения.
Программирование в 1С для всех
В этой статье изучим один из примитивных типов платформы 1С 8.3 – тип Строка. Научимся выводить строки, соединять, переносить, объединять с другими примитивными типами, а также узнаем, как работают строки в серверном и клиентском контексте, и научимся работать со строками на управляемой форме и в реквизитах объектов.
Строка в 1С
Строка это примитивный тип. Создать переменную типа строка достаточно просто. Нужно переменной присвоить какое-то значение в кавычках.
Метод Сообщить в 1С
Самый простой вариант вывести какую-то строку, это использование процедуры Сообщить. Это процедура глобального контекста, которая выводит сообщение пользователю внизу формы.
В параметре этой процедуры указывается переменная с типом строка (или сама строка), которая будет выведена пользователю на форме.
Если мы код выше применим на какой-нибудь управляемой форме, то получим такое сообщение.
Как объединить строки в 1С
В платформе 1С 8.3 имеется возможность объединять строки. Эта операция называется конкатенация, и выполняется при помощи оператора +.
Можно объединить строки, просто сложив две строки в кавычках. Вот так
Также, можно сложить две переменных с типом строка.
Объединять можно и несколько строк.
Перенос строки в 1С
Все строки, которые мы делали ранее, представляли собой одну длинную строку, что, согласитесь, бывает иногда не совсем удобно. Чтобы не испытывать неудобства, в платформе 1С можно переносить строки, тем самым получая многострочные строки. Для этих целей имеется символ переноса строки – «|» (вертикальная черта).
Наша строка с переносом должна иметь следующий вид.
В случае переноса, после окончания ряда строки не должно быть ни каких символов, а каждая новая строка должна начинаться с символа переноса строки «|».
Если мы выведем эту строку с помощью уже знакомого нам метода Сообщить, то будет такой результат.
Причём, обращу ваше внимание, что не достаточно просто написать символ «|» в строке, нужно этот символ, именно, перенести на новую строку в коде. Поэтому при написании такой строки:
Будет выводиться неверный результат:
Кавычки в строке в 1С
Иногда необходимо внутри строки отобразить кавычку как символ, как это сделать, если у нас кавычка открывает или закрывает строку. Для того, чтобы в строке вывелась кавычка необходимо в строке написать две кавычки подряд.
Будет выдавать следующий результат:
Пустая строка в 1С
А если нам нужно задать пустую строку? В этом случае достаточно просто написать две кавычки рядом, но так, чтобы между ними не было пробела.
Также, в платформе 1С 8.3. имеется возможность проверить, является строка пустой или нет. Для этого необходимо воспользоваться функцией ПустаяСтрока, где в качестве параметра нужно указать проверяемую строку, а возвращает она Истину, или Ложь, в зависимости от того, пустая строка или нет.
Также, эта функция вернет Истина, если в строке одни пробелы.
В этом примере я воспользовался отладкой в коде.
Перевод примитивных типов в строку
Часто возникает задачи, когда нужно примитивный тип перевести в строку, это можно сделать, используя метод Формат, или просто применить метод глобального контекста Строка, где в качестве параметра указать значение примитивного типа. При помощи этого метода можно перевести число в строку, дату в строку и тип булево в строку.
В коде ниже, преобразуются число, булево значение Истина и дата (текущая дата) в строку, а потом все это выводится в сообщении.
У этого кода будет следующий результат:
Причем, в методе Сообщить мы можем в некоторых случаях указать и переменную не строкового типа.
Также можно операцией конкатенацией соединять переменную типа строка с примитивной переменной не строкового типа.
В обоих случаях код нормально отработается.
Конкатенацией мы можем соединить строку с другим примитивным типом, но не можем, к примеру, соединить дату и булево.
Рекомендую вам не злоупотреблять конкатенацией с другими типами, иногда это может приводить к критическим ошибкам.
Строка 1С в клиентском и серверном контексте
Переменную примитивного типа строка можно создать, как в серверном, так и в клиентском контексте. Такой код будет вполне рабочий.
И также, для строк имеется возможность сериализации: т.е. можно перенести переменную с типом строка с клиента на сервер и наоборот:
Поэтому, и такой код будет вполне рабочим:
И наоборот, код также будет работать:
Таким образом, переменную с примитивным типом строка мы можем передать как с клиента на сервер, так и наоборот – с сервера на клиент.
Использование типа Строка в реквизитах объектов
Для того, чтобы реквизит какого-нибудь объекта имел тип Строка, достаточно просто указать этот тип в свойстве Тип нужного реквизита объекта.
У реквизита со свойством строка мы можем указать максимальную длину строки, а также будет длина строки фиксированная или переменная. Максимальная длина – это максимальное количество символов, которое можно вписать в строку.
Если мы укажем, что длина строки фиксированная, то длина строки реквизита объекта всегда будет приводиться к максимальной (заполняться пробелами).
Например, у реквизита ПолноеНаименование справочника Товары, я указал длину строки 10, и также отметил, что это фиксированная длина.
Если я запишу какое-то значение в поле формы, от оно автоматически заполнится пробелами до конца строки, и точно также с пробелами запишется в базу данных.
А если бы мы указали, что допустимая длинна – переменная.
То в этом случае, к строке не добавляются пробелы, и в базу записывается только то, что мы написали.
Также у строки можно указать, что она имеет неограниченную длину
В этом случае в строку можно вписать любое количество символов. Рекомендуется крайне редко использовать свойство Неограниченная длина, поскольку это свойство не совсем положительно сказывается на производительности.
Использование типа строка на управляемой форме
Реквизит управляемой формы 1С также может иметь тип Строка. Достаточно это указать в свойстве Тип реквизита.
Причем нам нужно нажать на кнопку «…» свойства, чтобы получить доступ к дополнительным свойствам строки.
В открывшемся окне мы можем указать длину строки, и установить (или снять) признак неограниченной длинны строки.
Если мы снимем признак неограниченности длинны строки, то сможем указать, какая будет строка – фиксированная или переменна.
Если мы перетащим реквизит в элементы формы, то будет создано поле ввода, в которое пользователь может вводить любую строковую информацию.
У нас имеется возможность сделать многострочный режим ввода, если у элемента поле ввода установим в свойство Многострочный режим значение Да.
Другие статьи о примитивных типах:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Перенос по словам в ячейке
Перенос по словам в ячейке
Доброго времени суток. Не подскажете, как сделать то, что в заголовке?:)
Перенос строки по словам в ячейке грида
Кто-нибудь,помогите пожалуйста с алгоритмом переноса строки по словам.Задача такая: нужно в ячейке.
Перенос по словам
Как в Delphi организовать перенос по словам, как в стандартном блокноте?
эмм, в смысле? мне бы поподробнее, я совсем новичок)
Ячейка «Подразделение» отображается непонятными символами. Как понимаю, нужно сделать перенос по словам и изменить высоту строк, но вот как?
В печатной форме свойства ячейки. Поставь перенос по словам (там стоит затирать)
Добавлено через 4 минуты
В Макете ОперацииБух
Добавлено через 26 секунд
Что у тебя за конфа?
Добавлено через 10 минут
в свойствах Размещение поставить ‘Переносить’
а по умолчанию при выводе справки стоит ‘Забивать’
можно как-то сделать, чтобы при выводе справки по умолчанию Размещение стало ‘Переносить’?
я то думал что там..
Ребят, вопросы задавайте более конкретно.
А то вопросы типа: «Я нажимаю, а оно не нажимается», «Я нажимаю, а оно не выскакивает», «Где мне нажать чтобы я увидел(а)?», заводят в полный ступор.
Добавлено через 10 минут
в свойствах Размещение поставить ‘Переносить’
а по умолчанию при выводе справки стоит ‘Забивать’
можно как-то сделать, чтобы при выводе справки по умолчанию Размещение стало ‘Переносить’?
[quote=fimbulwinter;1448554]ты не поверишь. Поставить в пофигураторе в свойствах ячейки Переносить
Добавлено через 5 минут
Добавлено через 4 минуты
В Макете ОперацииБух
Тут написано где это сделать!
Добавлено через 41 секунду
Описывай что делаешь. Куда лезишь.
Бухгалтерия. Толстый или тонкий клиент.
Добавлено через 1 минуту
Конфа закрыта от редактирования?
Добавлено через 41 секунду
Описывай что делаешь. Куда лезишь.
я ж написала выше, что нашла.
Добавлено через 10 минут
в свойствах Размещение поставить ‘Переносить’
а по умолчанию при выводе справки стоит ‘Забивать’
только в конфигураторе значение по умолчанию «Забивать» поменять на «переносить» не получается
Добавлено через 35 секунд
да, закрыта от редактир.
Добавлено через 33 секунды
Щас обновлюсь попробую помочь. )))
Перенос по словам
Определены ли в MIDP 2.0 какие-нибудь средства для отображения текста с переносом по словам? Или.

Здрасьте. В общем-то, у меня есть необходимость засунуть огромное количество текста в пространство.

Надо написать программу в которой при вводе текста, слова в котором разделены любым кол-вом.
StringGrid перенос по словам
Здравствуйте. как сделать чтоб в StringGrid предложения записывались с переносом?
Перенос текста по словам в С#
Привет Всем! Я вообще занимаюсь С++ и сейчас только что начал изучать С#. Знаем, что в Borland С++.
Перенос по словам в IDEA
Как в идее включить перенос по словам?
Форматированный документ
1С:Предприятие 8.3.14. Документация
Глава 7. Формы
В процессе разработки прикладных решений возникает необходимость предоставить пользователю возможность выполнять редактирование текстов с оформлением (далее форматированный документ). В качестве примера такой необходимости можно привести написание писем электронной почты, различных служебных записок или сопроводительных документов.
Для работы с форматированным документом предназначен объект ФорматированныйДокумент, с помощью которого можно выполнять программную обработку документа, и поле вида Поле форматированного документа, который предназначен для интерактивного изменения форматированного документа.
В информационной базе форматированный документ рекомендуется хранить в реквизите типа ХранилищеЗначения, в который помещается объект типа ФорматированныйДокумент.
Для того чтобы предоставить пользователю возможность интерактивного изменения документа, следует выполнить следующие шаги:
В процессе работы с документом можно использовать закладки. Закладка описывает положение некоторого символа в документе. При определении положения нужно учитывать следующие особенности:
Если положение символа, с которым связана закладка, изменится, то закладка будет отслеживать положение связанного символа. Если удаляется символ, с которым связана закладка, то закладка пытается привязаться к следующему символу, а если этого символа нет ‑ закладка будет указывать на конец документа. Если заменить целиком весь форматированный документ, то все закладки в этом документе станут невалидными.
С помощью закладок можно получать и устанавливать выделение или позицию курсора в редакторе, добавлять и удалять элементы текста в документе (собственно текст, картинка, перевод строки).
Если при получении выделения позиция начала и позиция окончания совпадают, это значит, что выделение отсутствует и получено положение курсора. Так же и при установке выделения: если начальная и конечная позиция выделения совпадают, происходит изменение позиции курсора, без выделения. При программном изменении текста собственно отображение выделения в поле форматированного документа не изменится. Если перед изменением текста выполнялось получение границ выделения, то после изменения текста, закладки могут изменить свою позицию, сохранив при этом свое положение. Другими словами, если вставка происходила внутрь выделения, то позиция закладки, описывающей окончание выделения, увеличится на размер вставленного текста и т. д.
Приведем пример получения и установки выделения в редакторе форматированного документа.
При выполнении операций удаления закладка, описывающая начало удаляемого фрагмента, может оказаться некорректной. Если при этом необходимо сохранить позицию начала удаляемого фрагмента, то следует воспользоваться позицией начала фрагмента. Так, пример замены выделенного текста другим текстом будет выглядеть следующим образом.
Если в форматированном документе присутствуют гиперссылки и форматированный документ отображается в режиме Только просмотр, то гиперссылки доступны для перехода. Переход выполняется в новом окне веб-браузера.
Также имеется возможность программного доступа к тексту форматированного документа. Сам текст состоит из объектов типа ПараграфФорматированногоДокумента, который доступен через свойство Элементы объекта ФорматированныйДокумент. При этом каждый параграф состоит из объектов типа
Доступ к этой коллекции обеспечивается через свойство Элементы объекта ПараграфФорматированногоДокумента. Границей элемента не обязательно является граница слова.
Например, следующий пример показывает перебор всех параграфов форматированного документа, содержащих текст, и отдельную обработку каждого параграфа.
Обработка элементов форматированного документа, входящего в состав параграфа, может оказаться полезной в том случае, если нужно, например, убрать все оформление в виде курсива или полужирного шрифта.
При программной работе с текстом также могут помочь методы ПолучитьЭлементы() и СформироватьЭлементы(). Эти методы возвращают массив элементов форматированного документа. Чтобы увидеть разницу в работе этих методов, рассмотрим пример форматированного документа, содержащего следующую строку: 012 456 890. Строка состоит из 11 символов, где на месте символов 4 и 8 расположены пробелы. Необходимо получить элементы, которые расположены между позициями 2 и 9 этого документа.
Разница в работе этих методов будет в том, что метод ПолучитьЭлементы() возвращает все элементы, которые попадают между заданными закладками (включая все граничные элементы), т. е. рассматриваемом примере будет выведен следующий текст:
Другими словами, при использовании метода СформироватьЭлементы() система формирует набор элементов таким образом, чтобы он включал в себя только то содержимое форматированного документа, которое ограничено закладками.
Такой результат будет даже в том случае, если полученный, после вызова СформироватьЭлементы(), набор элементов никак не изменялся.











































