1с размещение текста забивать что это

Обновлено: 04.07.2024

Перенос строки по словам в ячейке грида
Кто-нибудь,помогите пожалуйста с алгоритмом переноса строки по словам.Задача такая: нужно в ячейке.

Перенос по словам
помогите понять задачу var F_in,F_out: Text; Name,S2,S1,TempString,line:string; .

Перенос по словам
Как в Delphi организовать перенос по словам, как в стандартном блокноте?

замени строку с пробелами на Символы.ПС, вдруг получится))) замени строку с пробелами на Символы.ПС, вдруг получится)))

эмм, в смысле? мне бы поподробнее, я совсем новичок)

Ячейка "Подразделение" отображается непонятными символами. Как понимаю, нужно сделать перенос по словам и изменить высоту строк, но вот как?

В печатной форме свойства ячейки. Поставь перенос по словам (там стоит затирать)

Добавлено через 4 минуты
В Макете ОперацииБух

Добавлено через 26 секунд
Что у тебя за конфа?

Добавлено через 10 минут
в свойствах Размещение поставить 'Переносить'
а по умолчанию при выводе справки стоит 'Забивать'
можно как-то сделать, чтобы при выводе справки по умолчанию Размещение стало 'Переносить'?

я то думал что там..
Ребят, вопросы задавайте более конкретно.
А то вопросы типа: "Я нажимаю, а оно не нажимается", "Я нажимаю, а оно не выскакивает", "Где мне нажать чтобы я увидел(а)?", заводят в полный ступор.

Добавлено через 10 минут
в свойствах Размещение поставить 'Переносить'
а по умолчанию при выводе справки стоит 'Забивать'
можно как-то сделать, чтобы при выводе справки по умолчанию Размещение стало 'Переносить'?


ты не поверишь. Поставить в пофигураторе в свойствах ячейки Переносить Спасибо. Я только начинаю изучать 1с. Практически все непонятно, поэтому и задаю Вам такие глупые вопросы

[quote=fimbulwinter;1448554]ты не поверишь. Поставить в пофигураторе в свойствах ячейки Переносить

Добавлено через 5 минут
Добавлено через 4 минуты
В Макете ОперацииБух

Тут написано где это сделать!

Добавлено через 41 секунду
Описывай что делаешь. Куда лезишь.

только в стандартной конфигурации я не могу поменять значение по умолчанию

Бухгалтерия. Толстый или тонкий клиент.

Добавлено через 1 минуту
Конфа закрыта от редактирования?

Добавлено через 41 секунду
Описывай что делаешь. Куда лезишь.

я ж написала выше, что нашла.

Добавлено через 10 минут
в свойствах Размещение поставить 'Переносить'
а по умолчанию при выводе справки стоит 'Забивать'

только в конфигураторе значение по умолчанию "Забивать" поменять на "переносить" не получается

Добавлено через 35 секунд
да, закрыта от редактир.

Добавлено через 33 секунды
Щас обновлюсь попробую помочь. )))

что-то мне уже кажется, что бухам будет проще самим поменять размещение в каждой справке, до этого они вообще просто шрифт на более мелкий меняли)) всего лишь необходимо включить возможность изменения конфигурации не снимая её с поддержки. Затем поменять в форме бух справки на значение какое тебе нужно и прыгать от счастья

Перенос по словам
Определены ли в MIDP 2.0 какие-нибудь средства для отображения текста с переносом по словам? Или.


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


Перенос текста по словам
Надо написать программу в которой при вводе текста, слова в котором разделены любым кол-вом.

StringGrid перенос по словам
Здравствуйте. как сделать чтоб в StringGrid предложения записывались с переносом?

Периодически возникает вопрос: поместится ли текст в ячейке табличного документа? Хоть возникает он редко, но всё-таки возникает. В этой статье рассказывается как можно получить ответ на этот вопрос.

Спасибо, за находку, +10$m
предлагаю поменять название на "подгонка размера шрифта под размеры ячейки". - смысл статьи как обходить случаи кода весь текст не помещается в ячейке. (1) Признаться честно, над названием статьи я, наверное, даже больше просидел, чем над самой статьей. Но с предложенным названием не согласен: статья у меня как раз не как обходить такие случаи, а как их выявить программно. С этим возникает сложность. А вот что делать при таких случаях - это уже у кого на что фантазии хватит. (1) и спасибо за 10$m. Я и не знал что их можно перекидывать. Правда, я не знаю что с ними надо делать :)

Кстати, да, задача редкая, но не тривиальная.
В прошлом году было подобное, но использовал другую методику, основанную на подгонке строки в ячейке и вычислении получившегося количества символов.

Но получилось достаточно корректно, по крайней мере для того набора строк высота строки вычислялась верно.

(2) Да, по ссылке тоже интересное решение. Я б не додумался.

Автору огромное спасибо за качественную и достаточно универсальную реализацию недостающей в 1С функции.
(2) Поручик, эта реализация мне понравилась больше, чем указанная вами.

Пригодилось в печати спецификации на "разлинованной" таблице.

Пока внедрял, наткнулся на то, что 1С (рел. 8.2.13.219) при крайних значениях заполнения в ячейке (когда текст чуть-чуть не умещается и переносится на другую строку) не правильно отрабатывает высоту (через картинку). При отладке видно, что текст ПЕРЕНЁССЯ, а высота картинки возвращается такой же, как и без переноса.
Решил проблему дополнительной проверкой с добавлением одного символа:

//Функция для определения вместится ли текст в ячейку:
Функция ТекстУмещаетсяВЯчейке(пОбласть, пТабДок, пТекст)

ВысотаДо = ВысотаОбластиВмм(пОбласть, пТабДок);

// Скопируем область в новый табличный документ.
// И там уже будем играть с её свойствами.
ВремТабДок = Новый ТабличныйДокумент;
ВремТабДок.Вывести(пТабДок);
ВремОбласть = ВремТабДок.Область(пОбласть.Имя);

ВремОбласть.АвтоВысотаСтроки = Истина;
ВремОбласть.ВысотаСтроки = 0;

ВремОбласть.Текст = пТекст;
ВысотаПосле = ВысотаОбластиВмм(ВремОбласть, ВремТабДок);

Если ВысотаДо >= ВысотаПосле Тогда
//Попробуем отловить умещение "на грани": добавим символ
ВремОбласть.Текст = пТекст + "Щ";
ВысотаПослеСимв = ВысотаОбластиВмм(ВремОбласть, ВремТабДок);
Если ВысотаДо >= ВысотаПослеСимв Тогда
Возврат(Истина);
Иначе
Возврат(Ложь);
КонецЕсли;
Иначе
Возврат(Ложь);
КонецЕсли;

Также на базе этой функции написал ПолучитьМассивУмещающихсяСтрок(пОбласть, пТабДок, пТекст), в которой текст разбивается на несколько умещающихся в указанную ячейку строк.

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

Если мы выберем маленький размер шрифта для короткого текста, возникнет резонное замечание – а зачем тут столько пустого места?

Если выберем шрифт больше и попадется длинный текст – возникает вопрос еще более резонный: а что тут напечатано? Часть текста пропала.

Но, увы, этот способ очень медленный.

Если нужно вывести 1-3 простых ценника – это идеальный вариант. Если большой набор этикеток выводит Ответственный или Важный менеджер и это займет у него 30 минут – тоже не вопрос: он "работает". Но если работник с ТСД нажимает кнопку ОК и больше минуты не получает отклика – этот способ совершенно неприемлем.

Не смотря на простоту постановки, задача оказалась весьма сложной.

Конечно, есть вообще уникально-элементарное решение:

Но это все нужно писать под каждый макет, под каждую ячейку отдельно. Это работает кое-как. И это крайне утомительно, скучно и грустно.

Поэтому пришлось искать свое, рабочее решение.

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

Основная проблема в том, что размер символа не линейно зависит от размера шрифта. Множественные попытки применить математику для расчета или прогнозирования ширин и высот не увенчались успехом.

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

Следующим этапом был вывод:

– если не ставить задачу так строго, то в каком-то очень практичном приближении задачу решить все-таки можно.

Причем, тут нет никакой эмпирики. Все очень строго. Но требует статичного массива информации. (Кто постарше - помните "Таблицы Брадиса"?)

В результате появилась достаточно простая схема: каждый символ имеет некую ширину, которую можно определить. Каждая строка имеет определенную высоту, не зависящую от набора символов в ней. Размер ячейки определяется как: Ширина = (сумма ширин символов строки) + (поля по ширине); Высота = (высота одной строки)*(количество строк) + (вертикальные поля).

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

К публикации прилагается тестовый фрагмент таблицы размеров шрифта Arial (обычный, курсив, полужирный, полужирный курсив) от 8 до 48.

Ширины расчитаны для букв латиницы, кириллицы (в т.ч. украинских Ї, Ґ ), цифр и основоного набора символов.

Далее – просто ремесло.

Набор предложенных функций реализует следующий механизм:

1. Как и в стандартной схеме мы

1.1. создаем/получаем табличный документ

1.2. получаем/создаем макет

1.3. наполняем макет информацией (заполняем значения параметров и проч.)

1.4. выводим/присоединяем область макета в конечный документ

2. Стандартные методы табличного документа "Вывести" и "Присоединить" заменяются функциями "ВывестиИПодогнатьТекст" и "ПрисоединитьИПодогнатьТекст".

В качестве параметров передаются:

ТабДокПриемник - документ, в который собственно осуществляется вывод

ТабДокИсточник - область макета с заполненными параметрами (или другой табличный документ),

Ячейки - строка с именами или адресами ячеек, для которых необходимо подобрать размер шрифта

Минимальный допустимый размер шрифта

Обязательными являются только два первых параметра.

Если не указаны имена ячеек – подгоняется текст во всех ячейках источника, имеющих "ТипЗаполнения" "Параметр" или "Шаблон".

Если не указан минимальный размер – будет взят минимальный размер, присутствующий в таблице ширин (он же будет использован, если в параметре передано меньшее значение)

УдалятьПробелыПереноса. Кому-то этот параметр покажется смешным и бесполезным. Но я не смог его проигнорировать (тем более что реализуется его назначение в рамках основной задачи очень просто). Суть в следующем.

Например, мы выводим в ячейку несколько однотипных значений (например, цифровых артикулов). По ширине в строках вмещается одинаковое их количество. Если в ячейке установлены размещение текста "Переносить" и Горизонтальное выравнивание Центр, то получится, что последняя строка несколько смещается вправо (см. Рис). Если же заменить пробелы, по которым происходят переносы строк, символами ПС – картинка выглядит гораздо приятнее.


В качестве максимального (с него начинается расчет) принимается размер, указанный разработчиком/дизайнером в макете.

В алгоритме принципиально не учитываются стандартные вертикальные поля и, где это возможно – горизонтальные.

Если возникнет желание их учитывать – в коде есть необходимые комментарии (сами значения в таблице ширин присутствуют).

Ячейки с типом размещения текста "Забивать" и "Обрезать" - не рассматриваются.

Таблицу ширин можно загружать из файла или из справочника. В модуле обработки необходимо внести изменения в шаблоне функции загрузки таблицы ширин.

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

Предложение загрузить файл ширин выводится при открытии обработки. Но это можно зделать и позже по кнопке "Прочитать параметры шрифтов". Также на форме есть две кнопки: Тест1 (подгоняет произвольный текст в ячейку таб.документа на форме) и Тест2 (выводит несколько примеров на основании макета в табличный документ).

Вот, по сути, и все.

В прилагаемой обработке показан упрощенный алгоритм (для облегчения понимания).

В рабочей версии присутствует дополнительный функционал:

* коэффициент высоты (позволяет принудительно управлять размером вертикальных полей)

* интерполяция размера (если в таблице ширин отсутствует необходимый размер)

Не уверен, что этот функционал необходим. Это я добавлял уже под собственные задачи.

Пробуйте. Могут возникнуть неточности при других версиях шрифта и специфических драйверах принтеров.

Значения ячеек и элементы управления в табличном документе

Табличный документ (ТД) состоит из строк и столбцов, которые образуют ячейки. В этой статье рассмотрены возможности "1С:Предприятия 8", позволяющие разместить в ячейках табличного документа элементы управления для редактирования значений.

Ниже рассмотрены следующие темы:

  • Свойства "Текст" и "Значение"
  • Свойство "Формат"
  • Элементы управления
    • Элементы управления, встроенные в ячейку
    • Элементы управления, не встроенные в ячейку
    • Расширение элементов управления, расположенных в поле табличного документа

    Свойства "Текст" и "Значение" ячейки табличного документа

    Основные свойства у каждой ячейки табличного документа — это Текст и Значение , причем по умолчанию доступно свойство Текст , а свойство Значение заблокировано.

    ВАЖНО! Свойства Текст и Значение не могут быть использованы одновременно! Если свойство-признак СодержитЗначение установлено в значение Истина , то свойство Текст недоступно, и наоборот, если свойство-признак СодержитЗначение равно Ложь , то свойство Значение недоступно, а также все связанные другие свойства, например, ТипЗначения и ЭлементУправления .

    Ниже на рисунке показана палитра свойств для ячейки табличного документа. Обратите внимание, что флажок Содержит значение не установлен, поэтому данная ячейка будет отображать Текст .


    Свойство Текст имеет тип Строка . Если в ячейке необходимо разместить какую-либо текстовую информацию, необходимо использовать именно свойство Текст , например:

    Обратите внимание, что даже если вы присвоите свойству Текст значение другого типа (не строкового), то оно все равно будет интерпретировано как строка. Значения базовых типов преобразуются к строке, а для ссылочных типов данных (элементов справочников, документов и т. д.) берется их представление. Если же необходимо разместить в ячейке значение другого типа, например, число, булево, дату или ссылку, и при этом не преобразовывать это значение к строке, то нужно использовать свойство Значение .

    Для того чтобы появилась возможность использовать свойство Значение , необходимо явно присвоить свойству ячейки СодержитЗначение значение Истина или установить флажок Содержит значение в палитре свойств, как это показано на следующем рисунке:


    Для ячейки, у которой установлен признак СодержитЗначение , можно задать тип значения, размещаемого в ячейке. На следующем рисунке указан тип Строка , но есть также возможность указать несколько возможных типов, используя составной тип данных:


    Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка:

    Свойство "Формат" ячейки табличного документа

    Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство Формат , которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат() системы "1С:Предприятие 8". Свойство Формат может быть установлено как интерактивно — через палитру свойств, так и программно — из встроенного языка, например:

    Элемент управления в табличном документе

    Элементы управления, встроенные в ячейку

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

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

    Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом, и в ней отображается флажок:


    Ниже показан пример установки элемента управления типа Флажок из встроенного языка:

    Элементы управления, не встроенные в ячейку

    Существует еще один способ размещения элемента управления в ячейке: использование независимого элемента управления и его "привязка" к нужной ячейке. В этом случае сама ячейка не участвует в процессе работы, а ее значения и свойства ни на что не влияют. Значения нужно будет непосредственно получать из элемента управления как обычного элемента формы. Ячейка при этом используется только как область размещения (привязки) элемента управления.


    Ниже показано, как могут выглядеть такие элементы управления (не встроенные в ячейку):

    В следующем фрагменте приводится пример размещения не встроенного в ячейку элемента управления в табличном документе:

    Расширение элементов управления, расположенных в поле табличного документа

    Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:


    Разберем самые важные свойства и методы:

    • Свойство ВстроенВЯчейку имеет тип Булево и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
    • Свойство Видимость позволяет показать или скрыть элемент управления.
    • Свойство Значение предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
    • Метод Расположить позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.

    Для элементов управления, расположенных в табличном документе, можно обрабатывать события, например, При изменении . Процедура-обработчик события должен находиться в модуле формы. Вот почему элементы управления имеет смысл располагать в табличном документе, только если он выводится в диалог формы (в поле табличного документа).

    Свойство "Защита" ячейки табличного документа

    Это свойство имеет тип Булево и содержит признак защиты ячейки от редактирования. В режиме просмотра в табличном документе недоступны для редактирования ячейки и рисунки, у которых установлено свойство Защита .

    Читайте также: