|   |   | 
| 
 | Разбить строку на несколько | ☑ | ||
|---|---|---|---|---|
| 0
    
        Креатив 22.03.12✎ 10:34 | 
        Есть печатная форма. В ней не умещается значение строки в одну строку. Может кто видел или у кого-нибудь есть готовый алгоритм для разбивки по количеству символов. А то так ломает писать.     | |||
| 1
    
        DrShad 22.03.12✎ 10:35 | 
        а что там писать?     | |||
| 2
    
        Reset 22.03.12✎ 10:35 | 
        По количеству в общем случае недостаточно, т.к. ширина символов разная. Разве что моноширинный шрифт использовать     | |||
| 3
    
        Креатив 22.03.12✎ 10:39 | 
        (2)Количество можно завсегда занизить.
  (1)Строк 10, а то и 15. | |||
| 4
    
        xard 22.03.12✎ 10:40 | 
        (0) автоперенос отменили?     | |||
| 5
    
        lxs 22.03.12✎ 10:40 | 
        (4) +100500     | |||
| 6
    
        Креатив 22.03.12✎ 10:42 | 
        (4)Ты про тот, что в ячейках? Так он строку-то одну делает с разбухшим самомнением.     | |||
| 7
    
        Reset 22.03.12✎ 10:42 | 
        (3) Понятно, что _придется_ занижать. Т.е. в _большинстве_ случаев строка будет заполнена на 2/3     | |||
| 8
    
        lxs 22.03.12✎ 10:43 | 
        (7) у тебя пробела нет? или ты извращенец?     | |||
| 9
    
        Reset 22.03.12✎ 10:44 | 
        (7) Если на это пофиг, то проблема непонятна. Простейший цикл. +1 к (1)     | |||
| 10
    
        Ненавижу 1С гуру 22.03.12✎ 10:44 | 
        РазмещениеТекста = Переносить     | |||
| 11
    
        Reset 22.03.12✎ 10:44 | 
        (8) У меня тэга <u> нет     | |||
| 12
    
        lxs 22.03.12✎ 10:46 | 
        (11) какого тега, ты о чем?     | |||
| 13
    
        lxs 22.03.12✎ 10:48 | 
        по теме, тебя чем не устраивает свойство ячейки "переносить"? Ты хочешь "лишний" текст в нижнюю ячейку писать?     | |||
| 14
    
        Креатив 22.03.12✎ 10:49 | 
        (13)Ага.     | |||
| 15
    
        lxs 22.03.12✎ 10:50 | 
        в таком случае для начала надо область добавить для строк, и потому тупо в цикле считать количество символов, но с учетом (2).     | |||
| 16
    
        comp2006 22.03.12✎ 10:51 | 
        Функция РазбитьСтрокуНаДвеЧасти(СтрокаДляРазбивки, Разделитель, КолСимволовДляПервойЧасти)
  СтруктураРазбитыхСтрок = Новый Структура; МассивЧастейСтроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаДляРазбивки, Разделитель); Строка1 = ""; Строка2 = ""; КонтрСтрока = ""; Если МассивЧастейСтроки.Количество() > 0 Тогда Для Каждого Значение Из МассивЧастейСтроки Цикл КонтрСтрока = КонтрСтрока + " "+Значение; Если СтрДлина(КонтрСтрока)< КолСимволовДляПервойЧасти Тогда Строка1 = Строка1 + " "+Значение; Иначе Строка2 = Строка2 + " "+Значение; КонецЕсли; КонецЦикла; КонецЕсли; СтруктураРазбитыхСтрок.Вставить("Строка1", СокрЛП(Строка1)); СтруктураРазбитыхСтрок.Вставить("Строка2", СокрЛП(Строка2)); Возврат СтруктураРазбитыхСтрок; КонецФункции | |||
| 17
    
        Reset 22.03.12✎ 10:51 | 
        (12) У тебя цель докопаться или ты не проснулся? Я хотел подчеркиванием выделить слова.     | |||
| 18
    
        Креатив 22.03.12✎ 10:52 | 
        (16)Интересно, но не совсем то.     | |||
| 19
    
        lxs 22.03.12✎ 10:53 | 
        (17) закрыли тему) все ок     | |||
| 20
    
        comp2006 22.03.12✎ 10:54 | 
        (18) Понимаю! Это просто заготовка.     | |||
| 21
    
        Креатив 22.03.12✎ 11:00 | 
        Ладно, всем спасибо. Лень удалось забороть. Сейчас наваяю.     | |||
| 22
    
        Йохохо 22.03.12✎ 11:21 | 
        (0) ширина столбца = 1.25*Количество символов
  по памяти с ИТС, не проверял, мб 1.15, где то в стандартах разработки интерфейса | |||
| 23
    
        Креатив 22.03.12✎ 11:47 | 
        Если кому интересно. стр - исходная строка, ТЗ - две колонки, предел - число символов в строке, строка - полученный обрезок
  Процедура РазбитьНаСтроки(стр, ТЗ) стр1 = СокрЛП(стр); Для Каждого стрк Из ТЗ Цикл Если СтрДлина(стр1) = 0 Тогда Прервать; КонецЕсли; предел = стрк.предел; длн = 0; пп = Найти(стр1, " "); Если пп = 0 Тогда пп = СтрДлина(стр1); КонецЕсли; Пока (длн + пп < предел) и (СтрДлина(стр1) > 0) Цикл стрк.строка = "" + стрк.строка + Лев(стр1, пп); стр1 = Сред(стр1, пп + 1); длн = длн + пп; пп = Найти(стр1, " "); Если пп = 0 Тогда пп = СтрДлина(стр1); КонецЕсли КонецЦикла КонецЦикла КонецПроцедуры | |||
| 24
    
        Йохохо 22.03.12✎ 14:24 | 
        открой тайну предела )     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |