![]() |
|
программное оформление ячейки табличной части документа. | ☑ | ||
---|---|---|---|---|
0
Shalun
23.08.22
✎
14:00
|
Всем привет. Задача вроде не сложная, но что то не получается.
В ТЧ документа, после изменения значения ячейки (к примеру "Количество"), осуществляется проверка на соответствие введенного значения некоему условию. И если соответствие не установлено, то окрасить ячей в красный цвет. Я делаю так: &НаКлиенте Процедура ТоварыНоменклатураКоличествоПриИзмененииПосле(Элемент) ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; Если ТекущаяСтрока.Количество > 50 Тогда Элемент.ЦветТекста = WEBЦвета.Rhfcysq; Иначе Элемент.ЦветТекста = WEBЦвета.Черный; КонецЕсли; КонецПроцедуры В таком виде выделяется вся колонка, а нужно ВЫДЕЛИТЬ ЯЧЕЙКУ таб.части документа!!! Через условное оформление то же не получится выделить, т.к. данный код пишется в расширении, и добавить реквизит в таб.часть не меняя основную конфу не получится. Кто знает, подскажите как окрасить конкретную ячейку табличной части документа? Заранее благодарствую. |
|||
1
Ryzeman
23.08.22
✎
14:20
|
а не проще условное оформление? Само же напрашивается...
|
|||
2
Ryzeman
23.08.22
✎
14:21
|
А по теме - что у тебя в Элемент. Явно не ячейка
|
|||
3
Shalun
23.08.22
✎
14:49
|
(1) Процедура пишется в расширении, и вставить дополнительный реквизит в табличную часть не меняя основную конфу не получается. Я в примере написал 50, на самом деле там вычисляемое значение.
(2) Тип значения Элемент - "ПолеФормы". |
|||
4
6awkup_true
23.08.22
✎
14:55
|
(3) так а зачем новый реквизит?
прыгаешь с клиента на сервер и программно добавляешь условное оформление. или вообще формируешь условное оформление программно при создании формы |
|||
5
6awkup_true
23.08.22
✎
15:04
|
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЭлементОформления = ЭтаФорма.условноеОформление.Элементы.Добавить(); ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Количество"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; ЭлементОтбора.ПравоеЗначение = 50; ЭлементОтбора.Использование = Истина; ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Лосось); ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТоварыКоличество"); ПолеОформления.Использование = Истина; КонецПроцедуры |
|||
6
Shalun
23.08.22
✎
15:34
|
Парни, согласен, не удачный пример привел. Давайте тогда поправим, и вместо Правого значения (50) введем некую функцию, и получим:
ТекущаяСтрока.Количество > ПолучитьЗначение(ТекущаяСтрока.Номенклатура) Предположим что у нас есть регистр, в которм для каждой Номенклатуры хранится значение МаксимальногоКоличествакОтгрузке. Эта функция получает данные этого регистра, и затем мы сравниваем. Если количество в документе выше чем в регистре - то окрашиваем в цвет. Т.О. значение для сравнения в каждой строке будет свое. (5) Ввиду описанных выше уточнений, я так понимаю Метод ПриСозданииНаСервере Не подойдет? |
|||
7
6awkup_true
23.08.22
✎
15:38
|
(6) не пойдет. но тот же код можно использовать и при изменении. прыгать на сервер, проверять, добавлять элементы УО. красить можно по номеру строки. перед этим оформление для этой строки нужно выпилить только
|
|||
8
Shalun
23.08.22
✎
16:07
|
(7) Так в том то и вопрос. Как окрасить конкретное поле табличной части, а не строку и не колонку целиком?
|
|||
9
6awkup_true
23.08.22
✎
16:15
|
(8) получил номер строки, которую нужно оформить. ее пишешь в условие. в оформляемые поля включаешь все, которые нужно оформить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |