7.7 Цвет ячеек таблицы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Time dont wait, 22 дек 2009.

  1. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Написал условие для установки цвета указанной ячейки, но при выводе в любом случае
    ячейка будет одного цвета,
    Код:
    Сч=1;
    ВыбратьСтроки();
    
    Пока ПолучитьСтроку()=1 Цикл
    
    Сек = Таб.ПолучитьСекцию("Сотр");
    Если пустоезначение("Д1")=0 тогда
    обл=Сек.область("R1C5");
    обл.ЦветФона(180,180,180);// етот цвет устанавливается 
    ИначеЕсли  пустоезначение("Д1")=1 тогда // а при етом условии цвет такой же как и в 
    обл.ЦветФона(255,255,255);         //  первом - обл.ЦветФона(180,180,180);
    КонецЕсли;
    
    Если пустоезначение("Н1")=0 тогда
    обл2=Сек.область("R2C5");
    обл2.ЦветФона(0,0,0);
    ИначеЕсли пустоезначение("Н1")=1 тогда
    обл2.ЦветФона(255,255,255);
    КонецЕсли;
    
    
    Таб.Вывестисекцию(сек);
    
    сч=сч+1;
    КонецЦикла;
    
    
    Д1 , Н1 - реквизиты табл. части (число)
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Сначала выведи секцию, а уж потом цвет меняй
  3. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    так вообще нет результата
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Ну меняешь ты в цикле цвет одной и той же области (смещения-то нет) и при этом выводишь секции. Не понятна сама идея...
  5. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Смысл в том, что при получении каждой новой строки цвет ячейки окрашивается в определенный цвет, поетому закраска происходит в цикле, ведь неясно ско-ко будет секций выведено.
    А результатом будет график дежурств
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Судя по коду вы каждый раз пытаетесь раскрасить одну и ту же ячейку - координаты области в цикле не меняются же
  7. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    может нуевонафик эти раскрашивания в цикле? просто сделать три одинаковые строки с разным цветом и выводить нужную строку при определенном условии? %)
    P.S. я бы делал так, потому что не очень хочется разбираться во всех этих выделениях, цветах фона.. Хотя если очень уж надо могу попробовать посмотреть твой код внимательнее..(
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Да посто метод ЦветФона работает на уже выведеную секцию...!
    Поэтому-то и нужно смещать координаты в цикле
    И еще ошибка - облась выделяется только в случае если значения не пустые - вынеси определение области за условия

    Что же касается того что предложил фобец - я бы тоже не парился с раскраской, а завел бы цветовые секции в шаблоне...
  9. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Алгоритм:

    1 - добавление в тз сотрудников, и заполнение их дежурства(1-выход, 0 - невыход)
    2 - цикл вывода в таблицу, тоесть неопределенное кол.людей,
    (секция ("сотр") - ето две строки)
    3 - для каждой выведенной секции окрашиваются ячейки в зависимости от (1)

    Вложения:

    • 1.jpg
      Размер файла:
      776,4 КБ
      Просмотров:
      128
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Это-то понятно. Ты ошибаешься в том что сначала меняешь цвет, а потом уже выводишь секцию.
    Нужно так
    Код:
    НомСтр=НомСтр+1;
    Таб.Вывестисекцию(сек);    
    обл=Таб.область("R"+НомСтр+"C5");
    Если НашеУсловие тогда            
    обл.ЦветФона(180,180,180);
    Иначе
    обл.ЦветФона(255,255,255);         
    КонецЕсли;
    
    
    
    Метод работает с таблицей, а не с секцией
  11. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Угодник, на ответ нажал видимо после твоего сообщения ;)
    все верно сказал
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    фобец. Не повторяйся пожалуйста. Внимательнее читай тему (ответы других участников, а не только свои). Про ошибку в условии уже было сказано выше.
  13. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Сделал так, но вот загвоздка, если
    Код:
    НомСтр=НомСтр+1;
    Таб.Вывестисекцию(сек);    
    обл=Таб.область("R"+НомСтр+"C5");
    Если НашеУсловие тогда            
    обл.ЦветФона(180,180,180);
    Иначе
    обл.ЦветФона(255,255,255);         
    КонецЕсли;
    
    
    тогда раскрашивается одна ячейка во 2 строке р.5 одним цветом при любом условии

    а если
    Код:
    обл=сек.область("R"+НомСтр+"C5");
    
    
    
    
    тогда не пашет
    Возможно секцию нужно определить по-другому
    Код:
    Сек = Таб.ПолучитьСекцию("сотр");
    
    
  14. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    а может определить секцию раскр. как перекрестную и так выводить?
  15. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Попробуй отладчиком проверить условие. Может оно не выполняется?
  16. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    проблема в том что мне бы надо определить область секции, а ето невозможно
    А отладчик в первой же строке клинит
    Код:
    Таб = СоздатьОбъект("Таблица");
    
  17. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    в отладчике определите точку останова и когда до нее дотопает жмите F8.
    Если "Наше условие" это "Если пустоезначение("Д1")=0 " то понятное дело, что оно никогда не будет пустым, потому что "Д1" это текст
    WaRDeR зришь в корень :)
  18. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Д1 - идентефикатор,Н1...
  19. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    кавычками обозначают текстовую константу
  20. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Возможно, но расчетным путем. Ты же знаешь в кокой ячейте нужно менять цвет (это колонка), количество выведеных строк можно определить через высоту таблицы - дерзай!

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