Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

УФ, ДеревоЗначений как на сервере узнать, текущую выбранную на клиенте строку

УФ, ДеревоЗначений как на сервере узнать, текущую выбранную на клиенте строку
Я
   kudlach
 
08.09.16 - 16:07
Имеем:
РеквизитФормыДеревоЗначений - тип Дерево значений
ЭлементФормыДерево - путь к данным = РеквизитФормыДерево
При изменении на форме Реквизита ЭлементФормыДеревоНоменклатура
нужно воткнуть в РеквизитФормыДерево ветку из Спецификации (по умолчанию Спецификация=Номенклатура.Спецификация)

&НаКлиенте
ТекущиеДанные=Элементы.ЭлементФормыДерево.ТекущиеДанные;//это ДанныеФормыЭлементКоллекции


&НаСервере
ДеревоФормы = РеквизитФормыВЗначение("РеквизитФормыДеревоЗначений");
//это Универсальные коллекции значений/Дерево значений

//...
//Изменения

ЗначениеВРеквизитФормы(ДеревоФормы, "РеквизитФормыДеревоЗначений");

Вопрос - подскажите, пожалуйста, как на сервере получить строку, выбранную на клиенте ???...
 
 
   Лефмихалыч
 
1 - 08.09.16 - 16:09
>как на сервере получить строку, выбранную на клиенте

надо передать эту информацию с клинета в серверную процедуру в параметре
   aleks_default
 
2 - 08.09.16 - 16:10
по идентификатору
   kudlach
 
3 - 08.09.16 - 16:16
(1), (2) Если я на клиенте беру 
ИндексСтроки=ТекущиеДанные.ПолучитьИдентификатор();
то получаю идентификатор в наборе строк текущего уровня и в нем не указано в каком узле все это творится.  т.е., на сервере по идентификатору я пытаюсь по верхнему уровню набора строк этот идентификатор искать - не проходит.
у меня так:
УзелУровня1_1
|-УзелУровня2_1
|-УзелУровня2_2
|-УзелУровня2_3

Если меняю УзелУровня2_2 - на клиенте Идентификатор=1,
На сервере индекс не входит, т.к. там по дереву на верхнем уровне имеется только идентификатор [0]
   yuriybylinkin
 
4 - 08.09.16 - 16:16
Не преобразуйте в значение, работайте с данными формы.
   kudlach
 
5 - 08.09.16 - 16:16
(1), (2) Или что ли список значений по всем узлам замутить...
   vicof
 
6 - 08.09.16 - 16:20
(3) А просто погуглить желания не было. 100500 веток и мануалов с такими проблемами
   kudlach
 
7 - 08.09.16 - 16:32
(4) Т.е. делать все на клиенте. Но это неудобно - данные формы не позволяют обращаться к табличным частям и реквизитам объектов.
   butterbean
 
8 - 08.09.16 - 16:34
(7) данные формы доступны на сервере
   kudlach
 
9 - 08.09.16 - 16:34
(6) я угуглился. связки между ЭлементФормыДеревоНоменклатура и Универсальные коллекции значений/Дерево значений - тупо нету.
И в описаниях от 1С прямо так и висит предупреждение об ограничениях при работе с Деревом значений.

В толстом клиенте такой ботвы нет - сам делал. Но там нет и разделения на Клиент и Сервер
   kudlach
 
10 - 08.09.16 - 16:36
(8) на сервере не доступны "Текущие данные"
 
 Рекламное место пустует
   vicof
 
11 - 08.09.16 - 16:49
   vicof
 
12 - 08.09.16 - 16:49
Берем книжку по УФ и изучаем основы
   kudlach
 
13 - 08.09.16 - 16:55
(11) текст в указанной ссылке нашел в трёх источниках, буква в букву. И он не дает ответа как из формы передать на сервер дерево со строкой. При передаче - ошибка XDTO и описание у 1С о недоработанности работы с Деревьями в УФ.
   vicof
 
14 - 08.09.16 - 17:01
(13) Все дело в типах.
   vicof
 
15 - 08.09.16 - 17:02
И преобразованиях. Если дерево вернулось на клиент со структурой, отличающейся от структуры реквизита формы, будет ошибка.
   kudlach
 
16 - 08.09.16 - 17:03
(14) Это я понял. Не понял как их подружить или как на одной стороне организовать.
   Новиков
 
17 - 08.09.16 - 18:13
Если бы была таблица, то можно получить идентификатор текущей строки, по нему - саму текущую строку, по ней ее индекс, затем преобразовать таблицу из реквизита формы в значение и по индексу выйти на нужную строку в таблице. В дереве же так нельзя сделать, потому что метод Получить(<Индекс>)  работает только в коллекции строк от конкретного уровня от конкретного родителя и такого однозначного индекса, чтобы сразу попасть на нужную строку, в дереве нет. Поэтому возможны два пути, как ты можешь поступить:
1. Либо полностью делаешь добавление нужных строк на клиенте, и для каждой строки делаешь вызов сервера для данных, которых нет на клиенте.
2. Либо строишь полный путь текущей строки из массива индексов дерева и по нему уже ищешь на сервере, либо просто передавай на сервер ключевые поля строки, и по ним ищи в дереве текущую строку, которая оной являлась на форме.
   vicof
 
18 - 08.09.16 - 18:28
(17) Есть получитьПоИдентификатору(). Зачем поиск по индексу использовать?

Список тем форума
Рекламное место пустует  Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует