Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 16:12

Табличный документ...Область...выделить цветом часть области

Автор SanSay, 24 ноя 2013, 21:37

0 Пользователей и 1 гость просматривают эту тему.

SanSay

Привет, не нашел решения в инете, может вы поможете...

Есть макет, в который выводятся данные из таблицы значений


данные вставляются так:


//до этого была создана таблица значений
Для НомерСтроки = 0 По МояТЗ.Количество() - 1 Цикл
    ОбластьДетали.Параметры.Заполнить(МояТЗ[НомерСтроки]);
    ТабДок.Вывести(ОбластьДетали);
КонецЦикла;


и вопрос:
можно ли в итоговой таблице в столбце "Баллы", где параметр "БаллыИнд" проверить значение и например если больше 20, то эту ячейку покрасить в какойнить цвет?

П.С. решить проблему можно путем создания не цельной области (ОбластьДетали), а для каждого параметра отдельной области, но мне кажется это не... профессионально, т.к. если в таблице будет 50 колонок... придется создавать 50 областей - думаю бред.

LordWizard

Можно. Иногда для БП 2.0 надо ОСВ, в котором бы в большом списке должники бы выделялись красным в строке.:D
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

wise

КрасныйЦвет = Новый Цвет(255, 0, 0);
//до этого была создана таблица значений
Для НомерСтроки = 0 По МояТЗ.Количество() - 1 Цикл
    ТекСтрокаМоейТЗ = МояТЗ[НомерСтроки];
    ОбластьДетали.Параметры.Заполнить(ТекСтрокаМоейТЗ);
    Если ТекСтрокаМоейТЗ.МойХитрыйПараметр > 20 Тогда
        ТабДок.ТекущаяОбласть.ЦветФона = КрасныйЦвет;
    КонецЕсли;
    ТабДок.Вывести(ОбластьДетали);
КонецЦикла;
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

sdilshod

//до этого была создана таблица значений
Для НомерСтроки = 0 По МояТЗ.Количество() - 1 Цикл
    ОбластьДетали.Параметры.Заполнить(МояТЗ[НомерСтроки]);
    ТабДок.Вывести(ОбластьДетали);
    Если  ВашаПараметр > 20 Тогда
       ОкрОбл = ТабДок.Область("R"+Строка(НомерСтроки+1)+"С7");
       ОкрОбл.ЦветФона = WebЦвета["Красный"];
    КонецЕсли;
КонецЦикла;

SanSay

спасибо за то что откликнулись... но:
Цитата: wise от 25 ноя 2013, 08:09
КрасныйЦвет = Новый Цвет(255, 0, 0);
//до этого была создана таблица значений
Для НомерСтроки = 0 По МояТЗ.Количество() - 1 Цикл
    ТекСтрокаМоейТЗ = МояТЗ[НомерСтроки];
    ОбластьДетали.Параметры.Заполнить(ТекСтрокаМоейТЗ);
    Если ТекСтрокаМоейТЗ.МойХитрыйПараметр > 20 Тогда
        ТабДок.ТекущаяОбласть.ЦветФона = КрасныйЦвет;
    КонецЕсли;
    ТабДок.Вывести(ОбластьДетали);
КонецЦикла;

не корректно срабатывает - красит ту ячейку, которая была активна в ПолеТабличногоДокумента перед нажатием кнопки формирования отчета
Добавлено: 25 ноя 2013, 19:37


Цитата: sdilshod от 25 ноя 2013, 09:41
//до этого была создана таблица значений
Для НомерСтроки = 0 По МояТЗ.Количество() - 1 Цикл
    ОбластьДетали.Параметры.Заполнить(МояТЗ[НомерСтроки]);
    ТабДок.Вывести(ОбластьДетали);
    Если  ВашаПараметр > 20 Тогда
       ОкрОбл = ТабДок.Область("R"+Строка(НомерСтроки+1)+"С7");
       ОкрОбл.ЦветФона = WebЦвета["Красный"];
    КонецЕсли;
КонецЦикла;

не срабатывает - ругается на:
{Отчет.ИтогиИБаллы.Форма.ИтогиИБаллы(199)}: Ошибка при вызове метода контекста (Область): Область не найдена: R11С7
ОкрОбл = ТабДок.Область("R"+Строка(НомерСтроки+1)+"С7");
по причине:
Область не найдена: R11С7

суть понял, терь вопрос как сделать чтобы из сборки ("R"+Строка(НомерСтроки+1)+"С7") получислось не R11С7, а "R11С7"?

Добавлено: 25 ноя 2013, 19:44


Цитата: SanSay от 25 ноя 2013, 19:35суть понял, терь вопрос как сделать чтобы из сборки ("R"+Строка(НомерСтроки+1)+"С7") получислось не R11С7, а "R11С7"?

хотя нет... поторопился - переменная НомерСтроки это номер строки в этой таблице, а в итоговом отчете перед этой таблицей есть еще другие таблицы... можно конечно ввести общую переменную-счетчик и считать все выведенные строки.
Добавлено: 25 ноя 2013, 20:21


короче не канает последний вариант


Если  ОбластьДетали.Параметры.БаллыИнд > 10 Тогда
   ОкрОбл = ТабДок.Область(10+НомерСтроки,9);
   ОкрОбл.ЦветФона = WebЦвета["Красный"];
КонецЕсли;


пока в ручную подобрал столбец и строки где нужно красить и вместо этого:


выходит это:



т.е. вместо просто покраски ячейки, в отчет вставляется новая строка с покрашенной ячейкой

sdilshod

Для Д=1 По КоличествоДнейВМесяц Цикл
СтрокаТабеля=Число(Стр["д"+Строка(Д)]);
АдресЯчейки = "R"+Строка(НомерСтрокиДляОкраски)+"C"+Строка(Д+3);
ОкрашиваемаяОбласть = ТабДок.Область(АдресЯчейки);
ЗначениеЦветаОкрасок="Белый";
Если СтрокаТабеля = 0 Тогда
ОблДетальМесяц.Параметры.КодТабеля="";
ТабДок.Присоединить(ОблДетальМесяц);
//СтрокаНеявкиСотрудника = НеявкиСотрудника.Добавить();
//СтрокаНеявкиСотрудника.КодНеявки = СтрокаТабеля;
//СтрокаНеявкиСотрудника.Количество = 1;
Продолжить;
ИначеЕсли СтрокаТабеля > 24  Тогда
Неяка = Справочники.Неявки.НайтиПоКоду(СтрокаТабеля);
ЗначТабель = Неяка.ЗначенияДляТабеля;
ЗначениеЦветаОкрасок = Неяка.ЗначениеЦветаДляОкраски;
СтрокаНеявкиСотрудника = НеявкиСотрудника.Добавить();
СтрокаНеявкиСотрудника.КодНеявки = СтрокаТабеля;
СтрокаНеявкиСотрудника.Количество = 1;
Иначе
ОтработанныйДней=ОтработанныйДней+1;
ОтработанныеЧасы=ОтработанныеЧасы+СтрокаТабеля;
ЗначТабель = "";
КонецЕсли;
ОблДетальМесяц.Параметры.КодТабеля=?(ЗначениеЗаполнено(ЗначТабель),ЗначТабель,СтрокаТабеля);
ТабДок.Присоединить(ОблДетальМесяц);
ОкрашиваемаяОбласть.ЦветФона = WebЦвета[ЗначениеЦветаОкрасок];
КонецЦикла;


Это у меня рабочий код на 1С8.1 и оно окрашивает нужную ячейку нужным цветом.

LordWizard

Цитата: sdilshod от 26 ноя 2013, 07:06Это у меня рабочий код на 1С8.1 и оно окрашивает нужную ячейку нужным цветом.
А чем этот код не устроил? :xfbnsdfb:

Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

SanSay

вот то что я искал:

ОбластьДетали.Область(1, 9, 1, 9).ЦветФона = WebЦвета.ЖелтоЗеленый;
закрашивает 9 ячейку в области

тема закрыта. всем спасибо.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск