Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)

17.10.21

Разработка - Работа с интерфейсом

Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Выделение текущей строки в отчёте
.erf 46,26Kb
12
12 Скачать (1 SM) Купить за 1 850 руб.

Столкнулся давеча с задачей:

  1. Пользователям сложно смотреть отчёты, в которых много колонок. Им хотелось подсвечивать текущую строку (строку в которую они ткнули мышкой), чтобы с неё взгляд не сбивался на соседние строки.
  2. Также необходимо, чтобы при выделении пользователем нескольких ячеек из соседних строк, выделялись все эти несколько строк.
  3. Далее решено было добавить этот механизм ВО ВСЕ отчёты и ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ (здесь было МНОГО тонкостей - всё подробно откомментил в программном коде).

Поиск решения:

  1. Установка выделенных строк не подходит, т.к. придётся скидывать выделение произведённое пользователем, и сломается суммирование чисел в выделенных ячейках, т.к. будет выделяться целиком строка.
  2. Также можно вытащить заголовки строк - но это отъедает лишнее место и для выделения строки, надо тыкать именно в заголовок, а при переходе к ячейке, это выделение слетит и опять ломай глаза для поиска соседних ячеек по строке
  3. Поэтому выбран вариант обведения строки, лишённый минусов выше, но имеющий дополнительный плюс - внутри обведённой строки, отдельно видно выделенные ячейки, что позволяет фокусировать на них внимание.
  4. При этом не стал менять цвет обведения по причинам (но при желании это несложно добавить):
    1. чтобы он не совпал с цветом фона текущей или соседней строки и гарантированно нормально выделялся на фоне строки. А цвет обведения по умолчанию должен изначально удовлетворять данным правилам - поэтому его лучше не трогать.
    2. выше производительность, не нужно в дополнение сохранять и восстанавливать ещё и цвет границы.
  5. Вместо того, чтобы обводить ячейки, естественно можно их заливать фоном. Реализация будет почти та же самая, что и предложена в статье. Не стал делать по причинам:
    1. Но в таком случае есть риск не угадать с фоном, чтобы он одновременно нормально отображался для всех настроек оформления в разных базах.
    2. Выбранный цвет фона может совпасть с соседним цветом фона.
    3. Также вероятность найти отчёт, где ячейки имеют разный фон, выше, чем отчёт, где ячейки по-разному обведены. А когда в строке разные настройки ячеек, это несёт доп. сложности, и в производительности кода и в подборе правильного нового фона выделения.
    4. При заливке фоном мы потеряем то выделение фоном, которое существует и несёт дополнительную информацию. Например, потеряем выделение цветом особой ячейки, или при выделении нескольких строк потеряем чередование цвета строк, которое часто делают для удобства просмотра строк в отчёте.
    5. Для выделения фоном, надо вычислять и хранить больше данных - хранить данные не только верхней и нижней выделенной строки, но и всех внутренних - чтобы вернуть их потом в исходное положение

Смысл найденного решения:

  1. получаем выделенные строки
  2. запоминаем их обведение до наших изменений
  3. обводим выделенные строки
  4. снимаем обведение с предыдущих выделенных строк
  5. ЧТОБЫ НИЧЕГО НЕ СЛОМАТЬ учитываем, что обведение могло быть разным у разных ячеек строки

Распространение решения:
Чтобы решение появилось сразу во всех отчётах, где не переопределена форма отчёта, в общую форму отчёта добавляем программный код ниже. Для отчётов, у которых определена собственная форма отчёта, очевидно, данную настройку надо провести в собственной форме.

 
 добавить этот код в модуль формы отчёта
&НаКлиенте
Перем ДанныеВыделенныхСтрок;

&НаКлиенте
Процедура ОтчетТабличныйДокументПриАктивизации(Элемент)
    // Делаем через обработчик ожидания, чтобы дать возможность выделить несколько строк,
    // т.к. событие срабатывает сразу при выделении первой ячейки.
    ПодключитьОбработчикОжидания("ВыделитьТеущиеСтроки", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ВыделитьТеущиеСтроки()
    // 1. Найдём строки, где выделены ячейки
    ТекВерх = ОтчетТабличныйДокумент.ТекущаяОбласть.Верх;
    ТекНиз = ОтчетТабличныйДокумент.ТекущаяОбласть.Низ;
    ОбластьТекСтроки = ОтчетТабличныйДокумент.Область(ТекНиз,,ТекВерх);
    
    // 2. Скинем предыдущее обведение в состояние до нашего вмешательства
    Если ДанныеВыделенныхСтрок <> Неопределено Тогда
        //2.1. Если выделенные строки не менялись - ничего не делаем
        Если ТекВерх = ДанныеВыделенныхСтрок.Верх И ТекНиз = ДанныеВыделенныхСтрок.Низ Тогда
            Возврат;
        КонецЕсли;
        
        // 2.2. Вернём назад верхнюю границу
        // Обнаружена багофича, что если строке целиком вернуть толщину, которая была у неё изначально, то результат будет отличаться от начального.
        // Изначально для колонок идущих правее последней колонки (т.е. с номером больше, чем ШиринаТаблицы) Границы не отображаются.
        // Но после установки новой границы, начнёт отображаться. Поэтому сначала полностью стираем границу, которую мы установили выделением,
        // потом для колонок отчёта (с первой по ШиринаТаблицы) возвращаем сохранённую границу.
        // Альтернативный вариант - можно выделять не всю строку, а только колонки с первой по ШиринаТаблицы - но он кажется менее функциональным и интуитивно понятным.
        
        НевидимаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
        СтрокаВерх = ОтчетТабличныйДокумент.Область(ДанныеВыделенныхСтрок.Верх,, ДанныеВыделенныхСтрок.Верх);
        СтрокаВерх.ГраницаСверху = НевидимаяЛиния;
        
        ОбластьВерх = ОтчетТабличныйДокумент.Область(ДанныеВыделенныхСтрок.Верх, 1, ДанныеВыделенныхСтрок.Верх, ОтчетТабличныйДокумент.ШиринаТаблицы);
        Если ДанныеВыделенныхСтрок.ГраницаСверху <> Неопределено Тогда
            ОбластьВерх.ГраницаСверху = ДанныеВыделенныхСтрок.ГраницаСверху;
        Иначе
            Для Каждого НастройкиЯчейки Из ДанныеВыделенныхСтрок.УникальныеНастройкиГраницыВерх Цикл
                ТекЯчейкаВерх = ОтчетТабличныйДокумент.Область(ДанныеВыделенныхСтрок.Верх, НастройкиЯчейки.НомерКолонки,
                        ДанныеВыделенныхСтрок.Верх, НастройкиЯчейки.НомерКолонки);
                ТекЯчейкаВерх.ГраницаСверху = НастройкиЯчейки.ГраницаСверху;
            КонецЦикла;
        КонецЕсли;
        
        // 2.3. Вернём назад нижнюю границу
        СтрокаНиз = ОтчетТабличныйДокумент.Область(ДанныеВыделенныхСтрок.Низ,, ДанныеВыделенныхСтрок.Низ);
        СтрокаНиз.ГраницаСнизу = НевидимаяЛиния;
        
        ОбластьНиз = ОтчетТабличныйДокумент.Область(ДанныеВыделенныхСтрок.Низ, 1, ДанныеВыделенныхСтрок.Низ, ОтчетТабличныйДокумент.ШиринаТаблицы);
        Если ДанныеВыделенныхСтрок.ГраницаСнизу <> Неопределено Тогда
            ОбластьНиз.ГраницаСнизу = ДанныеВыделенныхСтрок.ГраницаСнизу;
        Иначе
            Для Каждого НастройкиЯчейки Из ДанныеВыделенныхСтрок.УникальныеНастройкиГраницыНиз Цикл
                ТекЯчейкаНиз = ОтчетТабличныйДокумент.Область(ДанныеВыделенныхСтрок.Низ, НастройкиЯчейки.НомерКолонки,
                        ДанныеВыделенныхСтрок.Низ, НастройкиЯчейки.НомерКолонки);
                ТекЯчейкаНиз.ГраницаСнизу = НастройкиЯчейки.ГраницаСнизу;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;
        
    // 3. При выделении всего документа, дальнейшие действия не требуются.
    // Более того, если не сделать эту проверку, то дальше упадём с ошибкой, при попытке получения ячейки с координатами (0,х,0,х)
    ВыделенВесьТабДок = ТекВерх = 0 Или ТекНиз = 0;
    Если ВыделенВесьТабДок Тогда
        // обработка выделенных строк на прошлом шаге для случая, когда ВыделенВесьТабДок = Истина, инициирует событие ПриАктивизации.
        // Чтобы не заходить в бесконечный цикл, очистим данные выделенных строк.
        ДанныеВыделенныхСтрок = Неопределено;
        Возврат;
    КонецЕсли;
    
    // 4. Запомним текущие значения обведённости строк
    ДанныеВыделенныхСтрок = Новый Структура;
    ДанныеВыделенныхСтрок.Вставить("Верх", ТекВерх);
    ДанныеВыделенныхСтрок.Вставить("Низ", ТекНиз);
    ДанныеВыделенныхСтрок.Вставить("ГраницаСверху", ОбластьТекСтроки.ГраницаСверху);
    ДанныеВыделенныхСтрок.Вставить("ГраницаСнизу", ОбластьТекСтроки.ГраницаСнизу);
    
    // В общем случае у разных ячеек строки могут быть разные настройки Границ (настройки обведения)
    // и чтобы вернуть их назад, их надо запомнить.
    // Свойство ГраницаСверху (и все остальные границы) для области будет иметь значение неопределено,
    // если для разных ячеек области у этой границы будут отличаться толщина или тип границы
    // Отмечу, что ЦветРамки при этом, может отличаться, и на Границы это никак не повлияет,
    // т.к. ЦветРамки является самостоятельным свойством области, как и сама Граница.
    
    УникальныеНастройкиГраницыВерх = Новый Массив;
    ДанныеВыделенныхСтрок.Вставить("УникальныеНастройкиГраницыВерх", УникальныеНастройкиГраницыВерх);
    Если ОбластьТекСтроки.ГраницаСверху = Неопределено Тогда
        Для НомерКолонки = 1 По ОтчетТабличныйДокумент.ШиринаТаблицы Цикл
            НастройкиЯчейки = Новый Структура("НомерКолонки, ГраницаСверху");
            НастройкиЯчейки.НомерКолонки = НомерКолонки;
            
            ЯчейкаВерх = ОтчетТабличныйДокумент.Область(ТекВерх, НомерКолонки, ТекВерх, НомерКолонки);
            НастройкиЯчейки.ГраницаСверху = ЯчейкаВерх.ГраницаСверху;
            
            УникальныеНастройкиГраницыВерх.Добавить(НастройкиЯчейки);
        КонецЦикла;
    КонецЕсли;
    
    УникальныеНастройкиГраницыНиз = Новый Массив;
    ДанныеВыделенныхСтрок.Вставить("УникальныеНастройкиГраницыНиз", УникальныеНастройкиГраницыНиз);
    Если ОбластьТекСтроки.ГраницаСнизу = Неопределено Тогда
        Для НомерКолонки = 1 По ОтчетТабличныйДокумент.ШиринаТаблицы Цикл
            НастройкиЯчейки = Новый Структура("НомерКолонки, ГраницаСнизу");
            НастройкиЯчейки.НомерКолонки = НомерКолонки;
            
            ЯчейкаНиз = ОтчетТабличныйДокумент.Область(ТекНиз, НомерКолонки, ТекНиз, НомерКолонки);
            НастройкиЯчейки.ГраницаСнизу = ЯчейкаНиз.ГраницаСнизу;
            
            УникальныеНастройкиГраницыНиз.Добавить(НастройкиЯчейки);
        КонецЦикла;
    КонецЕсли;
    
    // 5. Обведём текущие строки сверху и снизу самой толстой линией.
    // Ограничения (встречаются крайне редко): если строка уже обведена самой толстой линией, то при установке курсора на ней, ничего не изменится.
    // Избавиться от этого без побочных эффектов невозможно, потому что,
    // если в таком случае наоборот убирать обведение, то строка перестанет выделяться на фоне остальных строк.
    // Логика подсказывает, что выделенных строк в отчёте должно быть меньшинство, иначе теряется смысл их выделения.
    // Поэтому даже если на практике и встретится такой отчёт (а вероятность этого мала),
    // то выделение текущей строки в нём всё равно будет приносить, тот результат, которого мы и добивались.
    НаибольшаяВозможнаяТолщинаЛинии = 3;//ограничение платформы
    Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, НаибольшаяВозможнаяТолщинаЛинии);
    
    СтрокаВерх = ОтчетТабличныйДокумент.Область(ТекВерх,,ТекВерх);
    СтрокаВерх.ГраницаСверху = Линия;
    
    СтрокаНиз = ОтчетТабличныйДокумент.Область(ТекНиз,,ТекНиз);
    СтрокаНиз.ГраницаСнизу = Линия;
КонецПроцедуры

 

Побочное действие (НЕСУЩЕСТВЕННОЕ и встречаются крайне РЕДКО):

  1. если выделить несколько таблиц внутри одного отчёта, то выделение слетит до выделения первой таблицы. Поэтому при необходимости скопировать несколько таблиц, можно скопировать сначала весь отчёт.

Ограничения и особенности (встречаются крайне редко):

  1. Если строка уже обведена самой толстой линией, то при установке курсора на ней, ничего не изменится. Избавиться от этого без побочных эффектов невозможно, потому что, если в таком случае наоборот убирать обведение, то строка перестанет выделяться на фоне остальных строк. Логика подсказывает, что выделенных строк в отчёте должно быть меньшинство, иначе теряется смысл их выделения. Поэтому даже если на практике и встретится такой отчёт (а вероятность этого мала), то выделение текущей строки в нём всё равно будет приносить, тот результат, которого мы и добивались.
  2. Если в выделенной строке есть объединённые по вертикали ячейки, то обведение, в отличие от выделения, не разделит визуально объединённую ячейку на две части, а просто не будет в ней отображаться - в основном такое может быть только в шапке отчёта, где данный функционал и не нужен.

------------------------------------
ИНТЕРЕСНЫХ ВАМ ЗАДАЧ, ПЛОДОТВОРНОЙ РАБОТЫ И ОРИГИНАЛЬНЫХ/ОПТИМАЛЬНЫХ РЕШЕНИЙ!!

Проверено на платформе 8.3.17.1989.

Автовыделение выделение текущей выделенной выбранной строки отчёта табличного документа обвести

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62986    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    18855    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10224    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    16805    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    7353    smielka    37    

100

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    14789    913    elcoan    47    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    11914    162    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 2712 17.10.21 22:57 Сейчас в теме
так ка кне 8-ик - так и не понял, почему нельзя всю текущую строку выделить фоном, а выделенные ячейки в текущей строке подкрашивать по-другому...
2. Патриот 458 17.10.21 23:17 Сейчас в теме
(1)
почему нельзя всю текущую строку выделить фоном

Вместо того, чтобы обводить ячейки, естественно можно их заливать фоном. Реализация будет почти та же самая, что и в статье.
1. Но в таком случае есть риск не угадать с фоном, чтобы он одновременно нормально отображался для всех настроек оформления.
2. Кажется, что вероятность найти отчёт где ячейки имеют разный фон, выше, чем отчёт, где ячейки по-разному обведены. А когда в строке разные настройки ячеек, это несёт доп сложности, описанные в статье
а выделенные ячейки в текущей строке подкрашивать по-другому

в этом нет необходимости - выделенные ячейки подсвечивает сама платформа и в статье описывается, почему мы не используем выделение всей строки - чтобы не ломать поведение платформы.
3. CheBurator 2712 18.10.21 00:52 Сейчас в теме
(2)
Но в таком случае есть риск не угадать с фоном, чтобы он одновременно нормально отображался для всех настроек оформления.

насколько я понимаю одновременно м.б. применена только одна из настроек оформления, ну так читать ее параметры и делать заливку подходящим... Или в настройках оформления сделать параметр, явно задаваемый пользователем, который описывает "текущую строку"...?
4. Патриот 458 18.10.21 09:10 Сейчас в теме
(3) я сделал так, чтобы решение максимально не зависело от настроек оформления, чтобы не было необходимости что-то донастраивать.
разные оформления отчётов м.б. по следующим причинам:
1. В разных базах настройки оформления м.б. разные - особенно если работать во франче.
2. В одной базе тоже может быть несколько стилей
3. В любом отчёте можно легко наплевать на общие настройки и сделать его настолько красочным, насколько этого хотел пользователь
===
а при желании что-то донастроить - можно залезть в код и сделать всё что душе угодно
11. Cthulhu 1 18.10.21 16:02 Сейчас в теме
(1) кстати - да, еще одно неудобство в исходном варианте может встретиться - при выделении диапазона ячеек по высоте больше высоты экрана - когда видна только одна граница диапазона и не видны сами выделенные ячейки (выделили и отскроллили по горизонтали - часто бывает в отчетах с разрезом/аналитикой по колонкам)... с заливкой/узором было бы видно.
12. Патриот 458 18.10.21 16:08 Сейчас в теме
(11) ЦЕЛЬ выделения строки (строк) в том, чтобы спозиционировать взгляд на этой строке, и не путать её с соседней. В подавляющем числе случаев, пользователь будет выделять, одну строку. Если эта строка не влазит в экран, что бывает редко))))))))) или это пачка строк, которые не влазят в экран, то смысла позиционировать на ней взгляд пользователя не вижу.
Раз вам так понравилась разработка и наша исчерпывающая дискуссия, то можете не стесняться ставить плюс статье)
14. Cthulhu 1 18.10.21 16:22 Сейчас в теме
(12) и снова Вы не угадали.
часто встречающийся кейс: в левой заголовочной части построчной аналитики выделяются блоком интересующие - скролл вправо смотреть по выделенным строкам нужные колонки (горизонтального по-колоночного разреза/аналитики/хронологии).......
15. Патриот 458 18.10.21 17:37 Сейчас в теме
(14) дополнил секцию "Поиск решения" в пунктах 4-5 аргументами по нашей дискуссии. Также добавил новые аргументы, например по заливке фоном:
4. При заливке фоном мы потеряем то выделение фоном, которое существует и несёт дополнительную информацию. Например, потеряем выделение цветом особой ячейки, или при выделении нескольких строк потеряем чередование цвета строк, которое часто делают для удобства просмотра строк в отчёте.
5. Для выделения фоном, надо вычислять и хранить больше данных - хранить данные не только верхней и нижней выделенной строки, но и всех внутренних - чтобы вернуть их потом в исходное положение
16. Cthulhu 1 18.10.21 17:48 Сейчас в теме
(15) хреново вы как-то "дополнили"
1) опустили неоднократное мое ключевое замечание о том, чтобы цвет выделения (прямо номинируемый в rgb) не попадал ни в один из вариантов цветовых схем - это сделать достаточно нетрудно и (в отличие от того, что вы называете "крайне редким") - такой цвет действительно крайне редко будет визуально "теряться" (сливаться или совпадать с цветами в отчете).
2) про заливку фоном я не говорил (за исключением того, что я говорю не о фоне, а об узоре)

да забейте уже. )))
5. Cthulhu 1 18.10.21 14:13 Сейчас в теме
чтобы наверняка не "пересекаться" с "родными" границами (визуальная потеря выделения) - можно раскрасить саму границу режима выделения?..
6. Патриот 458 18.10.21 14:57 Сейчас в теме
(5)можно раскрасить. но в общем случае границы у разных строк могут быть разного цвета. Даже у одной строки у разных ячеек они могут быть разного цвета - т.е. универсального решения здесь нет. Описал это в статье. Также описал, что это
"пересекаться" с "родными" границами (визуальная потеря выделения)
крайне редкий гипотетический случай
7. Cthulhu 1 18.10.21 15:01 Сейчас в теме
(6) мне почему-то кажется, что при практически любом "общем случае" раскраска толстой границы "выделения" в rgb, не попадающая ни в один из вариантов цветовых схем - будет более чем достаточно универсальной.
нет?
8. Патриот 458 18.10.21 15:24 Сейчас в теме
(7) сейчас уже всё универсально, о чём написано в статье. Почему не стал раскрашивать, описал в комменте 2
9. Cthulhu 1 18.10.21 15:51 Сейчас в теме
(8)
(7) сейчас уже всё универсально, о чём написано в статье. Почему не стал раскрашивать, описал в комменте 2

куда-то вы меня не туда "послали".
в (вашем) комменте 2 сказано про раскраску фона - я спрашивал про раскраску границ.
ну да ладно. не вижу причин пытаться убеждать в очевидном. нет так нет. спасибо и удачи вам.
10. Патриот 458 18.10.21 16:00 Сейчас в теме
(9) Почему не стал менять цвет обведения:
1. "имеющий уши, да увидит") для раскраски фона и границы равносильны аргументы за которыми послал в коммент 2: "есть риск не угадать с фоном, чтобы он одновременно нормально отображался для всех настроек оформления" - т.е. либо ваш цвет будет мало заметен, либо, например выбрав красный, вы попадёте на то, что кто-то в своём отчёте выбрал тот же красный для тех же целей и вы таки пересечётесь.
2. решение без изменения цвета границы, а лишь с её утолщением, отметёт вариант, когда выбранный цвет границы совпадёт с цветом фона
3. производительнее и меньше кода - не надо хранить цвета границ каждой ячейки до изменения, как это сделано сейчас только для толщины границы.
===============
в целом, раскраска границы вполне имеет право на существование, но она ничего кардинально не меняет и её плюсы покрываются минусами
13. Cthulhu 1 18.10.21 16:16 Сейчас в теме
(10) да вот нифига они не "равноценны"!
если с раскраской текста/фона в отчетах в реальности "игры" весьма нередко встречаются - то с раскраски границами, не попадающей по rgb в варианты элементов стандартных цветовых схем - не бывает практически никогда.
в результате - выделение получается гарантированно более выделяющимся (а для чего все это и делалось?).

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

еще раз - удачи вам.
rpgshnik; CheBurator; +2 Ответить
27. rpgshnik 3795 19.10.21 11:53 Сейчас в теме
17. Timic 52 18.10.21 19:58 Сейчас в теме
Уже не в первый раз сталкиваюсь с такой задачей. И раньше пробовал разные варианты, в том числе и описанный в этой публикации, в том числе пробовал и выделение другим фоном. Проблемы все те же. И вот буквально сегодня снова эта задача. И на этот раз сделал совсем по-другому. Код ниже, скрин результата прилагаю. Идея в том чтобы использовать рисунок табличного документа типа Прямая. В данном случае использую четыре рисунка для очерчивания границ выделенных сток и столбцов. Плюс в том, что не надо запоминать оформление ячеек. Минусы тоже есть, но пока мне это решение понравилось больше всего (немного нарциссизма, извините).
#Область ОписаниеПеременных

&НаКлиенте
Перем ЛеваяГраница;

&НаКлиенте
Перем ПраваяГраница;

&НаКлиенте
Перем ВерхняяГраница;

&НаКлиенте
Перем НижняяГраница;

#КонецОбласти

&НаКлиенте
Процедура РезультатПриАктивизации(Элемент)
	
	Если ТипЗнч(Результат.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
		Возврат;
	КонецЕсли;
	
	Лево  = Мин(Макс(Результат.ТекущаяОбласть.Лево, 1), Результат.ШиринаТаблицы);
	Право = Мин(Результат.ТекущаяОбласть.Право, Результат.ШиринаТаблицы);
	Верх  = Мин(Макс(Результат.ТекущаяОбласть.Верх, 1), Результат.ВысотаТаблицы);
	Низ   = Мин(Результат.ТекущаяОбласть.Низ, Результат.ВысотаТаблицы);
	
	Если Право > Результат.ФиксацияСлева Тогда
		
		ИнициализироватьГраницу(ЛеваяГраница);
		ЛеваяГраница.Расположить(Результат.Область(1, Лево, Результат.ВысотаТаблицы, Лево));
		ЛеваяГраница.Ширина = 0;
		
		ИнициализироватьГраницу(ПраваяГраница);
		ПраваяГраница.Расположить(Результат.Область(1, Право, Результат.ВысотаТаблицы, Право));
		Ширина               = ПраваяГраница.Ширина;
		ПраваяГраница.Ширина = 0;
		ПраваяГраница.Лево   = ПраваяГраница.Лево + Ширина + ?(Право = Результат.ШиринаТаблицы, 0.2, 0.6);
		
	КонецЕсли;
	
	Если Низ > Результат.ФиксацияСверху Тогда
		
		ИнициализироватьГраницу(ВерхняяГраница);
		ВерхняяГраница.Расположить(Результат.Область(Верх, 1, Верх, Результат.ШиринаТаблицы));
		ВерхняяГраница.Высота = 0;
		
		ИнициализироватьГраницу(НижняяГраница);
		НижняяГраница.Расположить(Результат.Область(Низ, 1, Низ, Результат.ШиринаТаблицы));
		Высота               = НижняяГраница.Высота;
		НижняяГраница.Высота = 0;
		НижняяГраница.Верх   = НижняяГраница.Верх + Высота + ?(Низ = Результат.ВысотаТаблицы, 0.2, 0.6);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИнициализироватьГраницу(Граница)
	
	Если Граница <> Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Граница           = Результат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Прямая);
	Граница.ЦветЛинии = Новый Цвет(51, 51, 51);
	Граница.Линия     = Новый Линия(ТипЛинииРисункаТабличногоДокумента.Сплошная, 2);
	
КонецПроцедуры
Показать
Прикрепленные файлы:
UPKA; purgin; 1Pawel; +3 Ответить
18. Патриот 458 18.10.21 21:04 Сейчас в теме
(17) Спасибо!

1. Вы пишете, что пробовали решение аналогичное моему.
Проблемы все те же.

А можно здесь поподробнее? Можете кинуть или хотя бы описать \ показать проблемный пример?

2. Далее пишете, по поводу вашего решения
Минусы тоже есть

если не затруднит, опишите, что за минусы
=====
я потом дополню этими данными статью, для читателей сообщества
26. rpgshnik 3795 19.10.21 11:44 Сейчас в теме
(17) если бы вы оформили как расширение для популярных конфигураций (ЕРП/БП) с возможностью и настройкой в разрезе пользователей (включить/выключить) эту линейку, для общей формы, было бы замечательно. Если будите делать, сделайте пожалуйста сразу возможность определять пользователю какие линейки использовать (горизонтальную или вертикальную или обе сразу).
19. Timic 52 18.10.21 21:31 Сейчас в теме
(18)
А можно здесь поподробнее?

Основная проблема - приходится хранить структуру с описанием границ ячеек. Есть ограничение с выделением границы другим цветом - нельзя задать цвет, например, только для левой границы, подкрашиваются границы всей ячейки (это просто не смотрится). Кроме того в шапке таблицы могут быть объединенные по горизонтали ячейки. В этом случае сложнее устанавливать границы.
Если говорить о выделении фона, то не подбор цвета фона это достаточно не простая задача, так как нужно учитывать и цвет текста и проблема с объединенными ячейками остается.
если не затруднит, опишите, что за минусы

Приходится подбирать цвет рисунка (прямой). Но эту проблему можно обойти, например, смещением рисунка за границы текущей строки/колонки чтобы. В своей задаче я не заморачивался и просто оставил жирную черную линию (мне этого достаточно).
Второй минус - при размещении рисунка можно случайно увеличить размер табличного документа (речь о свойствах ВысотаТаблицы, ШиринаТаблицы). Из-за этого в коде есть вот такие куски:
?(Низ = Результат.ВысотаТаблицы, 0.2, 0.6)
20. Патриот 458 18.10.21 21:55 Сейчас в теме
(19), спасибо за ответ
Основная проблема - приходится хранить структуру с описанием границ ячеек.

не вижу проблемы - это реализация, которую вы один раз пишете и потом подключаете ко всем сразу или конкретному отчёту скопипастив всего три кусочка кода в форму отчёта
Есть ограничение с выделением границы другим цветом - нельзя задать цвет, например, только для левой границы, подкрашиваются границы всей ячейки

такого ограничения нет. Видимо вы использовали метод обвести - он работает так, как вы описали. Чтобы задать какую-то одну границу, надо присваивать именно её, как и показано в моей статье.
Кроме того в шапке таблицы могут быть объединенные по горизонтали ячейки

это правда, о чём, упомянул в статье, но не вижу смысла в шапке выделять строки
подбор цвета фона это достаточно не простая задача, так как нужно учитывать и цвет текста

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

теперь про ваше решение:
при размещении рисунка можно случайно увеличить размер табличного документа

я так понял это проблема реализации, которая также однократно решается при первом написании этой функции.
А минусы в работе пользователя, какие-то находили?
21. Timic 52 19.10.21 09:25 Сейчас в теме
(20)
не вижу проблемы

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

Ограничение есть. В 1С цвет нельзя задать для каждой границы в отдельности (см. скрин)
но не вижу смысла в шапке выделять строки

в моем случае выделяется еще и текущая колонка
Прикрепленные файлы:
22. Патриот 458 19.10.21 10:14 Сейчас в теме
(21) ясно
действительно "В 1С цвет нельзя задать для каждой границы в отдельности", но можно некоторые границы отключить и раскрасить их у соседней ячейки, что даст тот же результат с точки зрения пользователя. Но что это доп гемор - согласен
23. starik-2005 3087 19.10.21 11:15 Сейчас в теме
А не проще добавить еще одно табличное поле в форму (в реквизиты формы), дальше в него сохранять текущую строку "до рисования на ней фломастером", ну и восстанавливать оттуда строку, которую "разрисовывали" ранее? Уйдут все траблы.
24. Патриот 458 19.10.21 11:33 Сейчас в теме
(23) Надо тестить.
1. "Уйдут все траблы." все точно не уйдут, т.е. костяк моего решения пригодится (например то, что я обнаружил и пофиксил мигание табдока, если выделить его целиком, из-за ухода в бесконечный цикл, из-за наших манипуляций с ним в обработкеАктивизации)
2. предложенное вами решение выглядит менее производительным, т.к. у меня меняются только две рамки, а в вашем случае надо менять целиком две строки с их содержимым типа расшифровки, фоном и теми же рамками.
3. то, что там не возникнет новых траблов, кажется логичным, но пока не проверим, не узнаем наверняка - ибо и здесь такое их количество ничего не предвещало
25. starik-2005 3087 19.10.21 11:39 Сейчас в теме
(24)
выглядит менее производительным
Ну оно вряд ли менее производительно, чем кликающий мышкой юзер. Ну и если выделено больше одной строки, то не надо ничего делать.
28. rpgshnik 3795 19.10.21 11:58 Сейчас в теме
Идея хорошая, понравилась. Но сначала из скриншотов и слишком тяжелого описания не понял если честно о какой прекрасной штуке идёт речь :) но потом вчитался...

Я бы на вашем месте выпустил расширение для популярных типовых (ЕРП/БП), дал возможность настройки в разрезе пользователей и возможность не подключать обработчик ожидания (т.е. не использовать функционал). Так же добавить в раскраску несколько вариантов - выделение, узоры, закраска и т.п... Такое бы решение народ я думаю качал бы с удовольствием :)

Вертикальная линейка тоже прикольная задумка из комментариев.

Название как-то интуитивно пришло в голову "Линейка" :) сопоставимо с бухгалтерской огромной линейкой для проверки в отчетах-портянках данных... Сегодня как раз такой ковырял и думал, как же не удобно и нет возможности выделить строку и вспомнил о вашей публикации. Прочитал детально, попробовал, да оно.
29. Патриот 458 19.10.21 12:59 Сейчас в теме
(28) Спасибо на добром слове, но ещё бы его подкрепить добрым плюсом к статье)
Над пожеланиями подумаю на досуге.
Но сначала из скриншотов и слишком тяжелого описания не понял если честно о какой прекрасной штуке идёт речь :) но потом вчитался...

странно, по мне достаточно уже инфы из краткого описания статьи "Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор)"
Тем не менее, добавил ещё картинку и изменил описание в блоке "Столкнулся давеча с задачей:"
30. rpgshnik 3795 20.10.21 03:56 Сейчас в теме
(29) воу как-то промахнулся, поставил!
Патриот; +1 Ответить
31. script 128 21.10.21 01:11 Сейчас в теме
На 7-ке во внешней компоненте Formex были методы для определения координат любого элемента на форме. А так же были методы для перехвата движения курсора. Таким образом можно было отследить над каким реквизитом на форме движется курсор мыши, подсвечивая рамку этих реквизитов. (имитируя hover). Вот 8-ке это тоже бы пригодилось. Можно было бы выделять строки и элементы под курсором, не нажимая на них.

Но Formex на 8-ке не работает?
32. Патриот 458 21.10.21 09:02 Сейчас в теме
(31) 1. что-то подобное есть. На счёт координат мыши не в курсе. Юзал для того, чтобы скопипастить текст со служебной формы, недоступный для копирования. Также есть доработки, меняющие заголовок окна в конфигураторе.
2. не вижу большого плюса от выделения строки под курсором, а минусы вижу. Например нельзя будет выделить строку, потом чуть курсором мотнуть или прокруткой, чтобы глянуть соседнюю строку, а птом вернуться к целевой, потому что она уже не выделена и её надо искать заново.
3. внешние компоненты сильно сужают область применения решений - банки и крупные компании с отделом безопасности их не глядя забракуют. Также вк ещё и не гарантируют работы, в отличии от платформы.
33. tormozit 7229 24.10.21 22:39 Сейчас в теме
34. tormozit 7229 25.10.21 08:11 Сейчас в теме
Обнаружил беду. При изменении линии границы строки за пределами высоты или ширины табличного документа - текущая область смещается. За пределами высоты такое поведение понятно и я решил проблему путем отключение этого механизма, а вот за пределами ширины это неожиданно и пока не нашел решения. Описал эту проблему платформы тут https://www.hostedredmine.com/issues/936527 и отправил в 1С
Student1C; +1 Ответить
35. Патриот 458 25.10.21 12:14 Сейчас в теме
(34) Спасибо и за отзыв, и за то, что есть в этом мире люди, кто пишет о багах в 1С!
Да, сталкивался, но мне это не особо мешало - добавлю и этот побочный момент в описание статьи на досуге. А можно узнать, какие конкретные минусы это принесло - тогда может подскажу, как это можно обойти.
1. Например, в качестве выхода - можно не отрабатывать выделение строки, при выделении ячейки за пределами высоты и ширины.
2. Или запоминать тек область до обведения и восстанавливать после.
3. Как альтернативный вариант, можно использовать не выделение, а рисование линии - как предложил один из комментаторов выше. Но предложенное им решение пока очень сырое и имеет свои отличия как в лучшую так и в худшую сторону. Особенно большие проблемы возникли с вертикальными линиями в сложных табдоках (например во всех отчётах, где выведена область Параметры отчёта). На праздниках планирую по этому поводу тоже запилить статью.
Student1C; +1 Ответить
42. tormozit 7229 28.10.21 09:39 Сейчас в теме
(34) Чтобы сделать выделение менее навязчивым и избавиться от перескакивания области выделения сделал следующее https://www.hostedredmine.com/issues/936529 .
К пустым (без текста и собственных рамок) строкам - рамка не применяется.
К строкам с текстом, но без собственных рамок - применяется тонкая рамка.
К строкам с собственными рамками - применяется рамка толщиной 2.
За пределами высоты и ширины документа рамка не применяется.
1Pawel; Патриот; +2 Ответить
43. Патриот 458 28.10.21 11:27 Сейчас в теме
(42) как буду подбивать итоги по данной статье сошлюсь и на эту разработку
36. obmanOZ 33 26.10.21 22:48 Сейчас в теме
Добрейшего денечка! Подскажите, а где я мог напортачить?) У меня выделятся строка после таблицы с данными...
Прикрепленные файлы:
37. Патриот 458 27.10.21 08:21 Сейчас в теме
(36) так и задумано - выделяется строка. Например, благодаря этому можно вносить какие-нибудь пометки к строкам отчёта (понятно что необходимость этого стремится к нулю, но речь о принципе).
Если нужно, чтобы выделялось только до ширины таблицы - необходимо слегка доработать код
38. obmanOZ 33 27.10.21 09:09 Сейчас в теме
(37) Странно, я по скриншоту из публикации понял что выделится строка полностью с данными. А не подскажите где слегка доработать чтобы выделялась строка по активной ячейки до ширины таблицы? )
39. Патриот 458 27.10.21 10:28 Сейчас в теме
(38)
Странно, я по скриншоту из публикации понял что выделится строка полностью с данными.
строка полностью с данными выделилась. И выделилась вся. И на мой взгляд это лучше, чем не вся. Сожалею, что на скрине показано лишь самое главное и та деталь, на которую мне и большинству пользователей было пофиг, для вас оказалась важна.
А не подскажите где слегка доработать чтобы выделялась строка по активной ячейки до ширины таблицы? )
программный код максимально откомментирован. Чтобы подсказать, мне надо просто взять и сделать, на что потратить возможно час - т.к. если делать то сразу нормально красиво, протестить и т.д. Возможно в будущем сделаю, если кому-то ещё понадобится, например кому-то из тех людей, кто не постеснялся за проделанную работу поставить плюс ;)
40. obmanOZ 33 27.10.21 12:12 Сейчас в теме
(39) У нас видно разное представление о слегка поправить просто )
Но опять же, на скрине у вас показано самое главное, это выделение всей строки с данными, у меня же при копипасте кода строка не выделятся с данными, а выделяется за данными,я приложил скрин даже показать и лишь спросил Вашего мнения как автора, где я мог косякнуть при копипасте Вашего кода. Опять же, я подчеркивая что именно я косякнул при копипасте.
Для меня важно выделяться строку с данными прям вот с данными где тыкнул курсором в ячейку и Ваш код именно то что я искал, но у меня почему то отработал он не так как было задумано, я тыкаю в данные а строка выделяется за данными.
41. Патриот 458 27.10.21 12:29 Сейчас в теме
(40) учитывая, что на разработку и статью ушло пару дней и в ней есть всё, чтобы модифицировать её так, как хочется - ограничить ширину выделения - это слегка поправить.
Внимательнее рассмотрите свой скрин - на нём строка выделена целиком. За данными это выделение жирнее, т.к. там белый фон и чёрная рамка. Видимо вы хотите, чтобы рамка была темнее. Это тоже несложно доработать, но у этого есть свои минусы, описанные в статье в выборе варианта решения - т.е. оно станет менее универсальным, на мой взгляд.
44. obmanOZ 33 28.10.21 13:03 Сейчас в теме
(41) Вы правы, я действительно не заметил выделение строки! Прошу прощения, Ваш код полностью отрабатывает как задумывалось ) Спасибо!
Патриот; +1 Ответить
45. Патриот 458 28.10.21 14:19 Сейчас в теме
(44) ну Вы не стесняйтесь тогда на плюс в статье жать)
46. DrAku1a 1745 04.11.21 06:54 Сейчас в теме
(0) Посмотрите публикацию "Активный крест в табличном документе".
Там сделано выделение через выбранные ячейки. Это производительнее и снятие отрисовки не требуется.
47. tormozit 7229 04.11.21 10:26 Сейчас в теме
(46) Не "выделенные ячейки", а "выделенные области" (свойство "ВыделенныеОбласти"). Изменять состав выделенных областей - очень плохо и не естественно. Например при копировании в буфер обмена будет скопировано намного больше, чем нужно пользователю.
DrAku1a; Патриот; +2 Ответить
48. Патриот 458 04.11.21 22:56 Сейчас в теме
(46) в статье описано, почему так не стал делать. Даже в заголовке на это есть намёк "и ничего не сломать"
49. 1Pawel 1 31.05.22 01:45 Сейчас в теме
Благодаря этой теме реализовал границы выделенных строк и для своих нужд.
Проблема появилась, когда пользователи перешли с классического интерфейса на "Такси". Сразу пошли жалобы, что в отчётах жёлтая рамка выделенных ячеек еле заметна на фоне границ таблицы. То ли дело жирная чёрная обводка в классическом интерфейсе.
Реализация автора не понравилась тем, что линия хоть и жирнеет, но всё равно сливается на фоне границ таблицы. Попытался установить цвет границ, но, как выяснил, границы меняются у ячейки целиком, поэтому итог выглядел некрасиво: ячейки верхней и нижней границ целиком меняли цвет, и прорисовывались они не полностью.
Взял за основу код Timic (17). Понравилось, что границы отрисовываются поверх таблицы рисунком, можно выбрать цвет и не надо запоминать свойства ячеек. Не имея навыков программирования, быстро разобрался, как убрать вертикальные границы. Однако, при тестировании заметил, что линии иногда вылезают за границы табличной части.
Подсмотрел, как реализовал проверку с цветом и границами у tormozit (42). Добавил в код проверку, чтобы линии рисовались только до той колонки, где есть оформление (наличие границ либо нестандартный цвет ячеек). Также добавил дополнительную проверку, чтобы линии не отрисовывались, если выделить ячейки справа от таблицы.
Сделал линии толщиной 1. Вид в классическом и Такси интерфейсе на скрине.
Упаковал код в расширение для УТ 11.4.
#Область ОписаниеПеременных
&НаКлиенте
Перем ВерхняяГраница;
&НаКлиенте
Перем НижняяГраница;
#КонецОбласти

&НаКлиенте
Процедура ОтчетТабличныйДокументПриАктивизации(Элемент)
	
	// Проверяем, чтобы выделенная область была частью табличного документа.
	// Процедура не прервётся, если выделить область справа от таблицы,
	// но при выделении графика (картинки) прервётся.
    Если ТипЗнч(ОтчетТабличныйДокумент.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
	    Возврат;
	КонецЕсли;
		
    Верх  = ОтчетТабличныйДокумент.ТекущаяОбласть.Верх;
    Низ   = Мин(ОтчетТабличныйДокумент.ТекущаяОбласть.Низ, ОтчетТабличныйДокумент.ВысотаТаблицы);
	
	// Проверяем, чтобы выделенная область была не правее и не ниже таблицы
	Если Ложь
		Или ОтчетТабличныйДокумент.ТекущаяОбласть.Низ > ОтчетТабличныйДокумент.ВысотаТаблицы
		Или ОтчетТабличныйДокумент.ТекущаяОбласть.Лево > ОтчетТабличныйДокумент.ШиринаТаблицы
	Тогда
		Возврат;
	КонецЕсли;
	
	// Определяем ширину таблицы по наличию оформления (границы, нестандартный цвет ячейки) верхней выделенной строки
	ШиринаТаблицы = 0;
	Для НомерКолонки = 1 По ОтчетТабличныйДокумент.ШиринаТаблицы Цикл
		ЯчейкаВерх = ОтчетТабличныйДокумент.Область(Верх, НомерКолонки, Верх, НомерКолонки);
		Если Ложь
			Или ЯчейкаВерх.ЦветРамки.Вид <> ВидЦвета.АвтоЦвет
			Или ЯчейкаВерх.ГраницаСверху.ТипЛинии <> ТипЛинииЯчейкиТабличногоДокумента.НетЛинии
		Тогда 
			ШиринаТаблицы = НомерКолонки;
		КонецЕсли;
	КонецЦикла;
	
	// Если выделенное поле ниже фиксации и в верхней выделенной строке есть оформление, то рисуем границы
	Если ИСТИНА
		И Низ > ОтчетТабличныйДокумент.ФиксацияСверху
		И ШиринаТаблицы <> 0
	Тогда
	    ИнициализироватьГраницу(ВерхняяГраница);
        ВерхняяГраница.Расположить(ОтчетТабличныйДокумент.Область(Верх, 1, Верх, ШиринаТаблицы));
        ВерхняяГраница.Высота = 0;
        
        ИнициализироватьГраницу(НижняяГраница);
        НижняяГраница.Расположить(ОтчетТабличныйДокумент.Область(Низ, 1, Низ, ШиринаТаблицы));
        Высота               = НижняяГраница.Высота;
        НижняяГраница.Высота = 0;
        НижняяГраница.Верх   = НижняяГраница.Верх + Высота + ?(Низ = ОтчетТабличныйДокумент.ВысотаТаблицы, 0.2, 0.6);
    КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИнициализироватьГраницу(Граница)
    
    Если Граница <> Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Граница           = ОтчетТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Прямая);
    Граница.ЦветЛинии = Новый Цвет(51, 51, 51);
    Граница.Линия     = Новый Линия(ТипЛинииРисункаТабличногоДокумента.Сплошная, 1);
	
КонецПроцедуры
Показать
Прикрепленные файлы:
2022.05.31 ВыделениеСтрокВОтчете.cfe
Serg2000mr; marku; rpgshnik; TyurinArt; tormozit; Светлый ум; UPKA; koza538; ixijixi; Andrekaa; Timic; +11 Ответить
51. Светлый ум 415 08.02.23 05:06 Сейчас в теме
53. Serg2000mr 670 04.10.24 12:32 Сейчас в теме
(49) Если в отчете изменить макет оформления например на Основной, то перестает временно перестает работать
54. Serg2000mr 670 04.10.24 13:12 Сейчас в теме
(49) Если вообще зайти в настройки и переформировать отчет, то выделение перестает работать.
55. Serg2000mr 670 07.10.24 09:56 Сейчас в теме
(49) Если в процедуре СПВ_ИнициализироватьГраницу изменить строки на
    Граница           = ОтчетТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Прямая);
    Граница.ЦветЛинии = Новый Цвет(150, 150, 150);
    Граница.Линия     = Новый Линия(ТипЛинииРисункаТабличногоДокумента.Точечная, 1);


то смотреть это будет более гармонично
Прикрепленные файлы:
50. Dimsoff 06.10.22 16:32 Сейчас в теме
52. TyurinArt 97 25.03.23 17:35 Сейчас в теме
(49) Подскажите как выделить границы цветом последней выделенной ячейки через контрл (Ctrl)? Зажимаем контрл и кликаем левой кнопкой мыши по ячейкам, последняя ячейка без выделения границ цветом.
Оставьте свое сообщение