Имя: Пароль:
1C
1C 7.7
v7: Раскраска отчета
,
0 vladimirpetrov11
 
01.11.13
10:02
Добрый день! Такой вопрос: можно ли в 1с 7.7 программно раскрашивать отдельные столбцы в отчете? Может какие то хитрые методы как с журналом через Formex
1 oslokot
 
01.11.13
10:03
Можно
2 oslokot
 
01.11.13
10:03
нету хитростей
3 Ёпрст
 
01.11.13
10:06
В отчете раскрашивается всё штатно, без всяхих формексов.
4 vladimirpetrov11
 
01.11.13
10:08
Да ну штатно то я знаю, просто работы много получится( все варианты раскраски перебрать...
5 vladimirpetrov11
 
01.11.13
10:09
(1) Как?
6 Ёпрст
 
01.11.13
10:12
(4) Че ?
7 oslokot
 
01.11.13
10:14
(5) штатно, или хош формекс (через расшифровку в ячейке)
8 Ёпрст
 
01.11.13
10:15
(7) внимательно послушаю, как раскрасить Таблицу формексом
9 oslokot
 
01.11.13
10:18
(8) в расшифровку ячейки Раскрасить()
вот пример http://infostart.ru/public/79083/
10 Ёпрст
 
01.11.13
10:20
(9) п..ц
Ты хоть сам то читал, что там написано ?
Там формекс нужон исключительно для выбора цвета.
К прасскраске Таблицы он не имеет никакого отношения
11 oslokot
 
01.11.13
10:21
(10) неа, не читал
12 oslokot
 
01.11.13
10:21
пониже спустись - там таблица отчета в картинках
13 mikecool
 
01.11.13
10:22
(6) +1 )))))))))))))))
14 mikecool
 
01.11.13
10:22
ура, наконец пришла пятница!
15 Ёпрст
 
01.11.13
10:27
(11) без комментариев.
16 oslokot
 
01.11.13
10:29
(15) а ты внимательно все прочитал? до рисунков 4,5 дошел?
17 Ёпрст
 
01.11.13
10:42
(16)
1. rtfm
2. Формекс к раскраске области Таблицы не имеет никакого отношения.
Если че, у него вообще всего лишь пара методов для работы с Таблицей есть:
ИсходнаяТаблица и Опции

А Таблица красится штатно, через область Таблицы штатными методами ЦветФона
3. см.1
18 trad
 
01.11.13
10:44
(17) может быть человека беспокоит доступ к 64+ цветам, а вы и не догадываетесь?
19 oslokot
 
01.11.13
10:45
(17) да, я был не прав.
20 ДенисЧ
 
01.11.13
10:50
(18) а только зачем, в 77 всё равно он не выведет много цветов....
21 vladimirpetrov11
 
01.11.13
11:04
Меня беспокоит раскраска отчета. Formex применяется для раскраска журнала документов. То есть хотелось бы в идеале так: Если такое то условие выполняется, тогда вывести строку в которой по первым 3 столбцам будет цвет такой то по 4 и 5 столбцу другой, а по оставшимся третий цвет. Я понимаю придется в отчете стандартно фон выбирать и кучу строк делать, больше никак
22 ADirks
 
01.11.13
11:47
(21) типа
Обл = Т.Область(нНачСтр, 1, нКонСтр, Т.ШиринаТаблицы());
Обл.ЦветФона(цветСветлоЖелтый);
23 1dvd
 
01.11.13
11:50
(21) Делаешь в макете одиннаковые секции с разными фонами. Потом, в зависимости от условий, выводишь разные секции
24 vladimirpetrov11
 
01.11.13
11:58
(22) Спасибо!
(23) я так и делал ;)

Всем спасибо!!
25 vladimirpetrov11
 
01.11.13
11:59
вот  так я делал: http://s49.radikal.ru/i123/1311/33/b994731e5ea6.jpg, теперь буду как в (22)
26 1dvd
 
01.11.13
12:06
(25) про ПрисоединитьСекцию() Вы, видимо, не слышали
27 trad
 
01.11.13
12:48
(20) ну например 256 вполне реально
http://rghost.ru/49860061
28 vladimirpetrov11
 
05.11.13
11:54
(26) Слышали))
29 vladimirpetrov11
 
05.11.13
13:35
Таб.ВывестиСекцию("СтрокаЖ|С1");
                ОбластьКД=Таб.ПолучитьСекцию("СтрокаЖ|С2");
                ОбластьКД.ЦветФона(192,220,250);        
                Таб.ПрисоединитьСекцию(ОбластьКД);
                Таб.ПрисоединитьСекцию("СтрокаЖ|С3");


Если так делаю ошибка следующая:ОбластьКД.ЦветФона(192,220,250);        
{D:\МОНИТОРИНГ С_В_Д 8D.ERT(441)}: Поле агрегатного объекта не обнаружено (ЦветФона)
30 vladimirpetrov11
 
05.11.13
13:39
ВсЁЁ!! Пропустил метод Обл=ОбластьКД.Область();  ))
31 vladimirpetrov11
 
05.11.13
15:03
А не не все! Смотрите как выводится при присоединении секций: http://i047.radikal.ru/1311/ac/7c667d6e105b.jpg
32 vladimirpetrov11
 
05.11.13
15:03
Вот блок :




        //********Первый БЛОК****    
            // Заполнение полей по цветам  
            Если  (ПустоеЗначение(Запрос.Док.ДатаD3D4)=1) или (ПустоеЗначение(Запрос.Док.СрокРазD1D3)=1) тогда
                Обл1.ЦветФона(255,0,0); //красный
                Таб.ВывестиСекцию(Область1);    
            //ИначеЕсли  ПустоеЗначение(Запрос.Док.СрокРазD1D3)=1    тогда
            //    Таб.ВывестиСекцию(Область1);
            ИначеЕсли  (Запрос.Док.ДатаD3D4<=Запрос.Док.СрокРазD1D3)    тогда
                Обл2.ЦветФона(0,255,0);   //Зеленый!      
                Таб.ВывестиСекцию(Область1);
            ИначеЕсли  (Запрос.Док.ДатаD3D4>Запрос.Док.СрокРазD1D3)    тогда
                Обл2.ЦветФона(31,174,233);   //Зеленый!      
                Таб.ВывестиСекцию(Область1);
            Иначе
                Таб.ВывестиСекцию(Область1);
            КонецЕсли;
        //********Второй БЛОК****    
            
            Если (Запрос.Док.ДатаСрокВып<ТекущаяДата()) и  (Запрос.Док.ДатаСрокДокум>=ТекущаяДата()) и (ПустоеЗначение(Запрос.Док.Подтверж_Док)=0)    тогда
                Обл2.ЦветФона(247,242,26);   //Желтый!      
                Таб.ПрисоединитьСекцию(Область2);
            ИначеЕсли  (Запрос.Док.ДатаСрокВып<ТекущаяДата()) и  (Запрос.Док.ДатаСрокДокум<ТекущаяДата()) и (ПустоеЗначение(Запрос.Док.Подтверж_Док)=1)    тогда
                Обл2.ЦветФона(255,36,0);   //Алый!      
                Таб.ПрисоединитьСекцию(Область2);
            ИначеЕсли  (Запрос.Док.ДатаСрокВып<ТекущаяДата()) и  (Запрос.Док.ДатаСрокДокум<ТекущаяДата()) и (ПустоеЗначение(Запрос.Док.Подтверж_Док)=0)    тогда
                Обл2.ЦветФона(0,255,0);   //Зеленый!      
                Таб.ПрисоединитьСекцию(Область2);
            Иначе
                Таб.ПрисоединитьСекцию(Область2);
            КонецЕсли;  
        //********Третий БЛОК****    
            
            Если  (ПустоеЗначение(Запрос.Док.ДатаD3D4)=1) или (ПустоеЗначение(Запрос.Док.СрокРазD1D3)=1) тогда
                Обл3.ЦветФона(255,0,0); //красный
                Таб.ПрисоединитьСекцию(Область3);    
        //    ИначеЕсли  Запрос.Док.СрокРазD1D3="  .  .  "    тогда
            //    Таб.ВывестиСекцию(Область3);
            ИначеЕсли  (Запрос.Док.ДатаD3D4<=Запрос.Док.СрокРазD1D3)    тогда
                Обл3.ЦветФона(0,255,0);   //Зеленый!      
                Таб.ПрисоединитьСекцию(Область3);    
            ИначеЕсли  (Запрос.Док.ДатаD3D4>Запрос.Док.СрокРазD1D3)    тогда
                Обл3.ЦветФона(31,174,233);   //Зеленый!      
                Таб.ПрисоединитьСекцию(Область3);    
            Иначе
                Таб.ПрисоединитьСекцию(Область3);    
            КонецЕсли;
33 Cthulhu
 
05.11.13
16:21
1с-ина оперирует только теми цветами, которые перечислены в свойствах ячейки таблицы - сводя весь остальной спектр (при указании в параметрах методов управления цветом текста и фона области) к одному из них, но при этом оставляя в "недрах" результирующего мокселя кривизну, которая отражается при переводе мокселя, например, в XLS.
Поэтому простейший способ - это слепить обработку "в лоб":
1) шаблон таблицы - нарисовать ручками, тупо по-ячеечно залить всеми возможными цветами из свойств ячейки (8х7=56)
2) на морду единственную кнопку, по которой вызов вот этой процедуры:
Процедура Сформировать()
    Перем ПечТаб,ПечСтр,ПечКол;
    ПечТаб=СоздатьОбъект("Таблица"); ПечТаб.ИсходнаяТаблица("Таблица"); ПечТаб.Вывести();
    Для ПечСтр=1 По ПечТаб.ВысотаТаблицы() Цикл Для ПечКол=1 По ПечТаб.ШиринаТаблицы()
    Цикл ПечТаб.Область(ПечСтр,ПечКол).Текст=""+ПечТаб.Область(ПечСтр,ПечКол).ЦветФона() КонецЦикла КонецЦикла;
    ПечТаб.Опции(0,0); ПечТаб.Показать("Цвета в 1С для копипасты"); Предупреждение("Копипасти, прог, на здоровье!",12);
КонецПроцедуры
34 Ёпрст
 
05.11.13
17:32
(32) красишь везде одну область, а выводишь другую..
35 Cthulhu
 
05.11.13
17:34
и тово. не лучше сначала выводить/присоединять а потом уже красить?..
36 vladimirpetrov11
 
06.11.13
08:46
(33) Понятно, но хотелось бы использовать поболее гамму цветов(( Метод главное есть, а воспользоваться не получается...

(34) если выводить область обл1, выдает ошибку: Таб.ПрисоединитьСекцию(Обл1);
{D:\МОНИТОРИНГ С_В_Д 8D.ERT(394)}: Секция не найдена

(35) Так не красится вообще.
37 Ёпрст
 
06.11.13
09:02
(36) больше кода.

А так, можно либо

-получить секцию, раскрасить область в этой секции, присоединить/вывести эту секцию в Таблицу
либо
-вывести/присоединить секцию в Таблицу, раскрасить область в Таблице.
либо
-выводить/присоединять заранее разукрашенные секции из самого макета в Таблицу.

Какой вариант у тебя - хз, нам отсюда не видно
38 Cthulhu
 
06.11.13
11:21
(36): странно. у меня - красится.
39 vladimirpetrov11
 
06.11.13
11:29
(38) Скинь свой код пожалуйста
40 Cthulhu
 
06.11.13
11:53
//(39): ахренеть. ну на:
ПечТаб.ВывестиСекцию("ТекДокум");
ПечТаб.Область(ПечТаб.ВысотаТаблицы(),1,ПечТаб.ВысотаТаблицы(),ПечТаб.ШиринаТаблицы()).ЦветФона(255,0,0);
41 Ёпрст
 
06.11.13
12:40
или так

Секция = ПечТаб.ПолучитьСекцию("ТекДокум");
Секция.Область(1,1,1,10).ЦветФона(255,0,0);
ПечТаб.ВывестиСекцию(Секция);
42 vladimirpetrov11
 
06.11.13
13:09
(40), (41)Спасибо!!! все вышло как надо
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс