Как на сервере получить строку Дерева, выбранную на клиенте ?
Имеем:
РеквизитФормыДеревоЗначений - тип Дерево значений
ЭлементФормыДерево - путь к данным = РеквизитФормыДерево
При изменении на форме Реквизита ЭлементФормыДеревоНоменклатура
нужно воткнуть в РеквизитФормыДерево ветку из Спецификации (по умолчанию Спецификация=Номенклатура.Спецификация)
Вопрос - подскажите, пожалуйста, как на сервере получить строку, выбранную на клиенте ???...
РеквизитФормыДеревоЗначений - тип Дерево значений
ЭлементФормыДерево - путь к данным = РеквизитФормыДерево
При изменении на форме Реквизита ЭлементФормыДеревоНоменклатура
нужно воткнуть в РеквизитФормыДерево ветку из Спецификации (по умолчанию Спецификация=Номенклатура.Спецификация)
&НаКлиенте
ТекущиеДанные=Элементы.ЭлементФормыДерево.ТекущиеДанные; //это ДанныеФормыЭлементКоллекции
&НаСервере
ДеревоФормы = РеквизитФормыВЗначение("РеквизитФормыДеревоЗначений");
//это Универсальные коллекции значений/Дерево значений
//...
//Изменения
ЗначениеВРеквизитФормы(ДеревоФормы, "РеквизитФормыДеревоЗначений");
ПоказатьВопрос - подскажите, пожалуйста, как на сервере получить строку, выбранную на клиенте ???...
По теме из базы знаний
- Мобильный клиент + HTTP Сервис + Расширение конфигурации
- Поиск по дереву значений рекурсией, методом НайтиСтроки(), с помощью СКД. Вывод результата поиска в отдельную таблицу. Активация строки в дереве значений при выборе в таблице
- Программное копирование узла/строки дерева значений на управляемой форме (УФ, ДанныеФормыДерево, ДанныеФормыЭлементДерева) в вариантах на клиенте и на сервере
- Обзор полезных методов БСП 3.1.4
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) kudlach, Никак. Только поиском по ключевым атрибутам выбранной строки (если с учетом уровней - то и всех ее родителей). Ведь это преобразование в другую структуру данных, на которую не будут работать предыдущие ссылки. Да и преобразование дерева туда-сюда ради вставки ветки не кажется мне хорошим решением. Лучше вставлять непосредственно в "ДанныеФормыДерево".
А точно надо искать строку в дереве?
Может достаточно такого:
Может достаточно такого:
&НаКлиенте
Процедура Реквизит1Реквизит1ПриИзменении(Элемент)
ТекущиеДанные = Элементы.ДеревоФормы.ТекущиеДанные;
ПолучитьСтрокуДереваЗначений(ТекущиеДанные.ПолучитьИдентификатор());
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокуДереваЗначений(ИндексТекущейСтроки)
СтрокаДереваФормы = ДеревоФормы.НайтиПоИдентификатору(ИндексТекущейСтроки);
КонецПроцедуры
Показать
(3) disa_ostr,
Не могут. Идентификатор будет уникальным всегда. Так, например, создайте дерево формы, добавьте строку, ее идентификатор будет "1". Удалите ее и добавьте новую строку дерева формы. У новой строки идентификатор будет "2". Внимание, речь идет о Дереве формы, не путать со значением Дерево значений.
Ну как то так, набросайте обработку, поиграйтесь...
Не могут. Идентификатор будет уникальным всегда. Так, например, создайте дерево формы, добавьте строку, ее идентификатор будет "1". Удалите ее и добавьте новую строку дерева формы. У новой строки идентификатор будет "2". Внимание, речь идет о Дереве формы, не путать со значением Дерево значений.
Ну как то так, набросайте обработку, поиграйтесь...
Предварительно на клиенте делаешь структуру из текущих данных и передаешь её на сервер, а там уже:
Деревце = ДанныеФормыВЗначение(ДопыДерево,Тип("ДеревоЗначений"));
НайденныеСтрокиДерева = Деревце.Строки.НайтиСтроки(ТекДанные,Истина);
Для Каждого СтрДерева из НайденныеСтрокиДерева Цикл
СтрДерева.Покупаем = Истина;
Если ТекДанные.Номенклатура.Услуга = Ложь Тогда
СтрДерева[ИмяКолонкиСклада]=СтрДерева[ИмяКолонкиСклада]-1;
КонецЕсли;
КонецЦикла;
ЗначениеВДанныеФормы(Деревце,ДопыДерево);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот