Имя: Пароль:
1C
1С v8
УсловноеОформление - заполнение списка
0 mulder_mulder
 
09.07.15
18:59
Добрый день.

Пришлось разукрашивать таблицу.
В итоге,в общем, надо забить в условное оформление порядка 180 строк, плюс в каждой, записи ещё изменить порядка 9 параметров.

Причём, людям может не понравится цвет, или условие, и придётся В РУЧНУЮ менять эти горы, что не свойственно современным требованиям.

Встал вопрос заполнения списка "УсловноеОформление". Дата так, что бы этот список остался в конфигкрации, а не исчез после закрытия программы.

Как и чем его заполнить, мне известно, а вот как достучаться до списка конфигурации, не знаю.

За ранее благодарен.
1 Лодырь
 
09.07.15
19:00
делай програмно
2 mulder_mulder
 
09.07.15
19:01
Да, так-же не желательно, каждый раз его создавать при открытии формы.
3 mulder_mulder
 
09.07.15
19:02
Я и хочу программно. Но мне не дадут сохранить данные а форму на будущее. (1)
4 Лодырь
 
09.07.15
19:03
(2) почему нежелательно?
5 Casey1984
 
09.07.15
19:08
(0) а не может один человек сказать "хочу зелёный", а другой "даёшь фиолетовый в крапинку"?
6 mulder_mulder
 
09.07.15
19:10
Потому что хочется иметь как можно меньше рукописного кода.
Хочу просто заполнить справочник, и к этому касаться. (4)

(5) Да, так и будет. Завтра они захотят всё на оборот, или шрифт другой. )
7 mulder_mulder
 
09.07.15
19:10
(5) Чего бы мне взбрело в голову, разукрашивать таблицу всеми цветами радуги :)
8 mulder_mulder
 
09.07.15
19:11
(4) Значит нельзя программно изменить списки формы?
9 Casey1984
 
09.07.15
19:13
(8) почему нельзя?
10 mulder_mulder
 
09.07.15
19:17
(9) И как?
11 mulder_mulder
 
09.07.15
19:27
В том и проблема, что никак не сделать.
Ладно, будем делать программно, и создавать каждый раз заново.
12 Лодырь
 
09.07.15
19:40
(11) Настрой 1 раз руками и запиши результат куданибудь (например в XML и запихни в хранилище). Потом восстанавливай когда нужно. Ну или ты можешь развлечься выгрузкой конфы в файлы, посмотреть на них внимательно, сгенерировать кусок файла с УО и заменить руками. Потом собрать конфу заново.
13 mulder_mulder
 
09.07.15
21:35
(12) Понятно, интересно, но сложновато пока для меня это. :)
Решил создавать правила каждый раз при создании формы.

Что я делаю не так?

Функция СоздатьПравилаУсловногоОфрмленияДляФормы()

УФ = Этаформа.УсловноеОформление;
уф.Элементы.Добавить();
уф1 = уф.Элементы.Получить(уф.Элементы.Количество()-1);
уф1.Оформление.УстановитьЗначениеПараметра("цветФона", "255,0,0");
уф1.Оформление.УстановитьЗначениеПараметра("цветФона", "255,0,0");

ЭлементОтбора = уф1.Отбор.Элементы.Добавить(тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных ("этаформа.Таблица53хНедельногоГрафика.Нед1");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = "<<Завершено>>";

уф1.Поля.Элементы.Добавить();
уф1.Поля.ПолучитьОбъектПоИдентификатору(0).Поле = "нед1";
уф1.Поля.ПолучитьОбъектПоИдентификатору(0);

КонецФункции // СоздатьПравилаУсловногоОфрмленияДляФормы()


В последник трёх строчках пока ошибка. как мне правильно добавить поле, которое является колонкой в таблице под именем "нед1".?
14 mulder_mulder
 
09.07.15
22:11
Нашёл в чём была ошибка. Но всё равно не работает. Не окрашивает.

ОформляемоеПоле = уф1.Поля.Элементы.Добавить();
//ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Нед1");
15 mulder_mulder
 
09.07.15
22:39
Уже сделал по: http://catalog.mista.ru/public/181336/

Всё правильно, ни на что не ругается.

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

// Установка значения элемента УО
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);
ЭлементОформления.Использование = Истина;        

// Создаем условие отбора
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("этаформа.Таблица53хНедельногоГрафика.Нед1"); // имя поля
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит; // либо задаем свой
//**** Значение для отбора
ЭлементОтбора.ПравоеЗначение = "1";
ЭлементОтбора.Использование = Истина;


//Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:

// Создаем поля оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Таблица53хНедельногоГрафика.нед1");
ПолеОформления.Использование = Истина;

А всё равно не закрашивает квадрат.
16 mulder_mulder
 
09.07.15
23:59
В общем, вот так будет правильно.
Я забыл разрешить правилу работать, плюс конфигуратор заглючил. Мучился, мучился, Выбило ошибку, перезапустил прорамму - заработало. Первый раз такое.

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

// Установка значения элемента УО
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);
ЭлементОформления.Использование = Истина;

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

//Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:

// Создаем поля оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Нед1");
ПолеОформления.Использование = Истина;
17 mulder_mulder
 
10.07.15
14:07
Продолжаем тему.
А как созданный список правил экспортировать в хранилище, а потом его применять из хранилища к таблицам? А то при генерации окна происходит более 175 вызовов сервера, что нагружает сильно.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.