1с позиционирование дереву значения

Дерево значений в УФ и текущая строка

На форме есть дерево значений, у которого есть колонка «Документ». Есть реквизит формы, в который я периодически пихаю ссылку на документ. Как мне спозиционировать курсор на нужной мне строке, если я знаю значение колонки «документ», соответственно строку могу вычислить, но как?
Нужно получить идентификатор строки, как мне его получить зная значение одной из колонок?

Я чего то моз сломал.
Элементы.Дерево.ТекущаяСтрока=Ссылка
Элементы.Список.ТекущаяСтрока=Ссылка

Что сделать то нужно? Сформулируй как нибудь по другому.

Элементы.СписокЗаявокНаПродажу.ТекущаяСтрока = «Вот сюда нужно вставить ИдентификаторСтроки»

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

Есть СписокЗаявокНаПродажуРеквизит с типом ДанныеФормыДерево, как в нем найти нужную мне строку, каким методом?

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

Если таблица формы — это произвольное именно дерево значений, а не иерархический список дин. списка с основной таблицей, то на

клиенте — получить идентифиактор строки можно только перебором
сервере — получить идентифиактор строки можно перебором или конвертаций данных формы дерева в значение дерева значений и поиска элемента методами Дз и последующим определением айди строки

(5) «клиенте — получить идентифиактор строки можно только перебором «, что нужно перебирать на клиенте, реквизит формы? Как? Он то заполнен, но там тип ДанныеФормыДерево

двоешники, где вы видели в сущностях

Читайте также:  Плесень на ветках деревьев

ДанныеФормыДерево — весь образ дерева на УФ
или
ДанныеФормыКоллекцияЭлементовДерева — узел(ветка) дерева на УФ

(12) получаю одну строку дерева, корень..
то есть СписокЗаявокНаПродажуРеквизит.ПолучитьЭлементы() получает только корневую строку с типом ДанныеФормыКоллекцияЭлементовДерева

(15) нет мань, ты точно ляпнул. в vmv все правильно сказал, уже разобрался, теперь надо плядское дерево перебирать в рекурсии(((

(18) истерики, упрямство, отсутствие логики, обидчивость — явно не мужкие черты.

Это элементарная дедукция)

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

тырено с БСП специально для девочек

// Получает идентификатор (метод ПолучитьИдентификатор()) строки дерева значений для заданного значения поля строки дерева.
// Используется для позиционирования курсора в иерархических списках.
//
Процедура ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля(ИмяПоля, ИдентификаторСтроки, КоллекцияЭлементовДерева, КлючСтроки, ПрекратитьПоиск) Экспорт

Для Каждого СтрокаДерева ИЗ КоллекцияЭлементовДерева Цикл

Если ПрекратитьПоиск Тогда
Возврат;
КонецЕсли;

Если СтрокаДерева[ИмяПоля] = КлючСтроки Тогда

Если КоллекцияЭлементов.Количество() > 0 Тогда

ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля(ИмяПоля, ИдентификаторСтроки, КоллекцияЭлементов, КлючСтроки, ПрекратитьПоиск);

(20) еще раз спрашиваю метод НайтиСтроки() это метод какого объекта? С радостью его использую, если объяснишь как.

(23) дерева. с синтаксис помощником не дружишь?

(24) Где ж мне дерево взять? Есть Реквизит формы с типом ДанныеФормыДерево, как мне из него дерево вытянуть?

Источник

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

стр1_1 = ДЗ.Строки.Добавить();
стр1_1.колонка1 = «кол1_1»;
стр1_1.колонка2 = «кол2_1»;
стр1_2 = ДЗ.Строки.Добавить();
стр1_2.колонка1 = «кол1_2»;
стр1_2.колонка2 = «кол2_2»;
стр1_3 = ДЗ.Строки.Добавить();
стр1_3.колонка1 = «кол1_3»;
стр1_3.колонка2 = «кол2_3»;
стр1_1_1 = стр1_1.Строки.Добавить();
стр1_1_1.колонка1 = «кол1_1_1»;
стр1_1_1.колонка2 = «кол2_1_1»;
ЭлементыФормы.ДЗ.ТекущаяСтрока = стр1_1_1;
такой код у меня работает нормально. значит не строку дерева передаете. показывайте свою нетленную функцию

Читайте также:  На сколько тонких деревьев меньше чем толстых

(9)
Функция ПолучитьВеткуПоПозицииСтроки(Дерево, НомерСтроки)
Для Каждого Ветка Из Дерево.Строки Цикл
Если Ветка.НомерСтрокиДЗ = НомерСтроки Тогда
Возврат Ветка;
Иначе
НайденнаяСтрока = ПолучитьВеткуПоПозицииСтроки(Ветка, НомерСтроки);
Если НайденнаяСтрока <> Неопределено Тогда
Возврат НайденнаяСтрока;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции

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

Строки = Дерево.Строки.НайтиСтроки(Новый Структура(«Колонка1»,1), Истина);
Если Строки.Количество() > 0 Тогда
ЭлементыФормы.Дерево.ТекущаяСтрока = Строки[0];
Сообщить(«Позиционирование на строке», СтатусСообщения.Информация);
КонецЕсли;

т = Дерево.Строки.Добавить();
т.Строки.Добавить();
т.Строки.Добавить();
т.Строки.Добавить();
т = Дерево.Строки.Добавить();
т.Строки.Добавить();
т1 = т.Строки.Добавить(); т1.Колонка1 = 1;
т.Строки.Добавить();
т = Дерево.Строки.Добавить();
т.Строки.Добавить();
т.Строки.Добавить();
т.Строки.Добавить();

(11)
допустим при редактировании ДЗ.ТекущаяСтрока имеет значение СтрокаДереваЗначений, тип — СтрокаДереваЗначений, что совпадает с возвращаемым функцией значением.

скорее всего то что хранится в ТекДЗ не совпадает с данными в ТекТП..
так не работает:
стр1_1 = ДЗ.Строки.Добавить();
стр1_1.колонка1 = «кол1_1»;
стр1_1.колонка2 = «кол2_1»;
стр1_2 = ДЗ.Строки.Добавить();
стр1_2.колонка1 = «кол1_2»;
стр1_2.колонка2 = «кол2_2»;
стр1_3 = ДЗ.Строки.Добавить();
стр1_3.колонка1 = «кол1_3»;
стр1_3.колонка2 = «кол2_3»;
стр1_1_1 = стр1_1.Строки.Добавить();
стр1_1_1.колонка1 = «кол1_1_1»;
стр1_1_1.колонка2 = «кол2_1_1»;

стр1_1 = ДЗ1.Строки.Добавить();
стр1_1.колонка1 = «кол1_1»;
стр1_1.колонка2 = «кол2_1»;
стр1_2 = ДЗ1.Строки.Добавить();
стр1_2.колонка1 = «кол1_2»;
стр1_2.колонка2 = «кол2_2»;
стр1_3 = ДЗ1.Строки.Добавить();
стр1_3.колонка1 = «кол1_3»;
стр1_3.колонка2 = «кол2_3»;
стр1_1_1 = стр1_1.Строки.Добавить();
стр1_1_1.колонка1 = «кол1_1_1»;
стр1_1_1.колонка2 = «кол2_1_1»;
ЭлементыФормы.ДЗ.ТекущаяСтрока = стр1_3;

(12)
проще конечно, но результат не меняется.
(15), (16)
в отладчике забиваю:
текТП.Значение = текДЗ, выдает Истина.

Источник

На Клиенте управляемой формы 1С:Предприятие 8.3

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

Читайте также:  Собака ест ветки дерева

Эта публикация посвящена особенностям работы управляемой формы в состоянии НаКлиенте.

На Клиенте

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

Для Контекста управляемой формы, в который входят только Объект, реквизиты и свойства Элементов управляемой формы, платформа 1С обеспечивает как бы идентичность НаКлиенте и НаСервере, которая достигается двусторонним копированием всего Контекста через механизм XDTO НаСервер и обратно при каждом серверном обращении.

При создании управляемая форма НаКлиенте не обладает никакими данными кроме тех, которые содержит ее Объект и реквизиты. Все остальные данные она получает дополнительными вызовами к серверу.

Любое значение прикладного типа НаКлиенте содержит только свою Ссылку и Представление, а разыменование любого реквизита совершенно невозможно без специального обращения к серверу.

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

Менеджеры прикладных объектов НаКлиенте недоступны, поэтому значения перечислений, справочников и документов доступны НаКлиенте только через функцию ПредопределенноеЗначение(), которая выполняет отдельный серверный вызов для кажого значения:

Источник

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