Получить данные из выделенных строк динамического списка
Добрый день!
Затупил над простым вопросом. На УФ есть динамический список с основной таблицей в виде РС подчиненного регистратору. Надо получить значения из определенных колонок выделенных пользователем строк. В ТЧ это решается через получение ИД строк и метода:
У динамического списка такового нет... Как быть?
Затупил над простым вопросом. На УФ есть динамический список с основной таблицей в виде РС подчиненного регистратору. Надо получить значения из определенных колонок выделенных пользователем строк. В ТЧ это решается через получение ИД строк и метода:
НайтиПоИдентификатору()
У динамического списка такового нет... Как быть?
По теме из базы знаний
- Выделение документов в динамическом списке
- Полезности при работе с динамическими списками
- AllegroClient - Android - конструктор складских операций для терминалов сбора данных и смартфонов (нативное приложение на Java)
- Использование флажков в динамических списках 2.0
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
Найденные решения
(1) Элементы.Список.ДанныеСтроки(ИдентификаторСтроки)
FReIM; VyacheslavShilov; kitun; motorkuzbassa.it; criptid; user1978484; SagittariusA; poyson; user770928; native-api; Merkalov; user1667515; odinsmot; Демьян; Sardukar; lisov; dindzilin; философ; cheiser1982; atdonya; freeraider; user930801; Tigreno; Eeeehhhh; simich; Acort; HIVvich; almierm; ResAndDev; smit1c; dmpas; Serg2000mr; megatrend; zqzq; fixin; salt7; An-Aleksey; i.c.h; MariusUrsus; Serega-artem; Sashares;
+41
–
Ответить
(9)
ВыдСтроки = Элементы.ДС.ВыделенныеСтроки;
Для Каждого ТекВыд Из ВыдСтроки Цикл
Элементы.ДС.ТекущаяСтрока = ТекВыд;
НужныеМнеДанные = Элементы.ДС.ТекущиеДанные;
КонецЦикла;
(19)Понятно.
Сначала надо в отдельный массив выделенные строки добавить.
А потом уже его обходить для получения данных.
Сначала надо в отдельный массив выделенные строки добавить.
ВыдСтроки = Новый Массив;
Для Каждого текСтр Из Элементы.ПрилагаемыеДокументы.ВыделенныеСтроки Цикл
ВыдСтроки.Добавить(ТекСтр);
КонецЦикла;
А потом уже его обходить для получения данных.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(15)ТС пишет
Именно это можно сделать из текущих данных, как предложено в (10)
Пока ничего полезного по теме вы не сказали.
Вот у вас идентификатор КлючЗаписи регистра, дальше что?
Надо получить значения из определенных колонок выделенных пользователем строк.
Именно это можно сделать из текущих данных, как предложено в (10)
При работе с ДС всегда следует работать с идентификаторами строк
Пока ничего полезного по теме вы не сказали.
Вот у вас идентификатор КлючЗаписи регистра, дальше что?
(18)
ВыдСтроки = Элементы.ПрилагаемыеДокументы.ВыделенныеСтроки;
Сообщить(ВыдСтроки.Количество()); // Тут всё ок, все строки 5.
Сч = 0;
Для Каждого ТекВыд Из ВыдСтроки Цикл
Элементы.ПрилагаемыеДокументы.ТекущаяСтрока = ТекВыд;
НужныеМнеДанные = Элементы.ПрилагаемыеДокументы.ТекущиеДанные;
Сообщить(НужныеМнеДанные.ИмяФайла); // А вот это отрабатывает только 2 раза из 5
Сч = Сч+1;
КонецЦикла;
Сообщить(Сч); // И тут только две интерации
Показать
(19)Понятно.
Сначала надо в отдельный массив выделенные строки добавить.
А потом уже его обходить для получения данных.
Сначала надо в отдельный массив выделенные строки добавить.
ВыдСтроки = Новый Массив;
Для Каждого текСтр Из Элементы.ПрилагаемыеДокументы.ВыделенныеСтроки Цикл
ВыдСтроки.Добавить(ТекСтр);
КонецЦикла;
А потом уже его обходить для получения данных.
(27)
Если нужно получить значение из списка, который показывается пользователю на форме, считаю, что получать ключи регистра, потом по ключам читать записи регистра - не адекватное решение.
Если же нужно получить данные записей РС, которых нет в колонках списка, то ваш вариант, бесспорно, подходит.
Если нужно получить значение из списка, который показывается пользователю на форме, считаю, что получать ключи регистра, потом по ключам читать записи регистра - не адекватное решение.
Если же нужно получить данные записей РС, которых нет в колонках списка, то ваш вариант, бесспорно, подходит.
(28) Это работает точно так же как с динамическим списком справочника или документа. Если вам понадобится получить какой-либо реквизит документа из выделенной строки списка, вы вряд ли будете его вытаскивать из данных строки – вы возьмете ссылку документа и на сервере получите его значение в запросе. Иначе вам необходимо предусмотреть наличие этой колонки в списке, пользовательскую видимость или включенное свойство реквизита ДС "Использовать всегда".
(9)
ВыдСтроки = Элементы.ДС.ВыделенныеСтроки;
Для Каждого ТекВыд Из ВыдСтроки Цикл
Элементы.ДС.ТекущаяСтрока = ТекВыд;
НужныеМнеДанные = Элементы.ДС.ТекущиеДанные;
КонецЦикла;
(10) НужныеМнеДанные = Элементы.ДС.ТекущиеДанные; - это неверно, использование в цикле вообще бессмысленно. Там хранятся данные строки, на которой остановился выбор в списке на форме.
правильно в ответе (36)
правильно в ответе (36)
Для Каждого ТекВыд Из Элементы.ДС.ВыделенныеСтроки Цикл
НужныеМнеДанные = Элементы.ДС.ДанныеСтроки(ТекВыд);
КонецЦикла;
(1) Элементы.Список.ДанныеСтроки(ИдентификаторСтроки)
FReIM; VyacheslavShilov; kitun; motorkuzbassa.it; criptid; user1978484; SagittariusA; poyson; user770928; native-api; Merkalov; user1667515; odinsmot; Демьян; Sardukar; lisov; dindzilin; философ; cheiser1982; atdonya; freeraider; user930801; Tigreno; Eeeehhhh; simich; Acort; HIVvich; almierm; ResAndDev; smit1c; dmpas; Serg2000mr; megatrend; zqzq; fixin; salt7; An-Aleksey; i.c.h; MariusUrsus; Serega-artem; Sashares;
+41
–
Ответить
&НаКлиенте
Процедура Команда1(Команда)
ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
Сообщить(ПолучитьДанные(Текстрока));
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьДанные(ТекСтрока)
Возврат ТекСтрока.Измерение1;
КонецФункции
Показать
Кстати, если в выделенных строках не идентфикатор строки, а ссылка, то можно получить итоги по выделенным строкам так, где ЭлементСписок это обычно Элементы.Список:
Функция ИтогПоВыделеннымСтрокам(ЭлементСписок, Поле) Экспорт
Р = 0;
Для Каждого Строка ИЗ ЭлементСписок.ВыделенныеСтроки Цикл
Данные = ЭлементСписок.ДанныеСтроки(Строка);
Р = Р + Данные[Поле];
КонецЦикла;
Возврат Р;
КонецФункции
Показать
В динамическом списке выделеныестроки содержит массив ключей динамичесткого списка. А это зависит от настроек списка
Например для регистра сведений код выглядит так
И меняй себе менеджер записи сколько влезит
P.S. Код упращен для простоты восприятия. Работаем с данными на сервере, а ВыделеныеСтроки доступны только на клиенте, так что перегоняем в массив и передаем этот массив на сервер, можно без контекста
Например для регистра сведений код выглядит так
Для каждого ид из Элементы.Список.ВыделенныеСтроки цикл
мз = РегистрыСведений.КакойТоРС.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(мз,ид);
Мз.Прочитать();
КонецЦикла
И меняй себе менеджер записи сколько влезит
P.S. Код упращен для простоты восприятия. Работаем с данными на сервере, а ВыделеныеСтроки доступны только на клиенте, так что перегоняем в массив и передаем этот массив на сервер, можно без контекста
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот