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

Публикация № 1535804 17.10.21

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

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

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

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

  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.

Скачать файлы

Наименование Файл Версия Размер
Выделение текущей строки в отчёте

.erf 46,26Kb
6
.erf 46,26Kb 6 Скачать

Специальные предложения

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

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

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

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

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

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

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

еще раз - удачи вам.
rpgshnik; CheBurator; +2 Ответить
27. rpgshnik 2723 19.10.21 11:53 Сейчас в теме
17. Timic 28 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);
	
КонецПроцедуры
Показать
Прикрепленные файлы:
18. Патриот 329 18.10.21 21:04 Сейчас в теме
(17) Спасибо!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Альтернативный способ добавления элементов и реквизитов на формы Промо

Работа с интерфейсом v8 ERP2 УТ11 Россия Абонемент ($m)

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

1 стартмани

09.09.2019    18114    35    bmk74    7    

Анализ цепочки документов в 1С:ERP

Анализ учета v8 ERP2 УУ Абонемент ($m)

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

5 стартмани

06.10.2021    2777    15    pma_2015    3    

Самые красивые шахматы для 1С на управляемых формах

Игры v8 8.3.14 Россия Абонемент ($m)

Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.

5 стартмани

18.02.2021    5792    13    compmir    30    

Интерактивная справка по объектам 1С (подключаемое расширение)

Работа с интерфейсом Практика программирования v8 ERP2 Абонемент ($m)

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

3 стартмани

29.09.2020    16064    84    sapervodichka    47    

Расширенная настройка динамического списка УФ Промо

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

31.05.2017    39390    161    tormozit    25    

Визуальный html WYSIWYG редактор без сторонних библиотек на управляемых формах

Прочие инструменты разработчика Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой и удобный html редактор без сторонних библиотек.

1 стартмани

31.08.2020    8228    11    ivanov660    12    

Заполнение выделенных строк таблицы

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.01.2020    7172    6    sulfur17    15    

Делаем из СКД Excel (ну, почти)

Работа с интерфейсом v8 Абонемент ($m)

Несложный в использовании способ внедрить в обычный отчет СКД возможность редактировать значения ресурсов отчета (а-ля Excel) и получать отредактированные значения для дальнейшей обработки.

1 стартмани

26.01.2020    15602    26    herfis    16    

Открывашка ячеек таблиц Промо

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    22744    13    tormozit    38    

Индикация прогресса выполнения фонового задания на управляемой форме внешней обработки

БСП (Библиотека стандартных подсистем) Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя обработка с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП >= 2.3 без изменения конфигурации и встраивания обработки в "Дополнительные отчеты и обработки".

1 стартмани

27.12.2019    20331    36    1sig    16    

Декомпиляция условного оформления

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

2 стартмани

23.12.2019    11914    54    XilDen    7    

Многоуровневые списки выбора с оформлением элементов

Работа с интерфейсом Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Данная статья - попытка решить один маленький кусочек большой проблемы платформы 1С, а именно - бедные и невыразительные пользовательские интерфейсы. Поскольку 1С в режиме управляемого приложения позволяет задействовать веб-клиент, то хочется реализовывать интерфейсы как у взрослых веб-приложений - красивые, дружелюбные для пользователя и, желательно, с положительным UX. Возможно, кто-то со мной не согласится и скажет, что учетные системы должны быть строгие и линейные. Но мы все знаем, что 1С - это уже не только про бухгалтерию. Небольшое отступление для разработчиков, работающих с типовыми конфигурациями. Я не знаю, использует ли фирма 1С что-то похожее в своих разработках. Если да, то данная статья навряд ли будет вам полезна.

1 стартмани

17.12.2019    12812    2    azhilichev    5    

Лучший подарок для бухгалтера - счёты 8.2 (со звуком) Промо

Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

(Толстый клиент) Подарите бухгалтеру счеты, и он(а) Вас никогда не забудет.

1 стартмани

13.05.2011    45010    923    Tatitutu    45    

Удобный выбор из таблицы/дерева в УФ

Работа с интерфейсом Инструментарий разработчика Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Выбор из таблицы значений или дерева значений в выпадающем списке рядом с полем ввода - УФ, быстро и просто!

