Здравствуйте. Хочу сделать подсветку цветом строк ТЗ в отчете. Для этого я скачал FormEx.dll, поместил в каталог ИБ, в глобальном модуле прописал процедуру при открытии и функцию. В своей ТЗ добавил колонку для цвета, и в модуле прописал присваивание всем строкам ТЗ пока что просто одного цвета.
При запуске цвета строк нет. Вместо него в ячейках столбца прописалось BRUSH[12568013].
Что я делаю неправильно? Даю куски листинга. Спасибо!
Процедура ПриНачалеРаботыСистемы() Экспорт
// Подключение модуля цвета
Путь = КаталогИБ() + "FormEx.dll";
Если ЗагрузитьВнешнююКомпоненту(Путь) = 0 Тогда
Сообщить("Неудачная попытка загрузить FormEx.dll");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Сервис = СоздатьОбъект("Сервис");
Сервис.ВключитьРаскраскуТаблиц();
// Функция цвета
Функция глПолучитьЦвет(Красный = 0, Зеленый = 0, Синий = 0) Экспорт
Возврат Макс(0,Синий)*65536 + Макс(0,Зеленый)*256 + Макс(0,Красный);
КонецФункции
// Установка режима трассировки (только в режиме отладки)
Функция глТрассировкаУстановить(Знач чУровень) Экспорт
Процедура Сформировать()
Апр = СоздатьОбъект("Документ.АктПриема");
Расх = СоздатьОбъект("Документ.РасходнаяНакладная");
ТЗ = СоздатьОбъект ("ТаблицаЗначений");
//Создание колонок
ТЗ.НоваяКолонка("ДатаПр");
ТЗ.НоваяКолонка("ЗАКАЗ");
ТЗ.НоваяКолонка("ПРОИЗВ");
...........................................
...........................................
ТЗ.НоваяКолонка("СУММА");
ТЗ.НоваяКолонка("Цвет");
//Акт приема выбор данных
Апр.ВыбратьДокументы(НачДата,КонДата);
Пока Апр.ПолучитьДокумент()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ДатаПр = Апр.ДатаДок;
ТЗ.ЗАКАЗ = Апр.НомерЗаказа;
ТЗ.ПРОИЗВ = Апр.Производитель;
................................................
................................................
ТЗ.Адрес = Апр.Адрес;
ТЗ.Цвет = "BRUSH["+глПолучитьЦвет(205,197,191)+"]";
Расх.ВыбратьДокументы(НачДата,КонДата);
Пока Расх.ПолучитьДокумент()=1 Цикл
Если (Расх.НомерЗаказа = ТЗ.ЗАКАЗ) Тогда
ТЗ.ПРИЧИНА = Расх.Причина;
ТЗ.ИНЖЕНЕР = Расх.Инженер;
// ТЗ.СуммаР = Расх.Итого();
ТЗ.ВЫДАЛ = Расх.Выдал;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЗ.ВыбратьСтроку();
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("БАЗА");
Таб.ВывестиСекцию("Шапка");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Строка");
КонецЦикла;
//Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(0);
Таб.Показать();
КонецПроцедуры
Колонка Цвет должна быть первой слева и можно сделать ее невидимой. Раскраска работает слева направо начиная от столбца со служебной строкой.
У меня работает приблизительно так:
Тд.НоваяКолонка("FormEx_ПланРаскраски",,,,"FormEx_ПланРаскраски",); //обязательно первая
Тд.НоваяКолонка("
//... и т.д.
Тд.ВидимостьКолонки("FormEx_ПланРаскраски",0);
Тд.FormEx_ПланРаскраски = "()()()()()()(BRUSH[13160660])()(BRUSH[NONE])(BRUSH[13160660])()()()()()(BRUSH[NONE])(BRUSH[13160660])";
nysysimara @ Сегодня, 11:35
,
Здравствуйте. Не получается. Я создал колонку цвета первой.
ТЗ.НоваяКолонка("Цвет",0);
//Акт приема выбор данных
Апр.ВыбратьДокументы(НачДата,КонДата);
Пока Апр.ПолучитьДокумент()=1 Цикл
// ТЗ.Цвет = "()()()()()()(BRUSH[13160660])()(BRUSH[NONE])(BRUSH[13160660])()()()()()(BRUSH[NONE])(BRUSH[13160660])";
ТЗ.Цвет = "BRUSH["+глПолучитьЦвет(105,097,091)+"]";
.....и т.д.Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("БАЗА");
Таб.ВывестиСекцию("Шапка");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Строка");
КонецЦикла;
//Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(0);
Таб.Показать();
КонецПроцедуры
Судя по коды в вашей талице Тз 5 колонок,
значит при каждом
Тз.НоваяСтрока();
ТЗ.Цвет = "()(BRUSH[13160660])(BRUSH[13160660])(BRUSH[13160660])(BRUSH[13160660])(BRUSH[13160660])";
ZUBR @ 03.08.19, 17:28
,
Уххх,
1. ТЗ має бути розташована на формі звіту (обробки).
2. Обов'язково в ТЗ має бути така колонка як FormEx_ПланРаскраски.
Від автора:
ТЗ.ВыбратьСтроку();
Таб = СоздатьОбъект("Таблица");
Sharzem @ Сегодня, 15:34
,
Я людина нова, тільки вчусь, тому не можу бути впевненим, що саме має відношення до розфарбування рядків, а що ні.
Що ж до версії, то в моїй функція кольору також працюватиме? Я не скачав новішу версію, бо так і не знайшов її в інтернеті...
Версія 7.70.003 це версія платформи 1С чи конфігурації (торговля+склад) ?
Документ, таблицу которого я хочу закрасить цветом, называется отчет. Я создал в отчете ТаблицуЗначений виртуальную, в которую программно записываются значения из нескольких видов документов, а затем на основе ТаблицыЗначений создал таблицу на форме. С Шапкой, Строкой и Подвалом. Я не понимаю, можно ли с помощью компоненты FormEx раскрашивать цветом строки этой таблицы. То есть, при применении компоненты FormEx в моем случае цвет будет, или нет? Может, я зря бьюсь? Пока цвет не появился, хоть я все сделал по методике. Спасибо.
mut @ Сегодня, 11:43
, понятно!) Большое спасибо!!! За подсказку реального пути решения проблемы! Попробую этим методом. Правда, мне не всю строку нужно раскрашивать одним цветом. Есть варианты. Придется делать кучу секций с разными вариантами раскраски строк. Спасибо!
Если таблица "выглядит, как эксель", то это печатная форма, FormEx здесь не работает, он только для раскрашивания диалоговых таблиц.
Вам нужно работать с типовыми методами.
Если ячейка всегда одного цвета, то в макете печатной формы на нужной колонке - правой кнопкой - свойства - закладка Узор - реквизит Фон - выбирайте нужный.
Если же цвет фона ячейки должен меняться программно, то это сложнее, но выполнимо. Есть метод ".ЦветФона" для ОбластиТаблиц
mut @ 02.09.19, 11:43
, все получилось! Перебрал все варианты, поставил условия вывода и теперь выводится закрашенная таблица. Правда, разных условий 5, поэтому 2 в 5 степени будет 32. Поэтому вариантов секций получилось много - аж 23 (некоторые варианты невозможны). А вообще, если разных условий очень много, такой метод, наверное, будет очень громоздким. Но в моем случае - самое то! Еще раз спасибо за подсказку!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua