8.х Различная высота строк в соседних ячейках

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем serg161, 3 окт 2007.

  1. TopicStarter Overlay
    serg161
    Offline

    serg161

    Регистрация:
    26 янв 2007
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Вопрос! Можно ли каким либо образом задать различную высоту строк для соседних по горизонтали ячеек макета. Проблема состоит в том, что необходимо разместить тескт в двух колонках и если в первой колонке в одной ячейке располагается 3 строки текста (с выравниванием по ширине и автовысотой строки), то всоседней по горизонтали ячейке тоже будет высота ячейки в 3 строки, а если текста всего на одну, тогда две будут пустаые.
    Может это можно как то по другому обойти?
  2. 1Yes
    Offline

    1Yes

    Регистрация:
    15 сен 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Не понятно как тогда должно быть. Т.е. по горизонтали строки никак не связаны?
    Поясню: если первая ячейка в 3 строки получилась, то тебе нужно во втором столбце нижние ячейки как бы сместить вверх на 2 строки?

    сейчас:
    ------------------------
    длинная l короткая
    с т р о каl
    -----------------------
    в т о рая l короткая
    длинная l
    с т р о каl
    -----------------------

    а надо:
    ------------------------
    длинная l короткая
    с т р о каl------------
    ------------lкороткая
    в т о р аяl------------
    длинная l
    с т р о каl
    -------------

    Я правильно понял? :)
  3. TopicStarter Overlay
    serg161
    Offline

    serg161

    Регистрация:
    26 янв 2007
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1


    =============================
    Да да, именно это мне и нужно.
  4. 1Yes
    Offline

    1Yes

    Регистрация:
    15 сен 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    а можно как-нибудь узнать сколько строк займет/занимает текст в ячейке?
    Я думаю принцип должен быть такой что если заранее знаем что строка займет несколько строк то объединяем ячейки, в то врямя как соседние остаются не объединенными.

    Сейчас попробую чего-нибудь сделать.... (задачка интересная)
  5. TopicStarter Overlay
    serg161
    Offline

    serg161

    Регистрация:
    26 янв 2007
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    В том то и дело, что не знаем!
    Переношу текст из Worda, много и очень мелким (4,5pt) шрифтом.
    Естественно после каждого Enter'a Worda'a 1с переносит тескт с следующую ячейку (т.е. 1 абзадц - 1 ячейка). Соответственно при выравнивании по ширине и ватовысоте высота ячейки и количество строк в ней может быть совсем разной и в 2 строки и в 10 строк.
  6. 1Yes
    Offline

    1Yes

    Регистрация:
    15 сен 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    вот нашел кое-что:
    http://avb1c.narod.ru/rowheight.html
    Сделай такую функцию у себя, а дальше в отчете приблизительно так:

    Код:
    Перем ИсхТаб; //исходная таблица с данными из ворда
    //КолСтр - количество одиночных строк уже выведенных в столбце
    Перем КолСтр, Столбец1, Столбец2, ВысотаТекСтр;
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица( "Таблица" );
    для НомСтолбца=1 по 2 цикл //вместо "2" надо "ИсхТаб.КоличествоКолонок()"
    КолСтр=0;
    для НомСтроки=1 по 10 цикл //вместо "10" надо "ИсхТаб.КоличествоСтрок()"
    ТекТекст = ИсхТаб.ПолучитьЗначение(НомСтроки, НомСтолбца);
    ВысотаТекСтр = ПолучитьВысотуСтроки(ТекТекст, ШиринаСтолбца, Шрифт);
    Обл = Таб.Область("R" + Строка(КолСтр + 1) + "C" + Строка(НомСтолбца) + ":R" + Строка(КолСтр + ВысотаТекСтр) + "C" + Строка(НомСтолбца));
    Обл.Объединить();
    Обл.Текст = ТекТекст; 
    КолСтр = КолСтр + ?(ВысотаТекСтр=0, 1, ВысотаТекСтр);
    конеццикла;
    конеццикла;
    
    
    не знаю чего получилось может и не работает (не проверял за неимением входных данных и лень было делать функцию ПолучитьВысотуСтроки), но идея думаю ясна
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ужасный вариант получения высоты строки.
    Это для каждого шрифта надо задавать его размер - ужас!

    PS. Придумал вариант под произвольный шрифт. В частности, в типовой УТ переписал печать ценников и этикеток под произвольный размер наименования и произвольный размер ценника. Пользователи просто пищат!

    PPS. На вопросы "как сделал?" - отвечу - очень просто: надо всего лишь немного подумать. А бесплатно отдавать алгоритм неохота :), ибо задачка проста до безобразия!
  8. 1Yes
    Offline

    1Yes

    Регистрация:
    15 сен 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Вот она добрая русская душа )))
    Ну раз говоришь что надо немного подумать, то подумаю еще...
    Ну я могу это за 5 минут на VBA сделать (в том же ворде или экселе или вообще модуль отдельный), а вот с 1С я вообще-то дружу недели 3 от силы. Ха))
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Когда я придумал этот метод - я первый месяц с 1С разбирался.
    И не надо использовать внешних обработок/СОМ-объектов и прочей лабуды - это только засоряет код.

Поделиться этой страницей