Версия для печати темы (https://pro1c.org.ua/index.php?s=4e9a35d83dfd48b1abef6bd5d4e21166&showtopic=45635)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Табличный документ - окрасить фон ячеек по условию

Автор: Gigi 08.05.18, 14:34

Привет всем!
Ну я просто поражаюсь с этой системой. Я просто одуреваю от нее ....
Опять сделать ерунду это чуть ли не задача состыковать модули на космической орбите.
Тогда как обычно критерий качество платформы это когда сделать сложное просто. А тут наоборот... простое это просто ужас как сложно. И не то что правое ухо левой рукой, а еще и через ж..у.
Достало уже все это... просто уже поздно бросать....
Поэтому могу сказать что разработчикам должно быть СТЫДНО! СТЫДНО должно быть им за такой свой тупизм. Главное сколько людей над этим работали.. получше не могли что то придумать?
Короче я уже устал ... сил уже нет
Вот код:

//"БалансПроцент" ЭТО ИМЯ СТОЛБЦА ТАБЛИЦИ ЗНАЧЕНИЙ: "ТЗ_ПС_Балансы" С ТИПОМ "ЧИСЛО"
НомерСтроки = 0;
Для Каждого Строка из ТЗ_ПС_Балансы Цикл
НомерСтроки=НомерСтроки+1;
Таблица.Параметры.Заполнить(Строка);
        Если Строка.БалансПроцент>6 Тогда  
        //НУ НЕ НИКАК НЕ ОКРАШИВАЕТ ТО ЧТО НАДО! НИКАК!!!!  ОПЯТЬ НИКАК НЕ МОЖЕТ СДЕЛАТЬ ОЧЕРЕДНУЮ ЕРУНДУ ...
        //ОКРАШИВАЕТ БЕЗОБРАЗНО .. СОВСЕМ НЕ ТЕ СТРОКИ КОТОРЫЕ ОБОЗНАЧЕНЫ УСЛОВИЕМ        
        ЯчейкаОбласть = ТабДок.Область("R"+НомерСтроки+"C6");
        ЯчейкаОбласть.ЦветФона = WebЦвета["Желтый"];
        КонецЕсли;
ТабДок.Вывести(Таблица);
КонецЦикла;

объясните мне пожалуйста ... ЧТО ЭТО ТАКОЕ?
На этом сайте я уже поднимал эту тему но так и не был приложен выход. Это наверно потому что опять "сложное сделать просто".
Поэтому вынужден был отказаться от затеи.
Ладно! Рассчитываю на понимание... просто самому тоже не охота лишний раз поднимать темы.
Буду весьма признателен!

Автор: sava1 08.05.18, 14:49

Цитата(Gigi @ 08.05.18, 15:34) *
ЯчейкаОбласть = ТабДок.Область("R"+НомерСтроки+"C6");


Надо брать ячейку таблицы.
Цитата(Gigi @ 08.05.18, 15:34) *
И не то что правое ухо левой рукой, а еще и через ж..у.

А может, просто "руки так привыкли" ?

Автор: Gigi 08.05.18, 15:25

Цитата(sava1 @ 08.05.18, 15:49) *
Надо брать ячейку таблицы.

Какую таблицу? Таблицу значений что ли? .... гуууу...
Т.е. я должен попасть ... номер строки ТЗ и номер строки Таб. док нужно стыковать ...
Цитата(sava1 @ 08.05.18, 15:49) *
А может, просто "руки так привыкли" ?

Да ... действительно приходиться привыкать ... что бы работать с системой smile.gif
Короче ... а нельзя ли другим путем ... менее геморройным и простым... а то... делать больше нечего стыковать номер строки ТЗ с номером строки Таб. док.
Ну на пример в цикле обозначить текущую область ТабДок.
Т.е. вместо :
        ЯчейкаОбласть = ТабДок.Область("R"+НомерСтроки+"C6");
        ЯчейкаОбласть.ЦветФона = WebЦвета["Желтый"];

Сделать по другому. На пример примерно так
стрОбластьЯчТабДок=""; //Тут нужна команда ... как получить адрес текущей области цыкла
        ЯчейкаОбласть = ТабДок.Область(стрОбластьЯчТабДок);
        ЯчейкаОбласть.ЦветФона = WebЦвета["Желтый"];

Или что то в этом роде... что то по проще и эффективнее
Если не трудно просто код и все дела ... буду признателен!

Автор: logist 08.05.18, 15:34

Цитата(Gigi @ 08.05.18, 16:25) *
Если не трудно просто код и все дела

Если не трудно, была просьба не писать лирические тексты, просто вопрос и всё. Больше предупреждений не будет.

Автор: Gigi 08.05.18, 16:03

logist @ Сегодня, 16:34 * ,
Ну ладно ... понял .. ерунда.
Так как обозначить текущую область ТабДок?
Можно ли как то зафиксировать это в каждом подходе цикла?
Ну на пример как то определить номер строки не ТЗ а ТД?

Автор: sava1 08.05.18, 16:45

Цитата(Gigi @ 08.05.18, 15:34) *
Таблица.Параметры.Заполнить(Строка); Если Строка.БалансПроцент>6 Тогда //НУ НЕ НИКАК НЕ ОКРАШИВАЕТ ТО ЧТО НАДО! НИКАК!!!! ОПЯТЬ НИКАК НЕ МОЖЕТ СДЕЛАТЬ ОЧЕРЕДНУЮ ЕРУНДУ ... //ОКРАШИВАЕТ БЕЗОБРАЗНО .. СОВСЕМ НЕ ТЕ СТРОКИ КОТОРЫЕ ОБОЗНАЧЕНЫ УСЛОВИЕМ ЯчейкаОбласть = ТабДок.Область("R"+НомерСтроки+"C6");


Вы заполняете область Таблица
а раскрасить хотите квкую-то ячейку в ТабДок

Автор: Prospero 09.05.18, 8:34

Gigi , может, как то так у Вас заработает?

//"БалансПроцент" ЭТО ИМЯ СТОЛБЦА ТАБЛИЦИ ЗНАЧЕНИЙ: "ТЗ_ПС_Балансы" С ТИПОМ "ЧИСЛО"
Для Каждого Строка из ТЗ_ПС_Балансы Цикл
        Таблица.Параметры.Заполнить(Строка);
        Если Строка.БалансПроцент>6 Тогда  
                Таблица.Область("R1C6").ЦветФона = WebЦвета["Желтый"];
        КонецЕсли;
        ТабДок.Вывести(Таблица);
КонецЦикла;

Конечно, если "Таблица" у Вас получает именно область макета "Строка", которую выводит в цикле.
Небольшая рекомендация давать областям макета названия более подходящие...
Из "Таблица" сложно понять, что Вы хотите вывести, Назовите уж ОбластьСтрока
тогда будет понятно даже без кода, что Вы получаете Строку и производите манипуляции с ней,
а не со всей таблицей...
Область, которую Вы выводите в цикле, каждый раз состоит из 1 строки, "R" всегда будет 1, если у Вас 1 строка.
Думается мне (поправьте, если ошибаюсь), номер строки берется из количества строк в области макета, а не в целом по документу.
Раскрашивайте область макета, потом выводите...

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua