Как можно это сделать КОДом ?

В данном разделе можно задавать вопросы по программированию на платформе 1С:Предприятие 8.
(Раздел предназначен для тех, кто уже прошел обучение в нашем учебном центре)

p.s. Просьба задавать вопросы только по программированию. На вопросы по типовым конфигурациям обычно не отвечаю по двум причинам
1. В последнее время редко с ними работаю.
2. Чтобы ответить на вопрос требуется: установить соответствующую базу нужного релиза, смоделировать ситуацию, и только после этого возможно залезть в конфигуратор и разобраться что не так (к сожалению, у меня нет столько времени).

Как можно это сделать КОДом ?

Сообщение cobra77777 » 19 май 2016, 21:52

Здравствуйте Сергей!
Управляемая форма (8.3.8.1652).
Есть "Регистр накопления" (прикреплённый файл - Регистр.jpg).Я реализовал через "Условное оформление" (файл также наз-ся).
Вопрос: как можно это реализовать через КОД. Тут показ-ся если картриджей < 1 выделять красным цветом(цвет не важно) ?

Спасибо.
Вложения
Регистр.jpg
Регистр.jpg (25.68 KiB) Просмотров: 4006
Условное оформление.jpg
Условное оформление.jpg (25.73 KiB) Просмотров: 4006
cobra77777
 
Сообщений: 52
Зарегистрирован: 11 авг 2012, 21:26

Re: Как можно это сделать КОДом ?

Сообщение admin » 20 май 2016, 11:48

Не очень понял зачем это делать через код, но в любом случае нужно будет в обработчике ПриСозданииНаСервере формы регистра программным способом настроить условное оформление.

Делается это примерно так:
Код: выделить все
   
ЭлементУО = Список.УсловноеОформление.Элементы.Добавить();
      
ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Остаток");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 1;

ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);
      
ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Остаток");
admin
Администратор
 
Сообщений: 240
Зарегистрирован: 14 дек 2011, 11:11

Re: Как можно это сделать КОДом ?

Сообщение cobra77777 » 20 май 2016, 15:23

Выдаёт ошибку на:
{РегистрНакопления.УчетКартриджей.Форма.ВсегоКартриджей.Форма(5,15)}: Переменная не определена (Список)
ЭлементУО = <<?>>Список.УсловноеОформление.Элементы.Добавить(); (Проверка: Сервер)
cobra77777
 
Сообщений: 52
Зарегистрирован: 11 авг 2012, 21:26

Re: Как можно это сделать КОДом ?

Сообщение admin » 20 май 2016, 15:26

Список - это основной реквизит формы, смотрите как у вас он называется.
admin
Администратор
 
Сообщений: 240
Зарегистрирован: 14 дек 2011, 11:11

Re: Как можно это сделать КОДом ?

Сообщение cobra77777 » 20 май 2016, 20:02

Ясно. Код отработал без ошибок. Не закрашивает строку в красный цвет. Вот мой код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ЭлементУО = Основной.УсловноеОформление.Элементы.Добавить();

ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Остаток");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 1;

ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);

ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Остаток");
КонецПроцедуры
cobra77777
 
Сообщений: 52
Зарегистрирован: 11 авг 2012, 21:26

Re: Как можно это сделать КОДом ?

Сообщение admin » 21 май 2016, 12:53

Проверьте название поля "остаток", возможно поле называется иначе.
admin
Администратор
 
Сообщений: 240
Зарегистрирован: 14 дек 2011, 11:11

Re: Как можно это сделать КОДом ?

Сообщение cobra77777 » 21 май 2016, 14:52

Вот скриншот.
Вложения
Скриншот.jpg
Скриншот.jpg (126.59 KiB) Просмотров: 3984
cobra77777
 
Сообщений: 52
Зарегистрирован: 11 авг 2012, 21:26

Re: Как можно это сделать КОДом ?

Сообщение admin » 21 май 2016, 14:55

Поле называется "КоличествоОстаток"

Поэтому надо так:

Код: выделить все
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ЭлементУО = Основной.УсловноеОформление.Элементы.Добавить();

ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 1;

ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);

ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
КонецПроцедуры
admin
Администратор
 
Сообщений: 240
Зарегистрирован: 14 дек 2011, 11:11

Re: Как можно это сделать КОДом ?

Сообщение cobra77777 » 21 май 2016, 15:01

Спасибо большое. Работает.
cobra77777
 
Сообщений: 52
Зарегистрирован: 11 авг 2012, 21:26


Вернуться в Вопросы по программированию

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron