|
УФ, ДеревоЗначений как на сервере узнать, текущую выбранную на клиенте строку | ☑ | ||
---|---|---|---|---|
0
kudlach
08.09.16
✎
16:07
|
Имеем:
РеквизитФормыДеревоЗначений - тип Дерево значений ЭлементФормыДерево - путь к данным = РеквизитФормыДерево При изменении на форме Реквизита ЭлементФормыДеревоНоменклатура нужно воткнуть в РеквизитФормыДерево ветку из Спецификации (по умолчанию Спецификация=Номенклатура.Спецификация) &НаКлиенте ТекущиеДанные=Элементы.ЭлементФормыДерево.ТекущиеДанные; //это ДанныеФормыЭлементКоллекции &НаСервере ДеревоФормы = РеквизитФормыВЗначение("РеквизитФормыДеревоЗначений"); //это Универсальные коллекции значений/Дерево значений //... //Изменения ЗначениеВРеквизитФормы(ДеревоФормы, "РеквизитФормыДеревоЗначений"); Вопрос - подскажите, пожалуйста, как на сервере получить строку, выбранную на клиенте ???... |
|||
1
Лефмихалыч
08.09.16
✎
16:09
|
>как на сервере получить строку, выбранную на клиенте
надо передать эту информацию с клинета в серверную процедуру в параметре |
|||
2
aleks_default
08.09.16
✎
16:10
|
по идентификатору
|
|||
3
kudlach
08.09.16
✎
16:16
|
(1), (2) Если я на клиенте беру
ИндексСтроки=ТекущиеДанные.ПолучитьИдентификатор(); то получаю идентификатор в наборе строк текущего уровня и в нем не указано в каком узле все это творится. т.е., на сервере по идентификатору я пытаюсь по верхнему уровню набора строк этот идентификатор искать - не проходит. у меня так: УзелУровня1_1 |-УзелУровня2_1 |-УзелУровня2_2 |-УзелУровня2_3 Если меняю УзелУровня2_2 - на клиенте Идентификатор=1, На сервере индекс не входит, т.к. там по дереву на верхнем уровне имеется только идентификатор [0] |
|||
4
yuriybylinkin
08.09.16
✎
16:16
|
Не преобразуйте в значение, работайте с данными формы.
|
|||
5
kudlach
08.09.16
✎
16:16
|
(1), (2) Или что ли список значений по всем узлам замутить...
|
|||
6
vicof
08.09.16
✎
16:20
|
(3) А просто погуглить желания не было. 100500 веток и мануалов с такими проблемами
|
|||
7
kudlach
08.09.16
✎
16:32
|
(4) Т.е. делать все на клиенте. Но это неудобно - данные формы не позволяют обращаться к табличным частям и реквизитам объектов.
|
|||
8
butterbean
08.09.16
✎
16:34
|
(7) данные формы доступны на сервере
|
|||
9
kudlach
08.09.16
✎
16:34
|
(6) я угуглился. связки между ЭлементФормыДеревоНоменклатура и Универсальные коллекции значений/Дерево значений - тупо нету.
И в описаниях от 1С прямо так и висит предупреждение об ограничениях при работе с Деревом значений. В толстом клиенте такой ботвы нет - сам делал. Но там нет и разделения на Клиент и Сервер |
|||
10
kudlach
08.09.16
✎
16:36
|
(8) на сервере не доступны "Текущие данные"
|
|||
11
vicof
08.09.16
✎
16:49
|
||||
12
vicof
08.09.16
✎
16:49
|
Берем книжку по УФ и изучаем основы
|
|||
13
kudlach
08.09.16
✎
16:55
|
(11) текст в указанной ссылке нашел в трёх источниках, буква в букву. И он не дает ответа как из формы передать на сервер дерево со строкой. При передаче - ошибка XDTO и описание у 1С о недоработанности работы с Деревьями в УФ.
|
|||
14
vicof
08.09.16
✎
17:01
|
(13) Все дело в типах.
|
|||
15
vicof
08.09.16
✎
17:02
|
И преобразованиях. Если дерево вернулось на клиент со структурой, отличающейся от структуры реквизита формы, будет ошибка.
|
|||
16
kudlach
08.09.16
✎
17:03
|
(14) Это я понял. Не понял как их подружить или как на одной стороне организовать.
|
|||
17
Новиков
08.09.16
✎
18:13
|
Если бы была таблица, то можно получить идентификатор текущей строки, по нему - саму текущую строку, по ней ее индекс, затем преобразовать таблицу из реквизита формы в значение и по индексу выйти на нужную строку в таблице. В дереве же так нельзя сделать, потому что метод Получить(<Индекс>) работает только в коллекции строк от конкретного уровня от конкретного родителя и такого однозначного индекса, чтобы сразу попасть на нужную строку, в дереве нет. Поэтому возможны два пути, как ты можешь поступить:
1. Либо полностью делаешь добавление нужных строк на клиенте, и для каждой строки делаешь вызов сервера для данных, которых нет на клиенте. 2. Либо строишь полный путь текущей строки из массива индексов дерева и по нему уже ищешь на сервере, либо просто передавай на сервер ключевые поля строки, и по ним ищи в дереве текущую строку, которая оной являлась на форме. |
|||
18
vicof
08.09.16
✎
18:28
|
(17) Есть получитьПоИдентификатору(). Зачем поиск по индексу использовать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |