Имя: Пароль:
1C
1C 7.7
v7: Как в отчете изменить цвет шрифта ячейки в зависимости от условия
0 exec11
 
24.06.22
12:43
1с 77

Пробую делать так, но что то не получается.


    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);

    Цыкл
        ВыбОбласть = Таб.Область("R9C16");
        ВыбОбласть.ЦветТекста(100,100,100)

        ....
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;

    Таб.ТолькоПросмотр(1);
    Таб.Показать("Мой отчет", "");


R9C16 - координаты ячейки, в конфигураторе, в табличке.
1 DCKiller
 
24.06.22
12:56
Сначала выводи ячейку в таблицу, а потом в ней цвет меняй.
2 uno-group
 
24.06.22
12:56
нужно считать какая это ячейка в выведенной таблице а не в конфигураторе. если в шапке. 5 строк и потом пошли строки то для первой ячейки ("R6C16") потом "R7C16" и т.д.
ну и сперва выводи
3 Fedor-1971
 
24.06.22
12:57
пробуй сначала вывести, а потом менять цвет в выведенном, последнюю строку получишь через табДок.ВысотаТаблицы()
4 uno-group
 
24.06.22
12:58
можно типа Таб.Область("R"+таб.ВысотаТаблицы()+"C16"); чтобы не считать какая это строка
5 Простенький вопросик
 
24.06.22
13:02
Нефигасе, 7.7 еще существует и дорабатывается
6 DCKiller
 
24.06.22
13:04
(5) Ты не поверишь :-)
7 Fedor-1971
 
24.06.22
13:04
(4) Если предварительно не вывести строку, то покрасишь предыдущую
8 andrewalexk
 
24.06.22
13:05
(5) :) я тебе даже больше скажу - с текущими тенденциями платформостроения и конфигурациистроения ЗАО 1С эта ваша мантра будет вечной
9 exec11
 
24.06.22
13:05
Цикл
        ....
        Таб.ВывестиСекцию("Строка");
        ВыбОбласть = Таб.Область("R15C15");
        ВыбОбласть.ЦветТекста(100,100,100)
    КонецЦикла;

Не помогло.
Пробую хотя бы одну ячейку изменить.
Выводится первая строка, 9 пустых, и дальше пошли строки.
10 Fedor-1971
 
24.06.22
13:07
начни с "R1C1"
11 uno-group
 
24.06.22
13:09
текст в ячейке хоть есть
12 uno-group
 
24.06.22
13:11
А точно тебе надо с областями работать может проще по условию Выводить "Строка" или "СтрокаРаскрашенная" это обычно быстрее работает чем через область красить
13 exec11
 
24.06.22
13:21
Вот что получилось :

                ВыбОбласть = Таб.Область("R1C2");
                ВыбОбласть.ЦветТекста(100,100,150);
В заголовке, текст покрасился.

                ВыбОбласть = Таб.Область("R5C2");
Первая строка покрасилась.

                ВыбОбласть = Таб.Область("R6C2")
Вторая строка покрасилась.

                ВыбОбласть = Таб.Область("R7C2")
Третья строка стала пустой.

                ВыбОбласть = Таб.Область("R8C2")
Третья и четвертая строка стала пустой.

                ВыбОбласть = Таб.Область("R8C2")
Третья, четвертая и пятая строка стала пустой.
14 exec11
 
24.06.22
13:23
На месте пустоты происходит как бы раздвигание строк.
15 Fedor-1971
 
24.06.22
13:32
(13) Ты вывел в табДок 8 строк?
пробуй указать ячейку так: таб.Область(<R1>,<C1>)
Крась фон через ЦветФона

Похоже на то, что ещё раз выводишь область
16 exec11
 
24.06.22
13:43
пн_стр = пн_стр + 1;
        Таб.ВывестиСекцию("Строка");  
                
        //ВыбОбласть = Таб.Область("R7C4");  
        ВыбОбласть = Таб.Область("R7","C4");
        ВыбОбласть.ЦветТекста(100,100,150);  
        ВыбОбласть.ЦветФона(50,150,50);
        Сообщить("==  "+Строка(пн_гр)+"   "+Строка(пн_стр));

==  1   1
==  1   2
==  1   3
==  1   4
==  1   5
==  1   6
==  1   7
==  1   8
==  1   9
==  1   10
==  1   11
...

Да, пустая строка окрашивается в зеленый на всю длину по горинзонтали в бесконечность.
17 exec11
 
24.06.22
13:47
Но почему вся строка, а не ячейка ?
18 Fedor-1971
 
24.06.22
13:52
Таб.Область(пн_гр,4,пн_гр,4); - границы ячейки - цифры
Возможно, есть косячок в платформе при определении ячейки
19 exec11
 
24.06.22
14:02
Выделенная строка меняется на ячеку так :

    ВыбОбласть = Таб.Область("R7C3");

Промаркеровал весь макет отчета.
Поставил "сообщить" во всех строках, которые могут хоть что то выводить.

Пустая строка попадает в отчет. Маркеры никакие именно в строке не выскакивают. Чудеса.
20 exec11
 
24.06.22
14:03
Кто эту строку может выводить ???
21 exec11
 
24.06.22
14:10
Отладчик, скорее всего тоже наверное не покажет, в какой момент это строка появляется ??
22 Fedor-1971
 
24.06.22
14:17
(21) Если только смотреть на ВысотаТаблицы()
23 trad
 
24.06.22
14:19
Если Таб.Область() обращается к области за пределами ВысотаТаблицы() / ШиринаТаблицы(), то таблица автоматически увеличивает высоту/ширину до указанных в Таб.Область()
24 trad
 
24.06.22
14:20
+(23) а ВывестиСекцию() всегда выводит за текущей высотой/шириной
25 exec11
 
24.06.22
14:51
Вообщем проблема как всегда была во мне.
Я вывожу шестую строку и ("R6C2") - подкрашиваю. Она подкрашивается.

Далее я вывожу снова шестую строку, а подкрасить пытаюсь седьмую, которой еще нету. ("R7C2") И мне 1с эту строку дорисовывает.

Если вывести шестую строку а подкрасить ("R8C2") то 1с-ка нарисует не одну пустую строку, а две.
Ну и остальные строки отчета, пойдут за пустыми строками.

Во как оказалось.

Всем спасибо за наВОДКУ ! ;)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший