1с развернуть все строки дерева программно

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

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

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

НеРаскрывать
(NoExpand)
отображать строки дерева в свернутом виде (по умолчанию)
РаскрыватьВерхнийУровень
(ExpandTopLevel)
отображать развернутыми строки дерева значений первого уровня
РаскрыватьВсеУровни
(ExpandAllLevels)
отображать развернутыми все строки дерева значений

Внимание! Программная установка свойства НачальноеОтображениеДерева на клиенте в режиме управляемого приложения неизбежно ведет к вызову сервера

Теперь рассмотрим варианты программного сворачивания\разворачивания строк дерева значений. Реализация этих методов может отличаться для обычных и управляемых форм.

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

Пример для сворачивания всех строк дерева значений:

//получаем подчиненные элементы ДанныеФормыДерево СтрокиДерева = ДеревоДокументов.ПолучитьЭлементы(); Для каждого СтрокаДерева Из СтрокиДерева Цикл //получаем идентификатор строки в таблице формы СтрокаДереваИД = СтрокаДерева.ПолучитьИдентификатор(); //проверяем состояние строки Если Элементы.ДеревоДокументов.Развернут(СтрокаДереваИД) = Истина Тогда //сворачиваем строку дерева Элементы.ДеревоДокументов.Свернуть(СтрокаДереваИД); КонецЕсли; КонецЦикла; 

Пример для разворачивания всех строк дерева значений верхнего уровня:

//получаем подчиненные элементы ДанныеФормыДерево СтрокиДерева = ДеревоДокументов.ПолучитьЭлементы(); Для каждого СтрокаДерева Из СтрокиДерева Цикл //получаем идентификатор строки в таблице формы СтрокаДереваИД = СтрокаДерева.ПолучитьИдентификатор(); //проверяем состояние строки Если Элементы.ДеревоДокументов.Развернут(СтрокаДереваИД) = Ложь Тогда //разворачиваем строку дерева Элементы.ДеревоДокументов.Развернуть(СтрокаДереваИД); КонецЕсли; КонецЦикла; 

Если нужно сворачивать и разворачивать вложенные строки, потребуется доработать данный код, добавив рекурсию

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

С обычными формами дела обстоят проще: обращение к серверу для обычных форм не так критично, как для управляемых, поэтому раскрыть все строки дерева можно так:

ЭлементыФормы.ДеревоДокументов.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; 

Но в большинстве случаев лучше использовать следующий код, который гарантированно работает

//свернуть строки верхнего уровня Для каждого ПодчиненнаяСтрока Из ДеревоДокументов.Строки Цикл Если ЭлементыФормы.ДеревоДокументов.Развернут(ПодчиненнаяСтрока) Тогда ЭлементыФормы.ДеревоДокументов.Свернуть(ПодчиненнаяСтрока); КонецЕсли; КонецЦикла; //развернуть строки верхнего уровня Для каждого ПодчиненнаяСтрока Из ДеревоДокументов.Строки Цикл Если ЭлементыФормы.ДеревоДокументов.Развернут(ПодчиненнаяСтрока) = Ложь Тогда ЭлементыФормы.ДеревоДокументов.Развернуть(ПодчиненнаяСтрока); КонецЕсли; КонецЦикла; 

Источник

Читайте также:  Как поливать дерево друга

1С 8.3 : Как Свернуть, Развернуть узлы Дерева значений на форме?

Распечатать

— НЕ РАБОТАЮТ.
Для СправочникСписок (ДокументСписок) итератора нет. Это не коллекция значений, перебрать не сможете. Дерево здесь ни при чем.
Можно работать со строками либо через ПриПолученииДанных (предпочтительнее по скорости), либо ПриВыводеСтроки.

Распечатать

Похожие FAQ

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Google maps : вывод точек на карту и режим панорамы 8
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Блокировка записей, невозможно изменить или удалить из регистра. Конфликт блокировок MS SQL + 1C 4
При попытке удалить запись из регистра сведений — получаю ошибку: она заблокирована, ошибка блокировок и т.д. Отключил всех пользователей, перезапустил сервер, пробую удалить — опять ошибка блокировки 🙁 Путем тестов было вяснено, что проблема Ввод по строке — поиск по первым символам или в любом месте наименования 6
При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Посмотреть все результаты поиска похожих

Еще в этой же категории

Дерево значений в таблицу значений или в табличную часть и обратно 9
Для одной организации надо было реализовать документы, где вместо табличной части надо использовать дерево и все это на управляемых формах. Но дерево нельзя сохранить в базе в текущем виде. Пришлось использовать табличную часть документа для хранени ДеревоЗначений в ТекстовыйДокумент 3
// Выводит данные ДереваЗначений в ТекстовыйДокумент, пригодный к рассмотрению в отладчике, окне сообщений и показу. // // Параметры: // рВетка — дерево значений, подлежащее выводу. Может иметь почти любую глубину иерархии, количество и тип ко Как удалить строку или очистить дерево значений 1
Помните, что при при удалении/очистке строки, все подчиненные строки удаляются. Очистить дерево значений: Дерево.Строки.Очистить(); НаСервере Процедура ОчиститьНаСервере() тДерево = РеквизитФормыВЗначение(«Дерево»); тДерево.Строки.О Как отобразить дерево значений на управляемой форме 0
Создадим новую внешнюю обработку. Добавляем управляемую форму и создаем обработчик ПриСозданииНаСервере(). Никаких реквизитов и элементов “вручную” не добавляем, будем делать это программно. НаСервере Процедура ПриСозданииНаСервере(Отказ, Станда Посмотреть все в категории Работа с Деревом Значений

Читайте также:  Мушмула дерево где растет

Источник

Как Свернуть, Развернуть узлы Дерева значений на форме?

Распечатать

— НЕ РАБОТАЮТ.
Для СправочникСписок (ДокументСписок) итератора нет. Это не коллекция значений, перебрать не сможете. Дерево здесь ни при чем.
Можно работать со строками либо через ПриПолученииДанных (предпочтительнее по скорости), либо ПриВыводеСтроки.

Распечатать

Похожие FAQ

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 — получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=» D:ВашаБаза1с77″ ; Пользователь= Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Посмотреть все результаты поиска похожих

Еще в этой же категории

Примеры работы с Деревом значений в УП 11
Так как работа с ДеревомЗначений и ТаблицейЗначений в данном контексте практически не отличается, в примере будет использоваться ДеревоЗначений, все тоже самое за исключением иерархии применимо и к ТаблицеЗначений. Как известно, в платформе 1С 8.1 н Дерево значений в таблицу значений или в табличную часть и обратно 9
Для одной организации надо было реализовать документы, где вместо табличной части надо использовать дерево и все это на управляемых формах. Но дерево нельзя сохранить в базе в текущем виде. Пришлось использовать табличную часть документа для хранени Преобразование дерева значений в таблицу значений и обратно 6
Хочу поделиться с посетителями сайта своим подходом к преобразованию таблицы значений в дерево значений и обратно. Вообще, при разработке отраслевой задачи, была необходимость почти во всех документах, выводить информацию в виде дерева и хранить ее Как в дереве значений строку перекинуть в другой родитель? 5
Процедура ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НовыйРодитель, Уровень = 0) Если Уровень = 0 Тогда НоваяСтрока = НовыйРодитель.Строки.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока); ПереместитьСтрокуДерева(Де ДеревоЗначений в ТекстовыйДокумент 3
// Выводит данные ДереваЗначений в ТекстовыйДокумент, пригодный к рассмотрению в отладчике, окне сообщений и показу. // // Параметры: // рВетка — дерево значений, подлежащее выводу. Может иметь почти любую глубину иерархии, количество и тип ко Посмотреть все в категории Работа с Деревом Значений

Читайте также:  Наружная отделка беседки деревом

Источник

Как программно Свернуть / Развернуть дерево значений УФ 1С 8

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

Методы имеют следующие параметры:

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

(необязательный, только для разворачивания) — Значение по умолчанию: Ложь.

Тип: Булево.
Определяет необходимость раскрытия подчиненных узлов. Истина — раскрывать подчиненные узлы, Ложь — не раскрывать подчиненные узлы.

Элементы.Дерево.Развернуть(ИдентификаторСтроки, Истина); Элементы.Дерево.Свернуть(ИдентификаторСтроки);
Элементы.Дерево.Развернуть(0, Истина);
&НаКлиенте Процедура ПриОткрытии(Отказ) СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Истина); КонецПроцедуры &НаКлиенте Процедура РазвернутьВсе(Команда) СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Истина); КонецПроцедуры &НаКлиенте Процедура Развернуть3(Команда) СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Ложь); СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Истина, 3); КонецПроцедуры &НаКлиенте Процедура Развернуть2(Команда) СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), ЛОжь); СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Истина, 2); КонецПроцедуры &НаКлиенте Процедура СвернутьДерево(Команда) СвернутьРазвернутьДерево(Дерево.ПолучитьЭлементы(), Ложь); КонецПроцедуры &НаКлиенте Процедура СвернутьРазвернутьДерево(Дерево, Развернуть, Уровень = Неопределено) Экспорт Если НЕ Уровень = Неопределено Тогда Уровень = Уровень - 1; Если Уровень= 0 Тогда Возврат; КонецЕсли; КонецЕсли; Для Каждого ТекСтр Из Дерево Цикл Строки = ТекСтр.ПолучитьЭлементы(); Если Строки.Количество() > 0 Тогда СвернутьРазвернутьДерево(Строки, Развернуть, Уровень); Если Развернуть = Истина Тогда Элементы.Дерево.Развернуть(ТекСтр.ПолучитьИдентификатор()); Иначе Элементы.Дерево.Свернуть(ТекСтр.ПолучитьИдентификатор()); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры

Функция СвернутьРазвернутьДерево(), позволяет свернуть или развернуть все дерево до определенного уровня или полностью

Источник

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