- Программно развернуть дерево значений в табличном поле на обычных формах
- Как развернуть (свернуть) строки дерева значений?
- Дерево значений на управляемых формах
- Дерево значений на обычных формах
- Как Свернуть, Развернуть узлы Дерева значений на форме?
- Похожие FAQ
- Еще в этой же категории
- Как программно Свернуть / Развернуть дерево значений УФ 1С 8
Программно развернуть дерево значений в табличном поле на обычных формах
А вот мнения самого дерева никогда никто не спрашивает =(
Согласно ли оно на это? Не находится ли оно под принуждением?
ОФ, УПП, внешний отчёт, на форме есть табличное поле «КодыМаркировкиОстатков», тип значения «ДеревоЗначений».
ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.КодыМаркировкиОстатков;
Попытка
ОбъектShell = Новый COMОбъект(«Wscript.Shell»);
ОбъектShell.SendKeys(«^+» + Символ(107)); // Символ(107) — «-» на нумпад
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Код отрабатывает, текущий элемент действительно становится ТабличноеПоле, но не разворачивается и не сворачивается. С клавиатуры это работает, причём именно тогда, когда курсор стоит на табличном поле.
А что
ТаблицаФормы (FormTable)
Развернуть (Expand)
Синтаксис:
Развернуть(, )
Параметры:
(обязательный)
Тип: Произвольный.
Идентификатор строки таблицы.
(необязательный)
Тип: Булево.
Определяет необходимость раскрытия подчиненных узлов. Истина — раскрывать подчиненные узлы, Ложь — не раскрывать подчиненные узлы.
Значение по умолчанию: Ложь.
Описание:
Разворачивает узел в указанной строке дерева.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
Если таблица не отображается на форме, если в таблице нет строк или передана строка, отсутствующая в таблице, то будет сгенерировано исключение.
Использование в версии:
Доступен, начиная с версии 8.2.
Описание изменено в версии 8.3.18.
Методическая информация
// Изменяет свернутость всех строк табличного поля дерева значений.
//
// Параметры:
// Дерево – ТабличноеПоле – связанное с деревом значений и включенным режимом «Дерево»;
// Свернуть – Булево, *Истина — новое значение свернутости.
//
Процедура ДеревоЗначенийСвернутьРазвернутьЛкс(Дерево, Свернуть = Ложь, Строки = Неопределено, СПодчиненными = Истина) Экспорт
Если Строки = Неопределено Тогда
Строки = Дерево.Значение.Строки;
КонецЕсли;
Для Каждого СтрокаДерева Из Строки Цикл
Если Истина
И Свернуть
И Дерево.Развернут(СтрокаДерева)
Тогда
Дерево.Свернуть(СтрокаДерева);
ИначеЕсли Истина
И Не Свернуть
И Не Дерево.Развернут(СтрокаДерева)
Тогда
Дерево.Развернуть(СтрокаДерева, СПодчиненными);
КонецЕсли;
КонецЦикла;
(7) Там правда только верхний по умолчанию обрабатывается. Но быть может автор и сам дописать немного кода сможет.
Источник
Как развернуть (свернуть) строки дерева значений?
Иерархические данные, размещаемые в табличном поле на обычных формах или в таблице формы на управляемых формах, могут иметь множество строк и уровней вложенности. Порой бывает очень неудобно сворачивать и разворачивать строки дерева значений вручную. К счастью, встроенный язык располагает методами манипулирования такими объектами
По умолчанию, при помещении на форму табличного поля или таблицы формы, связанных с деревом значений, оно показывается в свернутом виде. Если нужно, чтобы при открытии формы дерево значений показывалось в раскрытом виде, проще всего воспользоваться свойством НачальноеОтображениеДерева таблицы (табличного поля). Оно может принимать одно из следующих значений:
НеРаскрывать (NoExpand) | отображать строки дерева в свернутом виде (по умолчанию) |
РаскрыватьВерхнийУровень (ExpandTopLevel) | отображать развернутыми строки дерева значений первого уровня |
РаскрыватьВсеУровни (ExpandAllLevels) | отображать развернутыми все строки дерева значений |
Внимание! Программная установка свойства НачальноеОтображениеДерева на клиенте в режиме управляемого приложения неизбежно ведет к вызову сервера
Теперь рассмотрим варианты программного сворачивания\разворачивания строк дерева значений. Реализация этих методов может отличаться для обычных и управляемых форм.
Дерево значений на управляемых формах
Пример для сворачивания всех строк дерева значений:
//получаем подчиненные элементы ДанныеФормыДерево СтрокиДерева = ДеревоДокументов.ПолучитьЭлементы(); Для каждого СтрокаДерева Из СтрокиДерева Цикл //получаем идентификатор строки в таблице формы СтрокаДереваИД = СтрокаДерева.ПолучитьИдентификатор(); //проверяем состояние строки Если Элементы.ДеревоДокументов.Развернут(СтрокаДереваИД) = Истина Тогда //сворачиваем строку дерева Элементы.ДеревоДокументов.Свернуть(СтрокаДереваИД); КонецЕсли; КонецЦикла;
Пример для разворачивания всех строк дерева значений верхнего уровня:
//получаем подчиненные элементы ДанныеФормыДерево СтрокиДерева = ДеревоДокументов.ПолучитьЭлементы(); Для каждого СтрокаДерева Из СтрокиДерева Цикл //получаем идентификатор строки в таблице формы СтрокаДереваИД = СтрокаДерева.ПолучитьИдентификатор(); //проверяем состояние строки Если Элементы.ДеревоДокументов.Развернут(СтрокаДереваИД) = Ложь Тогда //разворачиваем строку дерева Элементы.ДеревоДокументов.Развернуть(СтрокаДереваИД); КонецЕсли; КонецЦикла;
Если нужно сворачивать и разворачивать вложенные строки, потребуется доработать данный код, добавив рекурсию
Дерево значений на обычных формах
С обычными формами дела обстоят проще: обращение к серверу для обычных форм не так критично, как для управляемых, поэтому раскрыть все строки дерева можно так:
ЭлементыФормы.ДеревоДокументов.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
Но в большинстве случаев лучше использовать следующий код, который гарантированно работает
//свернуть строки верхнего уровня Для каждого ПодчиненнаяСтрока Из ДеревоДокументов.Строки Цикл Если ЭлементыФормы.ДеревоДокументов.Развернут(ПодчиненнаяСтрока) Тогда ЭлементыФормы.ДеревоДокументов.Свернуть(ПодчиненнаяСтрока); КонецЕсли; КонецЦикла; //развернуть строки верхнего уровня Для каждого ПодчиненнаяСтрока Из ДеревоДокументов.Строки Цикл Если ЭлементыФормы.ДеревоДокументов.Развернут(ПодчиненнаяСтрока) = Ложь Тогда ЭлементыФормы.ДеревоДокументов.Развернуть(ПодчиненнаяСтрока); КонецЕсли; КонецЦикла;
Источник
Как Свернуть, Развернуть узлы Дерева значений на форме?
— НЕ РАБОТАЮТ.
Для СправочникСписок (ДокументСписок) итератора нет. Это не коллекция значений, перебрать не сможете. Дерево здесь ни при чем.
Можно работать со строками либо через ПриПолученииДанных (предпочтительнее по скорости), либо ПриВыводеСтроки.
Похожие 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 Тогда СвернутьРазвернутьДерево(Строки, Развернуть, Уровень); Если Развернуть = Истина Тогда Элементы.Дерево.Развернуть(ТекСтр.ПолучитьИдентификатор()); Иначе Элементы.Дерево.Свернуть(ТекСтр.ПолучитьИдентификатор()); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры
Функция СвернутьРазвернутьДерево(), позволяет свернуть или развернуть все дерево до определенного уровня или полностью
Источник