1 стартмани

12.08.2019    18571    8    Yashazz    18    

[Механизм интерфейса] Свой флажок (чекбокс)

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

09.08.2019    22660    21    rpgshnik    43    

Отбор на управляемой форме из списка значений

Работа с интерфейсом Инструментарий разработчика Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Пример простого удобного отбора любых данных ссылочного типа на управляемой форме. Работа обработки проверена на релизе: 1С:Предприятие 8.3.13.1513.

1 стартмани

09.08.2019    32466    34    nagaitseff    6    

Визуализация событий на временной шкале средствами "Поле HTML документа" Промо

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469

1 стартмани

31.07.2018    29462    146    Plotks2017    27    

Обработка-редактор HTML

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Редактор HTML для управляемого интерфейса 8.3.

1 стартмани

10.06.2019    13376    91    ValeriVP    11    

Виртуальная (экранная) клавиатура для управляемых форм

Инструментарий разработчика Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Предлагаю свой вариант виртуальной клавиатуры для использования в разработках, предполагающих использование сенсорного ввода.

1 стартмани

14.12.2018    20538    84    asdfgcom    16    

Рисуем и распознаем нарисованное при помощи нейросети

Работа с интерфейсом Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Используем нейронную сеть для распознавания нарисованных объектов.

1 стартмани

03.10.2018    18571    45    DO_WHILE_LOOP    28    

Работа с данными выбора Промо

Работа с интерфейсом Практика программирования v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    69458    25    kalyaka    17    

Рисуем диаграммы в metadata.js

Инструментарий разработчика Работа с интерфейсом v8 v8::СКД 1cv8.cf Абонемент ($m)

Не одной же литературой заниматься?

1 стартмани

20.09.2018    22589    5    1c-intelligence    77    

Продвинутое рисование в табличном документе (стрелок и не только)

Работа с интерфейсом Практика программирования v8 Абонемент ($m)

Вспоминаем геометрию и основы компьютерной графики. Матрицы и аффинные преобразования на плоскости.

1 стартмани

24.07.2018    21006    21    WalterMort    31    

Иерархическая диаграмма

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Концепция диаграммы по иерархической структуре данных, например по номенклатуре (продажи или остатки на складах).

2 стартмани

17.06.2018    18748    19    DrAku1a    6    

Интерактивный интерфейс Промо

Рабочее место Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

29.10.2011    22014    65    Vin_Tik    9    

Рисуем стрелки в табличном документе

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Рисуем стрелки средствами 1С .

1 стартмани

01.06.2018    19473    9    pm74    10    

Программная работа с графическими схемами. Готовое решение

Инструментарий разработчика Универсальные обработки Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Работоспособное, проверенное на практике, простое и удобное программное управление графическими схемами.

1 стартмани

18.02.2018    23745    26    Yashazz    13    

Тестирование интерфейса в обычном приложении 8.2 при помощи SikuliX

Инструментарий разработчика Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Как же не хватает клиента тестирования на платформе 8.2. Не кликнешь на кнопку, не выберешь из списка, не проверишь видит ли надпись пользователь. Воспользуемся внешним инструментом SikuliX, который позволит нам протестировать функционал форм. Данный инструмент легко встраивается в линию сборки и может "дружить" с уже известным многим Open-source продуктами.

1 стартмани

03.01.2018    36585    5    kraynev-navi    42    

Программное формирование форматированной строки в стиле html+inline CSS Промо

Работа с интерфейсом Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    43796    46    bonv    13    

Программное создание элементов графической схемы (через XSLT)

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

20.07.2017    26097    73    lazarenko    20    

Простой редактор плана помещения JavaScript

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

1 стартмани

23.11.2016    27805    108    igel9780    23    

Настройка начальной страницы (Рабочего стола)

Работа с интерфейсом Рабочее место Универсальные обработки v8 1cv8.cf Абонемент ($m)

Альтернатива стандартной настройке начальной страницы. В типовой доступны лишь те формы, что явно "разрешены" разработчиком в режиме конфигуратора. Эта обработка позволяет собрать "Рабочий стол" из любых подходящих форм в пользовательском режиме. Без программирования. БСП не используется. Не расширение. Универсальна, т.е. подойдет для любой конфигурации (в т.ч. самописной).

