Как в 1с выделить цветом строку
Перейти к содержимому

Как в 1с выделить цветом строку

  • автор:

Как в 1с выделить цветом строку

(0)В сервисах раскраски есть некая «задумчивость» (хотя не факт. Возможно у меня конфа сильно навороченная — у тебя может будет все ОК). По словам автора (Альфа) есть задумки по ускорению, но пока другие, более срочные, работы не позволяют этого сделать. Так что качай, пробуй — может у тебя и прокатит.

Попытка
ЗагрузитьВнешнююКомпоненту(«DLL\FormEx.dll»);
глСервис = СоздатьОбъект(«Сервис»);
Исключение
Сообщить(«Ошибка создания расширения языка «»FormEx»»»);
Сообщить(«ВНИМАНИЕ: Дополнительные модули не будут загружены!»);
Возврат;
КонецПопытки;

ой, спасибо всем за помощь. все получилось!)

у меня опять проблемка: как служебную строку можно напрямую прописана в формуле колонки (документ табличная часть)?

(14) Текст кинь на ТЧ документа, появится текстовая колонка справа . если , конечно, ты об этом спрашивала.

в FormEx.dll есть возможность выделить строку в ТЧ с помощью макрокоманды — BRUSH[<Цвет>] — задает цвет фона строки.
Для включения раскраски в таблицу добавила колонку в ТЧ, а в ней надо написать формулу (в которой должна быть служебная строка).
Вот и не получается эту команду запустить.

Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший

Как раскрасить строки табличной части по некоторому условию?

В 1С Предприятии 8.2 к табличной части можно применить такое же условное оформление, как и к динамическому списку. Но в отличие от динамического списка, где настройка списка доступна и в пользовательском режиме, сделать это можно только в режиме конфигуратора или из встроенного языка. Для этого нужно использовать свойство УсловноеОформление формы.

Например, нам требуется оформить строки табличной части приходной накладной так, чтобы строки с суммой больше 30000 были выделены желтым фоном, а ячейки Товар и Количество строк табличной части с количеством больше единицы были выделены красным текстом.

Выполним условное оформление интерактивно. Создадим форму документа ПриходнаяНакладная , выделим корень элементов формы (строку Форма ) и откроем ее свойства. В строке УсловноеОформление нажмем ссылку Открыть .

В появившемся окне Настройка условного оформления нажмем кнопку Добавить.

Сначала укажем Оформление для выделения полей. Нажмем кнопку выбора в поле Оформление и установим желтый цвет фона.

Затем укажем условие, при наступлении которого будет применяться оформление, то есть когда фон строк табличной части будет желтым. Нажмем кнопку выбора в поле Условие и в появившемся окне добавим Новый элемент отбора . Для этого нажмем на кнопку Добавить и укажем в графе Левое значение – поле табличной части Объект.Товары.Сумма , в графе Вид сравнения – Больше , а в графе Правое значение выберем 30000 .

Затем укажем список оформляемых полей. В отличии от оформления динамического списка, построенного на системе компоновки данных, если мы хотим выделить полностью строку, здесь нужно перечислить все поля строки табличной части.

Нажмем кнопку выбора в поле Оформляемые поля , затем нажмем Добавить и добавим поочередно все поля табличной части в список оформляемых полей.

Затем создадим еще одно условие для полей табличной части Товар и Количество , чтобы цвет текста этих полей был красным, в случае если значение в поле Количество больше единицы.

Таким образом, мы добились требуемого оформления табличной части формы документа ПриходнаяНакладная .

Заметим, что подобным образом можно оформить не только строки табличной части, но и все поля документа.

Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/КакРаскраситьСтрокиТабличнойЧасти.dt. Пример выполнен на версии платформы 8.2.9.356.

По условию можно оформить также и строки списка документов или других объектов конфигурации. Это делается через УсловноеОформление списка. Подробнее смотрите в вопросе Как раскрасить строки списка по некоторому условию?

Как в 1с выделить цветом строку

Есть управляемая форма с динамическим списком справочника Товары.
Как сделать чтобы цвет текста брался из реквизитов выводимых элементов?

ПриВыводеСтроки не предлагать.

Условное оформление.
(1) А дальше?
в условном оформлении задаешь расцветку строк в зависимости от необходимых тебе условий
(3) перечислить все 16 миллионов условий?
(4)а какая хрен разница где их перечислять?
(5) Никакой разницы. Главное чтобы не нужно было их перечислять.
(6) Какие у тя условия?
(7) Значение цвета. От 0 до 16777215
(8) для начала стоит подумать над корректной формулировкой задачи.

Автор, видимо, имел в виду
Процедура ПриВыводеСтроки(Параметры)
ОформлениеСтроки.ЦветФона = Новый Цвет(ТекущиеДанные.R, ТекущиеДанные.G, ТекущиеДанные.B);
КонецПроцедуры

(11) Не, он написал: ПриВыводеСтроки не предлагать 🙂
(11) Что угодно кроме этого
(12) Имелось в виду, что у него вычисляемый цвет будет, а не простой список условий
(13) Тогда используй ПриПолученииДанных

(0) «Как сделать чтобы цвет текста брался из реквизитов выводимых элементов?»

для полного счастья нужно было еще приписать: «И чтобы ничего не прогать и конфу на редактирование не открывать»

Речь об УФ!

(15) а ты разницу понимаешь между:

«ПриВыводеСтроки»
и
«ПриПолученииДанных»

(18) Естественно.

Короче, задача такая
В управляемой форме есть динсписок с полями типа число, задающими RGB
Необходимо оформить цвет текста строк списка

(0) я думаю тебе стоит огласить задачу целиком, если хочешь получить хоть какое-то более-менее вменяемое решение проблемы.

Это я формализовал требование ТС

(20) ну я бы делал (правда на обычных формах) через «ПриВыводеСтроки» 🙂

А какие еще варианты?

(23) хз. надо в УФ 😉
Короче, задача решаемая или нет?

Искренне хочется людям которые придумывают такие задачи ласково посмотреть в глаза, желательно, держа их нежно за горло.

(26) перебрать все товары в справочнике и для каждого создать свое условное оформление.

Это самое правильное (единственное) решение?

(28) Для всех комбинаций RGB, а не всех товаров.
(29) Да пофиг.
(30) Тогда да, это единственное решение.Ибо нефиг.
тогда это хрень, а не решение. наверное будет жутко тормозить на андроиде.
(32) Хрень — это красить каждый товар своим цветом.

(33) Истину глаголешь. Сделать некие категории которые выделять цветом — имеет смысл. А уходить в RGB — нафиг нафиг.

Если эти товары — не банки с краской.
Чо за гон? Не бывает столько красок. Их из белой получают путем колеровки.
(36) Сколько наименований, столько цветов. Смешивай любые как хочешь.

Нафига вообще в базе в ДС цвета для товара?
Для покупателя это всё равно будет на веб-сайте, либо в прайс-листе

Самих товаров конечно меньше чем возможных вариантов. И они могут появляться новые со временем.

Кстати, а нафига все эти краски на мониторе?
Да еще тонкой линией?
В живую они будут выглядеть совершенно по другому.

(38) Для удобства пользователя 1С
(40) можно и толстым фоном. Не ссуть

(37) Тогда есть решение попроще. Глазом ты все равно не различишь соседние цвета, следовательно можно сделать сеть цветов, вычислять в запросе в какому из узлов сети ближе всего заданный цвет товара и использовать не 100500 условных оформлений(цветов) а всего 100 к примеру.

Можно при активизации строки замутить раскраску декорации в соседнем с ДС месте
(43) Можно, я думал об этом. Но тут появляется еще одна проблема: Запросы на андроиде не работают.
Мда.. ДОжили.
(44) не пойдет, нужно чтобы было видно сразу много строк с разными цветами, для быстрого поиска.
(47) Юзай ТЗ ;)))
(48) и что, ее можно раскрасить как-то по другому?
(45) Вычисли принадлежность к сетке в момент записи товара.
(50) уже так и сделал. Временно. Пока не найду способ лучшею
(4) Ну так сформируй условное оформление программно
(4) ПриСозданииНаСервере
(53) Ok. Всем спасибо.

о! у меня тоже вопрос в тему. Имею документ с ТЧ. ТЧ выведена на форму. Нужно раскрасить строки по условию. Здесь говорится, что это можно сделать — http://help1c.com/faq/view/1235.html. Но у меня в свойствах ТЧ в оформлении только Горизонтальные и Вертикальные линии. Что не так делаю? (8.2.17.153)

(55) разобрался. условное оформление непосредственно в форме.

(54) У меня есть журнал документов, у него форма списка.
Сделал справочник «Цвета» назначил ему Владельца справочник Пользователи. Простенькую форму и сохраняю объект «Цвет» в ХЗ.

Добавил регистр сведений, в нем измерения — пользователь, документ, ну и 1 реквизит ссылку на спр. цветов.

В форме списка при создании на сервере запросом тащу все цвета пользователя и добавляю их в качестве элементов оформления дин. списка. Изменен и сам запрос списка, добавленно левое соединение с РС по ссылке на док и пользователю — собственно отбор каждого элемента усл оформление сравнивает ссылки на спр. цветов.

Я сделал так, потому-что у таблицы нету событий при подгрузке новых строк (я имел ввиду момент прокрутки). Собственно за задержки при открытии списка будет отвечать уже сам пользователь. Едиственное что необходимо пере открывать список если изменили какойто цвет (но эт можно если невпадлу и написать — но мне впадлу этой мелочью заниматься)

(57) ну и для удобства в контекстное меню списка добавил две кнопки «Пометить цветом», «Убрать пометку». Все действия я делаю с РС (не перезаписывая документы) а после модификации РС я просто программно обновляю элемент «список» формы.

Выделение цветом строки табличной части с условием.

Здравствуйте, подскажите пожалуйста как сделать нечто подобное
На форме есть табличная часть «ТО» у нее 4 реквизита : «Номер машины», «Текущий пробег», «Норма», «Тех. осмотр через». Получается что-то вроде (х100 АЕ 11, 11000, 5000, -6000
И нужно выделить красным цветом всю строку в случае если в колонке «Тех. осмотр через» будет значение с —.
Допустим «текущий пробег» 5000, а норма «6000» * на 10% то когда будет «текущий пробег» 5400 то строка выделяется желтым .
Я тут что-то накалякал

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

Просто, чтобы понять как выделение программно сделать.
Вопрос в чем, куда условие писать? сюда ? «элементОтбора.ПравоеЗначение»

Найденные решения
3. ditp 91 22.03.17 17:02 Сейчас в теме

(1) так:
?

Прикрепленные файлы:
Oldsad; Khalimon; Zweimor; maxst22; user606894_schana1w3; + 5 – Ответить
Остальные ответы

  • Дата
  • Дата
  • Рейтинг всех уровней
  • Рейтинг 1-го уровня
  • Древо развёрнутое
  • Древо свернутое

Свернуть все
3. ditp 91 22.03.17 17:02 Сейчас в теме

(1) так:
?

Прикрепленные файлы:
Oldsad; Khalimon; Zweimor; maxst22; user606894_schana1w3; + 5 – Ответить
4. user606894_schana1w3 22.03.17 17:11 Сейчас в теме
(3)а как вы так сделали? через условное оформление формы?
5. user606894_schana1w3 22.03.17 17:15 Сейчас в теме
(3)Все, просек, спасибо.
2. Velesstroy_OOO 22.03.17 16:55 Сейчас в теме

В «элементОтбора.ПравоеЗначение» указывается значение условия, с которым сравнивается значение в поле «элементОтбора.ЛевоеЗначение».

Таким образом для желтого выделения. Вычисляем норму пробега, подставляем значение в «элементОтбора.ПравоеЗначение» в «элементОтбора.ВидСравнения» вид сравнения указываем больше либо равно.

6. user606894_schana1w3 22.03.17 17:21 Сейчас в теме
А так прокатит При открытии()? тоесть открываю обработку и там уже заполненная табличная часть.
7. ditp 91 22.03.17 17:47 Сейчас в теме
(6) В приОткрытии нужно будет пробежаться по строкам ТЧ и заполнить нужное
8. user606894_schana1w3 23.03.17 09:55 Сейчас в теме
обежаться по строкам ТЧ и заполнить нужное

Что-то я не совсем понял как в при открытии это сделать, типа циклом пробежался и вызов вот этой процедуры при окончании редактирования?

9. ResetAtreides 23.03.17 10:30 Сейчас в теме

А зачем, вообще, чего-то выполнять? Условное оформление на форме в конфигураторе настройте и будет всегда работать

KAV2; yaroslav.artem; + 2 – Ответить
10. yaroslav.artem 23.03.17 10:51 Сейчас в теме

Условное оформеление на форме в конфигураторе.. В УФ формах по другому не нашел как сделать, нет события ПриВыводеСтроки()

11. user606894_schana1w3 23.03.17 11:58 Сейчас в теме

Все, всем спасибо. Сделал по схеме настройки усл. оформления и добавления реквизитов и расчета их в запросе.

А если ручками при открытии вот рабочий код

//элементОформления = УсловноеОформление.Элементы.Добавить(); //ЭлементыПолей = элементОформления.Поля.Элементы; //элементОтбора = элементОформления.Отбор.Элементы; // //элементОтбора = элементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //элементОтбора.ЛевоеЗначение= Новый ПолеКомпоновкиДанных("Объект.СкороТО1.Дельта1");//Полный путь до реквизита вашей табличной части //элементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; //элементОтбора.ПравоеЗначение = 0; //элементОтбора.Использование=Истина; // //элементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Лосось); //элементОформления.Использование = Истина; // //ПолеОформления = элементОформления.Поля.Элементы.Добавить(); //ПолеОформления1 = элементОформления.Поля.Элементы.Добавить(); //ПолеОформления2 = элементОформления.Поля.Элементы.Добавить(); //ПолеОформления3 = элементОформления.Поля.Элементы.Добавить(); //ПолеОформления4 = элементОформления.Поля.Элементы.Добавить(); //ПолеОформления.Поле= Новый ПолеКомпоновкиДанных("СкороТО1Дельта1");//Название реквизитатабличнойчасти(Табличная часть - СкороТО1, реквизит Дельта1) //ПолеОформления1.Поле= Новый ПолеКомпоновкиДанных("СкороТО1НомерСтроки"); //ПолеОформления2.Поле= Новый ПолеКомпоновкиДанных("СкороТО1Автомобиль"); //ПолеОформления3.Поле= Новый ПолеКомпоновкиДанных("СкороТО1ПробегТО1"); //ПолеОформления4.Поле= Новый ПолеКомпоновкиДанных("СкороТО1НормаТО1"); //ПолеОформления.Использование = Истина; //ПолеОформления1.Использование = Истина; //ПолеОформления2.Использование = Истина; //ПолеОформления3.Использование = Истина; //ПолеОформления4.Использование = Истина;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *