1с выделить все дерево

Работа с деревом значений в 1С

В последнее время аномально часто мне в работе попадалось дерево значений, поэтому решил написать на эту тему статью.

Попробую рассмотреть способы решения основных задач связанных с деревом значений, при этом постараюсь писать «без воды».

Дерево значений

Из названия объекта понятно, что дерево значений служит для хранения/отображения какой-либо иерархической информации. Каждая строка дерева значений может иметь какое-то количество подчиненных строк, при этом такие операции как поиск, сортировка, подсчет итогов можно проводит с учетом уровня иерархии и подчиненных строк.

Кроме этого, каждая строка дерева значений имеет свойства «Родитель» и «Строки».

Дерево значений на форме

Визуальное представление дерева значений обеспечивает элемент «Табличное поле».

Дерево значений на обычной форме Дерево значений на управляемой форме

Заполнение дерева значений

При заполнении дерева значений нужно помнить, что сам объект «ДеревоЗначений» и все его строки имеют свойство «Строки»и добавление новых строк на любом уровне дерева осуществляется через это свойство.

Сам же объект «ДеревоЗначений» имеет еще и свойство «Колонки», которое ничем не отличается от аналогичного свойства у таблицы значений.

Небольшой пример программного заполнения таблицы значений для управляемых форм:

Обход дерева значений

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

Как свернуть и развернуть дерево значений

Сворачивается и разворачивается дерево значений очень просто.

Привел три примера: для сворачивания текущей строки, для сворачивания строк верхнего уровня, для сворачивания вообще всех строк (рекурсия).

Два примера: для разворачивания текущей строки и для разворачивания всех строк. У метода «Развернуть» есть дополнительный параметр, который позволяет указать нужно ли разворачивать подчиненные строки.

Как удалить строку и очистить дерево значений

Тут опять же все просто, нужно помнить, что при удалении/очистке строки, все подчиненные строки удаляются.

Точно также можно очистить от подчиненных элементов другую другую строку.

Удалить строку дерева значений не сложнее — нужно только знать ее индекс:

Запрос и дерево значений

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

Если на форме имеется реквизит «ДеревоЗначений» и связанный с ним визуальный элемент, то можно сделать примерно так:

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

Читайте также:  Чем обрабатывать персиковое дерево

Дерево значений в таблицу значений и обратно

Преобразовать дерево значений в таблицу значений и наоборот достаточно просто, ведь дерево значений это та же таблица значений, но с дополнительной колонкой — «Родитель». У меня есть отдельная статья о том как преобразовать дерево значений в таблицу значений и обратно.

Отбор в дереве значений

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

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

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

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

Еще один способ заключается в том, чтобы преобразовать дерево значений в таблицу значений, сделать отбор в таблице значений, проконтролировать результат (почистить «хвосты» — строки, родитель которых не удовлетворил условию отбора) и выполнить обратное преобразование в дерево значений.

На этом все, рассказал все, что знал, надеюсь мне удалось сэкономить Вам немного времени.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

УжасноПлохоНеплохоХорошо Отлично(оценок: 36, средняя оценка: 4,64 из 5)

Источник

Использование сочетаний клавиш, список зарезервированных сочетаний

Область применения: управляемое приложение.

Для часто выполняемых или общеупотребимых действий рекомендуется назначать сочетания клавиш. Ниже приведены списки зарезервированных сочетаний в прикладных решениях и в платформе 1С:Предприятие .

Для действий, приведенных в таблицах, назначение указанных сочетаний клавиш обязательно. Использование зарезервированных сочетаний в иных целях запрещается.

Список зарезервированных сочетаний клавиш в прикладных решениях:

Сочетание клавиш Действие
Ctrl + Shift + F Полнотекстовый поиск
F7 Поиск по штрихкоду
F8 Выключить/включить активность проводок в журнале операций
F11 Установить текущее учреждение
F12 Вызов «Управление данными работника»

Список зарезервированных сочетаний клавиш в платформе 1С:Предприятие :

Сочетание клавиш Действие
Ctrl + A Выделить все
Ctrl + B Включить/выключить жирность
Ctrl + Alt + B Предыдущая страница
Ctrl + C Копировать в буфер обмена
Ctrl + E Открыть «Свойства»
Ctrl + F Поиск, найти
Ctrl + Alt + F Следующая страница
Shift + Alt + F Форматировать блок
Ctrl + G Перейти к ячейке, перейти к строке
Ctrl + H Заменить, замена
Ctrl + I Включить/выключить курсив
Ctrl + L Удалить текущую строку
Ctrl + Shift + M Перенести элемент в другую группу
Ctrl + N Создать новый документ
Ctrl + Shift + N Установка имени текущей области
Ctrl + O Открыть существующий документ
Ctrl + Alt + O Открыть «Служебные сообщения»
Ctrl + P Печать активного документа
Ctrl + Shift + P Печать на текущий принтер
Ctrl + Shift + R Обновить, обновить группировки
Shift + Alt + R Восстановить положение окна
Alt + Shift + R Восстановить положение окна
Ctrl + S Сохранить активный документ
Ctrl + T Найти в дереве
Ctrl + U Включить/выключить подчеркивание
Ctrl + V Вставить из буфера обмена
Ctrl + W Выделить слово
Ctrl + Alt + W Открыть «Табло»
Ctrl + X Вырезать в буфер обмена
Ctrl + Y Вернуть отмененное действие
Ctrl + Z Отменить последнее действие
Ctrl + Alt + Z Очистить служебные сообщения
Ctrl + Shift + Z Закрыть «Служебные сообщения»
Ctrl + «-« Переход по истории активности окон, переместиться назад
Ctrl + Shift + «-« Переход по истории активности окон, переместиться вперед
Ctrl + Alt + Num- Свернуть (узел дерева, группу табличного документа) и все подчиненные
Shift + Num- Вычесть из буфера обмена
Alt + Num-
Space Изменение флажка
Alt + Space Вызвать системное меню приложения или модального диалога
Alt + Hyphen (- ) Вызвать системное меню окна (кроме модальных диалогов)
Enter Перейти к редактированию содержимого ячейки, сохранить свойства
Alt + Enter Открыть «Свойства»
Ctrl + Enter Сформировать отчет
F1 Открыть «Справку»
Shift + F1 Открыть «Содержание справки»
Shift + Alt + F1 Открыть «Индекс справки»
Alt + F1 Открыть «Поиск по справке»
F2 Открыть, переключение режима редактирования/ввода в ячейке
Ctrl + F2 Открыть встроенный «Калькулятор» системы 1С:Предприятие
Shift + F2 Закончить редактирование, предыдущая закладка
Alt + F2 Установить/снять закладку
F3 Найти следующий
Ctrl + F3 Найти следующий выделенный
Shift + F3 Найти предыдущий
Ctrl + Shift + F3 Найти предыдущий выделенный
F4 Кнопка выбора
Ctrl + F4 Закрыть активное обычное окно
Shift + F4 Очистить поле
Alt + F4 Закрыть активное окно, модальный диалог или приложение
Ctrl + Shift + F4 Кнопка открытия
F6 Активизировать следующую секцию окна
Ctrl + F6 Активизировать следующее обычное окно
Shift + F6 Активизировать предыдущую секцию окна
Ctrl + Shift + F6 Активизировать предыдущее обычное окно
F9 Скопировать
Ctrl + F9 Новая группа
F10 Вызвать главное меню
Shift + F10 Вызвать контекстное меню
Alt + F10 Вызвать главное меню
Up, Down, Left, Right Перемещение по ячейкам, прокрутить, перейти к предыдущему / следующему свойству
Ctrl + (Up, Down, Left, Right) Перемещение по ячейкам или дереву, перемещение выделенного варианта, перемещение по тексту по словам
Shift + (Up, Down, Left, Right) Выделение ячеек, изменение размеров элемента карты
Alt + Right Переход к следующей главе справки
Alt + Left Переход к предыдущей главе справки
Ctrl + Shift + (Up, Down, Left, Right) Перемещение по ячейкам к следующей заполненной или пустой с выделением ячеек, выделение колонок, выделение слов, перемещение строки верх/вниз
Alt + Shift + (Up, Down) Выделение строк
Ctrl + Alt + Shift + (Left, Right) Выделение колонок до следующей заполненной или пустой ячейки
Ctrl + Alt + Shift + (Up, Down) Выделение строк до следующей заполненной или пустой ячейки
Page Up Прокрутить на страницу вверх
Ctrl + Page Up Предыдущая страница, перейти к предыдущей категории
Shift + Page Up Выделить предыдущую страницу текста
Alt + Page Up Прокрутить на размер окна влево, прокрутить на страницу влево
Page Down Прокрутить на страницу вниз
Ctrl + Page Down Следующая страница, перейти к следующей категории
Shift + Page Down Выделить следующую страницу текста
Alt + Page Down Прокрутить на размер окна вправо, прокрутить на страницу вправо
Num+ Раскрыть узел дерева, увеличить масштаб, раскрыть категорию свойств
Ctrl + Num+ Развернуть (узел дерева, группу табличного документа, группировку модуля)
Shift + Num+ Добавить к буферу обмена
Ctrl + Shift + Num+ Развернуть (все узлы дерева, группы табличного документа, группировки модуля)
Ctrl + Alt + Num+ Развернуть (узел дерева, группу табличного документа, группировку модуля) и все подчиненные
Num- Закрыть узел дерева, уменьшить масштаб, закрыть категорию свойств
Ctrl + Num- Свернуть (узел дерева, группу табличного документа, группировку модуля)
Shift + Num- Вычесть из буфера обмена
Alt + Num- Вызвать системное меню окна (кроме модальных диалогов)
Ctrl + Shift + Num- Свернуть (все узлы дерева, группы табличного документа, группировки модуля)
Ctrl + Alt + Num- Свернуть (узел дерева, группу табличного документа, группировку модуля) и все подчиненные
Num* Раскрыть все узлы дерева
Shift + Num* Копировать в буфер обмена как число
Esc Вернуть активность обычному окну, снять выделение, восстановить значения свойства
Shift + Esc Закрыть активное окно (кроме обычных)
Tab Сдвинуть блок вправо, перейти на следующий элемент карты
Ctrl + Tab Активизировать следующее обычное окно
Shift + Tab Перейти на предыдущий элемент карты, сдвинуть блок влево
Ctrl + Shift + Tab Активизировать предыдущее обычное окно
BackSpace Удалить символ слева от курсора
Ctrl + BackSpace Удалить слово слева от курсора
Alt + BackSpace Отменить последнее действие
Shift + Alt + BackSpace Вернуть отмененное действие
Ins Добавить, переключить режим вставки/замены
Ctrl + Ins Копировать в буфер обмена
Shift + Ins Вставить из буфера обмена
Del Удалить
Ctrl + Del Удалить слово справа от курсора
Shift + Del Вырезать в буфер обмена, удалить строку
Home Перейти в начало строки, перейти в начало палитры
Ctrl + Home Перейти в начало текста
Shift + Home Выделить до начала строки
Ctrl + Shift + Home Выделить до начала текста
End Перейти в конец строки
Ctrl + End Перейти в конец текста
Shift + End Выделить до конца строки
Ctrl + Shift + End Выделить до конца текста
Alt Вызвать главное меню
Alt + Hyphen ( — ) Вызвать системное меню окна (кроме модальных диалогов)
Ctrl + [ Перейти по операторным скобкам назад
Ctrl + Shift + [ Перейти по операторным скобкам назад с выделением текста
Ctrl + ] Перейти по операторным скобкам вперед
Ctrl + Shift + ] Перейти по операторным скобкам вперед с выделением текста
Ctrl + Break Вызвать главное меню
Alt Вызвать главное меню
Читайте также:  Дерево грецкий орех энергия

Источник

Оцените статью