2 стартмани

19.10.2016    45915    259    Erne100    30    

Цветовые схемы для конфигуратора 1С (Популярные цветовые схемы для C# - теперь и для 1С) (Теперь 8.2 - 8.3) Промо

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Тёмные цветовые схемы кода. То, что было доступно всем передовым средствам разработки, теперь доступно и на 1С. 13.12.17 UPD: Теперь работает с платформой 8.3

3 стартмани

07.10.2013    43654    185    Chernov_Dmitriy    82    

[Расширение] Стартовые страницы. Автозапуск форм при старте 1С. (8.3.9+, без доработки конфигурации)

Инструментарий разработчика Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Уверен, что в большинстве случаев список справочников, отчетов, обработок (объектов 1С в целом), к которому обращаются пользователи после запуска конфигурации 1С, раз от раза меняется не сильно. Так почему бы немного не упростить процесс открытия часто используемых форм? Данное расширение позволяет настроить автоматическое открытие различных форм объектов сразу после запуска 1С. Список форм настраивается индивидуально для каждого пользователя. Работает на платформе 8.3.9, без доработки конфигурации.

1 стартмани

03.10.2016    25841    93    Artem-B    20    

Конструктор условного оформления

Инструментарий разработчика Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

27.09.2016    20826    16    Fragster    7    

HTTP-сервис: отчеты [Расширение]

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    34744    155    Stepa86    16    

NativeDraw: Компонента рисования для 1С [V2.6.2] Промо

Разработка внешних компонент Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.07.2015    53677    474    ПерваяСистема    147    

Механизм доп. реквизитов и сведений

Работа с интерфейсом Практика программирования v8 БП2.0 Абонемент ($m)

Как к новому справочнику подключить механизм дополнительных реквизитов и сведений

2 стартмани

23.06.2016    35372    38    piffoff    19    

Блокировка баннеров при помощи расширения

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Примеры использования расширений

1 стартмани

09.06.2016    17477    12    oslokot    16    

Простые радости жизни программиста 1С: выбор типа значения

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    60308    56    yuraos    18    

Подборка иконок для подсистем 1С:8.2, 8.3 (740 шт.) PNG 48х48 Промо

Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

Подборка иконок для подсистем 1С: Предприятие 8.2, 8.3 (УП) в формате PNG 48*48 с сохранением прозрачности.

3 стартмани

19.12.2011    118282    1242    Lesha1C    74    

Визуальный редактор цветовых схем подсветки синтаксиса 1С + импорт схем Visual Studio

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Данная обработка призвана облегчить настройку рабочего места программиста 1С, а именно улучшить визуальное восприятие кода, уменьшить утомляемость, и, как следствие, увеличить общую производительность труда!

1 стартмани

29.01.2016    19636    82    ram3    27    

Возможности перетаскивания, примеры использования, помощь в понимании и отладке механизма работы (8.3, управляемые формы)

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

Механизм перетаскивания используется редко, а ведь его использование может помочь в реализации интуитивно понятных функций, которые могут весьма ускорить работу пользователя, и получить в итоге более дружественный интерфейс. Данная обработка не содержит копированного из Синтакс-Помощника текста (его вы сможете прочитать и сами). Она показывает примеры использования перетаскивания; позволяет прямо в режиме Предприятия протестировать, проверить и отладить основные приёмы работы; понять принцип вызова событий и увидеть состав их параметров.

1 стартмани

17.11.2015    43147    111    Alias    17    

Передача реквизитов объекта из основной формы в дополнительную и обратно на управляемых формах

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

02.11.2015    45793    16    Wolex    32    

V8Reader (с расширенным анализом форм) Upd. Промо

Инструментарий разработчика Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

27.01.2012    83449    2473    bambr1975    308    

Инструмент для создания веб приложений на основе 1С REST сервиса

Инструментарий разработчика WEB Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Обзор платформы-конструктора для создания веб-приложений, использующих в качестве источника базы данных 1С

1 стартмани

13.10.2015    31063    77    dmzubr    23    

Кнопки управления группировками табличного документа для управляемых форм Промо

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

02.06.2015    30066    29    unichkin    9