8.х Перенос строки в макете

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Raideres, 14 ноя 2019.

  1. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    Как сделать чтобы текст переносился на новую строку(ячейку)
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.156
    Симпатии:
    217
    Баллы:
    104
    Свойство ячейки "РазмещениеТекста" установите в значение "Переносить".

    upload_2019-11-14_15-12-32.png
    --- Объединение сообщений, 14 ноя 2019 ---
    Аа, или Вам нужно вообще на новую строку?
    Вроде, такой возможности нет.
  3. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    Вообще на новую строку
  4. LordMaverick
    Online

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    4.004
    Симпатии:
    465
    Баллы:
    104
    на новую строку/ячейку - никак
  5. Briz
    Offline

    Briz Опытный в 1С

    Регистрация:
    9 апр 2013
    Сообщения:
    134
    Симпатии:
    16
    Баллы:
    29
    (4) уточните задачу...
    для чего, в КАКИХ случаях, а может в доп.область выводить...??
  6. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    http://prntscr.com/pxae0e
    не нравится вывод документа
    в скриншоте внизу вывод просто вывод переносом
    а нужно как наверху чтобы текст забивался в каждую строчку
    в грубую нужно как то вычислить область ячейки если текст умещается то вывожу в парам1
    если не умещается тогда разбиваю по последнему пробелу и вывожу часть текста в парам 1 все остальное в парам 2.
    программно пока не получилось это реализовать
  7. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    828
    Симпатии:
    90
    Баллы:
    54
    А можно скриншоты примеров сюда скинуть, а то не грузит..
  8. Briz
    Offline

    Briz Опытный в 1С

    Регистрация:
    9 апр 2013
    Сообщения:
    134
    Симпатии:
    16
    Баллы:
    29
    (6) ясно...
    Вам НУЖНО увеличиь ВЫСОТУ строки, в которую будет выводиться заключение. И установить у этой ячейки свойство "Размещение текста" - Переносить
  9. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    сейчас так и стоит
    нужно вот так как на скриншоте

    Вложения:

  10. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.173
    Симпатии:
    554
    Баллы:
    204
    Объедините эти ячейки в одну и все. Там вверху есть пункт меню такой.
  11. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    828
    Симпатии:
    90
    Баллы:
    54
    Надеюсь эти пляски с бубном не из-за подчеркивания?
    При выводе на ПФ не вижу разницы.. или нужно видеть именно парам1-парамN?
    скажите основную цель, а то у меня такое чувство, что вы пытаетесь придумать костыль на ровном месте...
  12. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    http://infostart.ru/public/554753/
    извините что выложил суда ссылку на сторонний ресурс вот нашел что в принципе я хочу
  13. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    что я тут сделал не так у меня выводится почему тот через строчку одна с текстом одна пустая
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    ИсходнаяСтрока = "Очень длинная строка, неспособная войти в выделенную
    | для неё область";   //Строка которую нужно разбить
    
    ТабДок                     = Новый ТабличныйДокумент;                 //Создаем Табличный документ
    Макет                     = ПолучитьМакет("Макет");                   //Получает макет
    ОбластьСтрокиВывода     = Макет.ПолучитьОбласть("НекаяОбласть"); //Область в которой мне нужно разбить ячейку на строки (заголовок области)
    ОбластьСтроки            = ОбластьСтрокиВывода.Область("R2C1");   //Ячейка области строки в которую мы и хотим уместить нашу строку (Где находится наш параметр)
    
    ФорматированнаяСтрока     = СтрРазбитьНаПодстрокиПоШиринеЯчейки(ОбластьСтрокиВывода, ОбластьСтроки, ИсходнаяСтрока); //Результат строки для вывода
    
       
    Для Стр = 1 По СтрЧислоСтрок(ФорматированнаяСтрока) Цикл
        ОбластьСтрокиВывода.Параметры.НекийПараметр = СтрПолучитьСтроку(ФорматированнаяСтрока, Стр);
        ТабДок.Вывести(ОбластьСтрокиВывода);
    КонецЦикла;
    
    
    ТабДок.Показать() //Выводим Табличный документ
    КонецПроцедуры
    
    Функция СтрРазбитьНаПодстрокиПоШиринеЯчейки(ТабДок, ТабДокОбластьЯчейки, ИсходнаяСтрока)
        ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока, Символы.ПС, " ");
        //разбить строку на максимальную длину в строке с учётом пробелов
        Пока Истина Цикл
            //получить кол-во строк
            КолВоСтрок = СтрЧислоСтрок(ИсходнаяСтрока);
            //взять последнюю
            ТекСтрока = СтрПолучитьСтроку(ИсходнаяСтрока, КолВоСтрок);
            //если длинее максимума
            ДлинаПодСтроки = СтрДлина(ТекСтрока);
            //получить максимум
            Позиция = 1;
            Пока Позиция < ДлинаПодСтроки Цикл
                Если ПроверитьОднострочныйВыводТекстаВЯчейку(ТабДок, ТабДокОбластьЯчейки, Лев(ТекСтрока, Позиция)) Тогда
                    Позиция = Позиция + 1;
                Иначе
                    Позиция = Позиция - 1;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
            Позиция = ?(Позиция < 1, 1, Позиция);
            КоличествоСимволовПодстроки = Позиция;
            Если ДлинаПодСтроки > КоличествоСимволовПодстроки Тогда
                ТекущаяПозиция = КоличествоСимволовПодстроки;
                СтрВставитьКудаНадоПС(ИсходнаяСтрока, ТекСтрока, КоличествоСимволовПодстроки);
            Иначе
                Прервать;
            КонецЕсли;
        КонецЦикла;
       
        Возврат ИсходнаяСтрока;
    КонецФункции
    
    Процедура СтрВставитьКудаНадоПС(ИсходнаяСтрока, ТекСтрока, КоличествоСимволовПодстроки)
        //найти в ней последний пробел
        ТекущаяПозиция = КоличествоСимволовПодстроки;
        ДлинаПодСтроки = СтрДлина(ТекСтрока);
        Пока Истина Цикл
            Если КодСимвола(ТекСтрока, ТекущаяПозиция) = 32 Тогда
                //заменить пробел на перенос
                ВремСтрока = Лев(ТекСтрока, ТекущаяПозиция - 1) + Символы.ПС + Сред(ТекСтрока, ТекущаяПозиция + 1, ДлинаПодСтроки - ТекущаяПозиция);
                //заменить строку в основной
                ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока, ТекСтрока, ВремСтрока);
                Прервать;
            ИначеЕсли ТекущаяПозиция = 1 Тогда
                //отрезать первый кусок
                ПоБуквам = (КоличествоСимволовПодстроки = 1);
                ВремСтрока = Лев(ТекСтрока, ?(ПоБуквам, КоличествоСимволовПодстроки, КоличествоСимволовПодстроки - 1)) + ?(ПоБуквам, "", "-") + Символы.ПС + Сред(ТекСтрока, ?(ПоБуквам, КоличествоСимволовПодстроки + 1, КоличествоСимволовПодстроки), ДлинаПодСтроки - (КоличествоСимволовПодстроки - 1));
                //заменить строку в основной
                ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока, ТекСтрока, ВремСтрока);
                Прервать;
            КонецЕсли;
            ТекущаяПозиция = ТекущаяПозиция - 1;
        КонецЦикла;
    КонецПроцедуры
    
    Функция ПроверитьОднострочныйВыводТекстаВЯчейку(ТабДок, ТабДокОбласть, Текст)
        ВысотаДо  = ПолучитьВысотуОбласти(ТабДок, ТабДокОбласть);
       
        ВремТабДок = Новый ТабличныйДокумент;
        ВремТабДок.Вывести(ТабДок);
        ВремОбласть = ВремТабДок.Область(ТабДокОбласть.Имя);
       
        ВремОбласть.АвтоВысотаСтроки = Истина;
        ВремОбласть.ВысотаСтроки = 0;
       
        ВремОбласть.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить;
        ВремОбласть.Текст = Текст;
        ВысотаПосле  = ПолучитьВысотуОбласти(ВремТабДок, ВремОбласть);
       
        Возврат ?(ВысотаДо = ВысотаПосле , Истина, Ложь);
    КонецФункции
    
    //ПОЛУЧАЕМ ВЫСОТУ ОБЛ
    Функция ПолучитьВысотуОбласти(ТабДок, ТекОбласть)
        Заглушка = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
        Заглушка.Расположить(ТекОбласть);
        ВысотаЯчейки = Заглушка.Высота;
        ТабДок.Рисунки.Удалить(Заглушка);
        Возврат(ВысотаЯчейки);
    КонецФункции

    Вложения:

  14. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    828
    Симпатии:
    90
    Баллы:
    54
    когда выводите в цикле строки - вы передаете строку с символом переноса, а потом переходите на новую строку..
  15. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    тут?
    Код:
    Для Стр = 1 По СтрЧислоСтрок(ФорматированнаяСтрока) Цикл
       //ОбластьСтрокиВывода.Параметры.НекийПараметр = СтрПолучитьСтроку(ФорматированнаяСтрока, Стр);
       ОбластьСтроки.Текст = СтрПолучитьСтроку(ФорматированнаяСтрока, Стр);
       ТабДок.Вывести(ОбластьСтрокиВывода);
    КонецЦикла;
  16. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    тут? а как мне тогда от этого избавится?
    Код:
    Для Стр = 1 По СтрЧислоСтрок(ФорматированнаяСтрока) Цикл
       //ОбластьСтрокиВывода.Параметры.НекийПараметр = СтрПолучитьСтроку(ФорматированнаяСтрока, Стр);
       ОбластьСтроки.Текст = СтрПолучитьСтроку(ФорматированнаяСтрока, Стр);
       ТабДок.Вывести(ОбластьСтрокиВывода);
    КонецЦикла;

    Вложения:

  17. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    556
    Симпатии:
    1
    Баллы:
    29
    Ошибка была тут
    ФорматированнаяСтрока = СтрРазбитьНаПодстрокиПоШиринеЯчейки(НекаяОбласть, НекаяОбласть.Область("R2C2"), ИсходнаяСтрока);
    нужно было присвоить имя области ФорматированнаяСтрока = СтрРазбитьНаПодстрокиПоШиринеЯчейки(НекаяОбласть, НекаяОбласть.Область("ОбластьЯчейки"), ИсходнаяСтрока);

    только не понял почему так