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

1. 18.06.19 08:41 Сейчас в теме
Доброго дня.
Каким образом можно можно подсветить др.цветом всю строку в табличном документе, а не только ту ячейку на которой стоишь?
Сам табличный документ располагается на форме внешней обработки(форма обычна, т.е. не управляемая). Есть возможность установить цвет фона самой активной ячейки, а вот чтобы всю строку - такого не нашла.
Кто-то может сталкивался, какие есть варианты?
Заранее благодарю.
Найденные решения
3. SlavaKron 18.06.19 09:21 Сейчас в теме
Перем ПредыдущийНомерСтроки;

Процедура ТабДокПриАктивизацииОбласти(Элемент)
	НомерСтроки = ЭлементыФормы.ТабДок.ТекущаяОбласть.Верх;
	Если ПредыдущийНомерСтроки <> Неопределено И НомерСтроки <> ПредыдущийНомерСтроки Тогда
		ЭлементыФормы.ТабДок.Область(ПредыдущийНомерСтроки,,ПредыдущийНомерСтроки).ЦветФона = Новый Цвет;		
	КонецЕсли;
	ЭлементыФормы.ТабДок.Область(НомерСтроки,,НомерСтроки).ЦветФона = WebЦвета.АкварельноСиний;
	ПредыдущийНомерСтроки = НомерСтроки;
КонецПроцедуры
Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. НовенькийЯ 18.06.19 08:52 Сейчас в теме
Свойства табличного поля - Режим выделения строки - Строка
4. Gal_B 18.06.19 10:30 Сейчас в теме
(2)
строки

нет такого в свойствах поля табличного документа (у нас 1С 8.3)
3. SlavaKron 18.06.19 09:21 Сейчас в теме
Перем ПредыдущийНомерСтроки;

Процедура ТабДокПриАктивизацииОбласти(Элемент)
	НомерСтроки = ЭлементыФормы.ТабДок.ТекущаяОбласть.Верх;
	Если ПредыдущийНомерСтроки <> Неопределено И НомерСтроки <> ПредыдущийНомерСтроки Тогда
		ЭлементыФормы.ТабДок.Область(ПредыдущийНомерСтроки,,ПредыдущийНомерСтроки).ЦветФона = Новый Цвет;		
	КонецЕсли;
	ЭлементыФормы.ТабДок.Область(НомерСтроки,,НомерСтроки).ЦветФона = WebЦвета.АкварельноСиний;
	ПредыдущийНомерСтроки = НомерСтроки;
КонецПроцедуры
Показать
5. Gal_B 18.06.19 10:44 Сейчас в теме
(3) дело в том, что табличное поле не является реквизитом обработки, а значит и обратиться к нему через ЭлементыФормы не получится
6. antz 18.06.19 10:55 Сейчас в теме
(5)
>Сам табличный документ располагается на форме внешней обработки
>табличное поле не является реквизитом обработки

Так табличный документ или табличное поле? Является или не является?
7. Gal_B 18.06.19 11:06 Сейчас в теме
8. SlavaKron 18.06.19 12:06 Сейчас в теме
(5) Из справки к полю табличного документа:
Поле табличного документа можно использовать для ввода данных пользователем и представления информации, хранимой в системе или полученной в результате расчетов.
Объект является визуальным представлением объекта ТабличныйДокумент и имеет все присущие ему свойства и методы.
9. Gal_B 18.06.19 15:16 Сейчас в теме
Разобралась. Да, действительно через ЭлементыФормы всё отлично работает.
Спасибо огромное!
10. STELEICE 13.10.21 10:14 Сейчас в теме
(3) Ваш код хорош но как вернуть предыдущей строке ее цвет после перемещения на текущую строку.
Новый цвет красит все в белый((
11. Release 13.10.21 10:35 Сейчас в теме
(10) Значит цвет для ячеек изначально был предопределён, а не в значении по умолчанию,т.е. "Авто".
Можно попробовать так:
Перем ПредыдущийНомерСтроки;
Перем ЦветФонаСтроки;

Процедура ТабДокПриАктивизацииОбласти(Элемент)
    НомерСтроки = ЭлементыФормы.ТабДок.ТекущаяОбласть.Верх;
    Если ПредыдущийНомерСтроки <> Неопределено И НомерСтроки <> ПредыдущийНомерСтроки Тогда
        ЭлементыФормы.ТабДок.Область(ПредыдущийНомерСтроки,,ПредыдущийНомерСтроки).ЦветФона = ?(ЦветФонаСтроки <> Неопределено, ЦветФонаСтроки, Новый Цвет);        
    КонецЕсли;
    ОбластьСтроки = ЭлементыФормы.ТабДок.Область(НомерСтроки,,НомерСтроки);
    ЦветФонаСтроки = ОбластьСтроки.ЦветФона;
    ОбластьСтроки.ЦветФона = WebЦвета.АкварельноСиний;
    ПредыдущийНомерСтроки = НомерСтроки;
КонецПроцедуры
Показать
12. STELEICE 13.10.21 11:31 Сейчас в теме
(11) Не взлетает(( все равно красит в белый.
цвета везде не авто.
13. Release 13.10.21 12:11 Сейчас в теме
(12) Значит нужно делать обход ячеек строки - перед установкой фона для каждой запоминать его цвет, потом так же обходом восстанавливать:
Перем ПредыдущийНомерСтроки;
Перем ЦветаФонаСтроки;

Процедура ТабДокПриАктивизацииОбласти(Элемент)
    ТабДок = ЭлементыФормы.ТабДок;

    Если ЦветаФонаСтроки = Неопределено Тогда
        ЦветаФонаСтроки = Новый Соответствие;
    КонецЕсли;

    НомерСтроки = ТабДок.ТекущаяОбласть.Верх;

    Если ПредыдущийНомерСтроки <> Неопределено И НомерСтроки <> ПредыдущийНомерСтроки Тогда
        Для НомерКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
            ОбластьЯчейка = ТабДок.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
            ЦветФонаЯчейки = ?(ЦветаФонаСтроки <> Неопределено, ЦветаФонаСтроки.Получить(НомерКолонки), Неопределено);

            ОбластьЯчейка.ЦветФона = ?(ЦветФонаЯчейки <> Неопределено, ЦветФонаЯчейки, Новый Цвет);
        КонецЦикла;
    КонецЕсли;

    Для НомерКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
        ОбластьЯчейка = ТабДок.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);

        ЦветаФонаСтроки.Вставить(НомерКолонки, ОбластьЯчейка.ЦветФона);
    КонецЦикла;

    ОбластьСтроки.ЦветФона = WebЦвета.АкварельноСиний;

    ПредыдущийНомерСтроки = НомерСтроки;
КонецПроцедуры
Показать
14. STELEICE 14.10.21 09:54 Сейчас в теме
(13) сделал так. Именно то что хотел.

Процедура РезультатПриАктивизацииОбласти(Элемент) 
 ШиринаТаблицы = ЭлементыФормы.Результат.ШиринаТаблицы;
Если ШиринаТаблицы <> 0 Тогда
ТекОбласть = ЭлементыФормы.Результат.ТекущаяОбласть;


НоваяТекОбласть = ЭлементыФормы.Результат.Область(ТекОбласть.Верх, 1, ТекОбласть.Низ, ШиринаТаблицы);

Если ТекОбласть.Имя <> НоваяТекОбласть.Имя Тогда
ЭлементыФормы.Результат.ТекущаяОбласть = НоваяТекОбласть;
КонецЕсли;
КонецЕсли
   КонецПроцедуры
Показать


В идеале можно прописать условие( булево) вкл/откл/ выделения строки или ячейки
15. Release 14.10.21 10:00 Сейчас в теме
(14) Ну, если вас устраивает, то и ладно.

Хотя, к примеру, что делает эта строка?
ЭлементыФормы.Результат.Область("R"+ТекОбласть.Верх+"C1:R"+ТекОбласть.Низ+"C"+ШиринаТаблицы).Шрифт;
16. STELEICE 14.10.21 10:06 Сейчас в теме
(15) подправил. Это строка лишней была.
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день

Ведущий разработчик 1С
Москва
зарплата от 250 000 руб.
Полный день

Руководитель проектов 1С
Москва
зарплата от 200 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб.
Полный день