|
Как изменить фон ячейки в макете? | ☑ | ||
---|---|---|---|---|
0
avz07
25.06.13
✎
11:10
|
Мне нужно изменить фон ячейки, в которой приходная цена меньше 80.
Вожусь с этим уже второй день. перепробовал разные варианты. думаю, что моя ошибка в недостаточных знаниях или навыках. Прошу помогите написать этоту строчку кода, потому что я уже запутался. Вот код: Процедура КнопкаВыполнитьНажатие(Кнопка) Команда=Справочники.КомандыТА.НайтиПоКоду(5); ТабДок=Новый ТабличныйДокумент; Макет=ЭтотОбъект.ПолучитьМакет("КомандаСЛАВУТИЧ"); ОблШапка=Макет.ПолучитьОбласть("ОблШапка|Наименование"); ТабДок.Очистить(); ОблШапка.Параметры.Команда=Команда; ТабДок.Вывести(ОблШапка); ОблШапка=Макет.ПолучитьОбласть("ОблШапка|Приходна"); ТабДок.Присоединить(ОблШапка); ОблШапка=Макет.ПолучитьОбласть("ОблШапка|Базова"); ТабДок.Присоединить(ОблШапка); Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | Т.Ссылка КАК Ссылка, | Цены.Цена, | Цены2.Цена КАК Цена1 |ИЗ | (ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка | ИЗ | (ВЫБРАТЬ | АсортиментТАСрезПоследних.Товар.Ссылка КАК ТоварСсылка | ИЗ | РегистрСведений.АсортиментТА.СрезПоследних(&ТекущаяДата, ) КАК АсортиментТАСрезПоследних | ГДЕ | АсортиментТАСрезПоследних.Команда.Код = ""5"" | И АсортиментТАСрезПоследних.Активный | | СГРУППИРОВАТЬ ПО | АсортиментТАСрезПоследних.Товар.Ссылка) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура | ПО (Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель = ВложенныйЗапрос.ТоварСсылка.Ссылка | ИЛИ Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель = ВложенныйЗапрос.ТоварСсылка.Ссылка | ИЛИ Номенклатура.Ссылка.Родитель.Родитель.Родитель = ВложенныйЗапрос.ТоварСсылка.Ссылка | ИЛИ Номенклатура.Ссылка.Родитель.Родитель = ВложенныйЗапрос.ТоварСсылка.Ссылка | ИЛИ Номенклатура.Ссылка.Родитель = ВложенныйЗапрос.ТоварСсылка.Ссылка | ИЛИ Номенклатура.Ссылка = ВложенныйЗапрос.ТоварСсылка.Ссылка)) КАК Т | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, ТипЦен.Код = ""1"") КАК ЦеныНоменклатурыСрезПоследних) КАК Цены | ПО Т.Ссылка = Цены.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, ТипЦен.Код = ""2"") КАК ЦеныНоменклатурыСрезПоследних) КАК Цены2 | ПО Т.Ссылка = Цены2.Номенклатура |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Код","5"); Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата()); Выборка=Запрос.Выполнить().Выбрать(); ТабДок.НачатьАвтогруппировкуСтрок(); Пока Выборка.Следующий()Цикл ОблНоменклатура=Макет.ПолучитьОбласть("ОблНоменклатура|Наименование"); ОблНоменклатура.Параметры.Наименование=Выборка.Ссылка; ТабДок.Вывести(ОблНоменклатура,Выборка.Уровень(),,Ложь); ОблНоменклатура=Макет.ПолучитьОбласть("ОблНоменклатура|Приходна"); ОблНоменклатура.Параметры.ЦенаПриходна=Выборка.Цена; Если ?(Выборка.Цена=Null,0,Выборка.Цена) > 80 Тогда ОблНоменклатура("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); //ЭлементыФормы.ТабличноеПоле.Колонки.ТекущаяКолонка.ЦветФона=Новый Цвет(255, 0, 0); КонецЕсли; ТабДок.Присоединить(ОблНоменклатура); ОблНоменклатура=Макет.ПолучитьОбласть("ОблНоменклатура|Базова"); ОблНоменклатура.Параметры.ЦенаБазова=Выборка.Цена1; ТабДок.Присоединить(ОблНоменклатура); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.ОтображатьСетку=Ложь; ТабДок.Показать(); КонецПроцедуры |
|||
1
Cyberhawk
25.06.13
✎
11:10
|
А зачем в макете, условное оформление не предлагать?
|
|||
2
Cyberhawk
25.06.13
✎
11:12
|
А, тут не отчет и не СКД, пардон
|
|||
3
Cube
25.06.13
✎
11:14
|
(0) Ну и? Какой результат выдает твой код и чем он тебя не устраивает?
|
|||
4
НЕА123
25.06.13
✎
11:18
|
ОблНоменклатураКрасный=Макет.ПолучитьОбласть("ОблНоменклатура|Приходна");
ОблНоменклатураКрасный("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); ОблНоменклатура=Макет.ПолучитьОбласть("ОблНоменклатура|Приходна"); ОблНоменклатура.Параметры.ЦенаПриходна=Выборка.Цена; Если ?(Выборка.Цена=Null,0,Выборка.Цена) > 80 Тогда ТабДок.Присоединить(ОблНоменклатураКрасный); Иначе ТабДок.Присоединить(ОблНоменклатура); КонецЕсли; |
|||
5
andreymongol82
25.06.13
✎
11:18
|
(0) А почему нельзя просто сделать две области
Например "ОблНоменклатура" и "ОблНоменклатураКрасный" и по условиям выводит / присоединять одну из них? |
|||
6
НЕА123
25.06.13
✎
11:19
|
+(4)
и это... всякие получитьОбласть перед циклом вынести. |
|||
7
andreymongol82
25.06.13
✎
11:20
|
(6) Да шо же такое? Как только соберусь написать меня на пару секунд кто-то оопережает :)
|
|||
8
skunk
25.06.13
✎
11:22
|
ОблНоменклатура.Область("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0);
|
|||
9
Поросенок Петр
25.06.13
✎
11:23
|
А ещё стоит поботать возвращаемое значение _функций_ Вывести и Присоединить...
|
|||
10
MiniMuk
25.06.13
✎
11:32
|
ОблНоменклатура.Области.Детали.ЦветФона = ЦветаСтиля.СтатусОтклонен;
|
|||
11
avz07
25.06.13
✎
11:33
|
НЕА123, воспользовался я вашим кодом, но у меня выбросило такую ??ошибку:
{Форма.Форма.Форма(78,9)}: Процедура или функция с указанным именем не определена (ОблНоменклатураКрасный) <<?>>ОблНоменклатураКрасный("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); (Проверка: Толстый клиент (обычное приложение)) |
|||
12
GANR
25.06.13
✎
11:34
|
(0) В топку эту древность - СКД + Условное оформление.
|
|||
13
Поросенок Петр
25.06.13
✎
11:35
|
Доктор, меня все игнорят...
ОбластьЯчеек = ТабДок.Присоединить(ОблНоменклатура); Если ?(Выборка.Цена=Null,0,Выборка.Цена) > 80 Тогда ОбластьЯчеек.ЦветФона = Новый Цвет(255, 0, 0); КонецЕсли; А вообще (12)+1 |
|||
14
MiniMuk
25.06.13
✎
11:40
|
(13) как минимум
|
|||
15
НЕА123
25.06.13
✎
11:59
|
(11)
ОблНоменклатураКрасный.ЦветФона = Новый Цвет(255, 0, 0); |
|||
16
avz07
25.06.13
✎
12:06
|
как я понял, мне нужно создать еще одну область: ОблНоменклатураКрасный???
|
|||
17
НЕА123
25.06.13
✎
12:21
|
(16)
да. можно и так, вроде, но не уверен. т.е. после присоединения красить сам ТабДок. ТабДок.Присоединить(ОблНоменклатура); Если ?(Выборка.Цена=Null,0,Выборка.Цена) > 80 Тогда ТабДок.("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); //ЭлементыФормы.ТабличноеПоле.Колонки.ТекущаяКолонка.ЦветФона=Новый Цвет(255, 0, 0); КонецЕсли; |
|||
18
Поросенок Петр
25.06.13
✎
12:25
|
(14) Зачем красить в тот же цвет, в котором вывели?
|
|||
19
НЕА123
25.06.13
✎
12:28
|
(15)
не то ОблНоменклатураКрасный.ОБЛАСТЬ("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); |
|||
20
abjurer
25.06.13
✎
12:36
|
Или вариант с поименнованными ячейками
Область = Макет.ПолучитьОбласть("Строка|Период"); //если период отчета не попадает на день недели маршрута, то эту ячейку красим серым Если Период.МассивДнейНедели.Найти(ДеньНедели) = Неопределено тогда Область.Области.ЯчейкаСумма.ЦветФона = WebЦвета.СеребристоСерый; КонецЕсли; ТабличныйДокумент.Присоединить(Область); В области "Строка|Период" именованная ячейка "ЯчейкаСумма" |
|||
21
avz07
25.06.13
✎
14:16
|
я тоже так подумал, но к сожалению так не работает:
ТабДок.Присоединить(ОблНоменклатура); Если ?(Выборка.Цена=Null,0,Выборка.Цена) > 80 Тогда ТабДок.("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); //ЭлементыФормы.ТабличноеПоле.Колонки.ТекущаяКолонка.ЦветФона=Новый Цвет(255, 0, 0); КонецЕсли; выдает вот такую ??ошибку: {Форма.Форма.Форма(78,20)}: Ожидается идентификатор ТабДок.<<?>>("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); (Проверка: Толстый клиент (обычное приложение)) {Форма.Форма.Форма(78,21)}: Неопознанный оператор ТабДок.(<<?>>"ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); (Проверка: Толстый клиент (обычное приложение)) а как можно получить значение ячейки (я знаю, что оно содержится в ТабДок.Присоединить (ОблНоменклатура);), но как его оттуда записать в какую-то переменную? потом можно было б так: ОбластьФона = ТабДок.Область ("указывать переменную со значением ячейки"); ЦветФонаОбласты = Новый Цвет (255, 0, 0); ОбластьФона.ЦветФона = ЦветФонаОбласты; |
|||
22
avz07
25.06.13
✎
14:23
|
так точно работает, но мне нужно знать имена ячеек
|
|||
23
skunk
25.06.13
✎
14:23
|
еще раз
меняешь это ОблНоменклатура("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); на это ОблНоменклатура.Область("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); в том коде что у тебя в сабже ... и радуешься |
|||
24
avz07
25.06.13
✎
14:32
|
сделал как посоветовали:
{Форма.Форма.Форма(70)}: Ошибка при вызове метода контекста (Область) ОблНоменклатура.Область("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); по причине: Область не найдена: ОблНоменклатура |
|||
25
skunk
25.06.13
✎
14:36
|
ты точно код из сабжа меняешь
ОблНоменклатура=Макет.ПолучитьОбласть("ОблНоменклатура|Приходна"); <<< здесь ты получаешь область ОблНоменклатура.Параметры.ЦенаПриходна=Выборка.Цена; Если ?(Выборка.Цена=Null,0,Выборка.Цена) > 80 Тогда ОблНоменклатура("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); <<< а вот эту строку тебе надо заменить //ЭлементыФормы.ТабличноеПоле.Колонки.ТекущаяКолонка.ЦветФона=Новый Цвет(255, 0, 0); КонецЕсли; |
|||
26
avz07
25.06.13
✎
14:43
|
я именно так и сделал. я в недоразумении в чем ошибка. поэтому обращаюсь к вам на форум (или может в чем завтик)
|
|||
27
skunk
25.06.13
✎
14:46
|
(26)выложи свой отчет
|
|||
28
kosts
25.06.13
✎
14:50
|
Попробуй так
|
|||
29
mishgan75
25.06.13
✎
14:53
|
(0) не парься с изменением фона, сделай в макете 2 колонки с одинаковыми параметрами но с разными цветами, и в зависимости от полученного результата присоединяй область "красную" или "белую".
ps и начни изучать СКД |
|||
30
avz07
25.06.13
✎
16:23
|
вот так и все заработало:
ОблНоменклатура=Макет.ПолучитьОбласть("ОблНоменклатура|Приходна"); ОблНоменклатура.Параметры.ЦенаПриходна=Выборка.Цена; Если ?(Выборка.Цена=Null,0,Выборка.Цена) < 80 Тогда //ОблНоменклатура.Область("ОблНоменклатура|Наименование").ЦветФона = Новый Цвет(255, 0, 0); ОблНоменклатура.ТекущаяОбласть.ЦветФона = Новый Цвет(255, 0, 0); //ОбластьФона = ТабДок.Область("ОблНоменклатура"); //ЦветФонаОбласти = Новый Цвет(255, 0, 0); //ОбластьФона.ЦветФона = ЦветФонаОбласти; КонецЕсли; ТабДок.Присоединить(ОблНоменклатура); |
|||
31
avz07
25.06.13
✎
16:23
|
всем спасибо за советы!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |