Перебор данных динамического списка

1. tempa85 16.07.13 10:01 Сейчас в теме
Необходимо перебрать документы из динамического списка.
Кругом описывают примеры через построитель отчета:

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
Выборка = Построитель.Результат.Выбрать();

Пока Выборка.Следующий() Цикл
   Сообщить(Выборка.Ссылка);
КонецЦикла;


Но в справке указано что
источником данных может выступать только: ТаблицаЗначений; РезультатЗапроса; ОбластьЯчеекТабличногоДокумента; Табличная часть; РегистрНакопленияНаборЗаписей.<Имя регистра накопления>; РегистрСведенийНаборЗаписей.<Имя регистра сведений>; РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>; РегистрРасчетаНаборЗаписей.<Имя регистра расчета>.


Ну и вообщем то выдается ошибка при выполнение этой операции.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. amaksimov 17.07.13 08:45 Сейчас в теме
(1) tempa85, вообще больше.. в том числе и ДокументСписок.<...>

Вы динамический список из версии 8.2 имеете ввиду, ДинамическийСписок? В котором запрос можно писать?
Или же старый, который в 8.1 был, тип ДокументСписок.<...>

ОписаниеИсточникаДанных.По умолчанию (DataSourceDescription.Default)
ОписаниеИсточникаДанных (DataSourceDescription)
На основании источника данных
Синтаксис:
Новый ОписаниеИсточникаДанных(<Источник данных>)
Параметры:
<Источник данных> (обязательный)
Тип: ТаблицаЗначений; РезультатЗапроса; ОбластьЯчеекТабличногоДокумента; Табличная часть; РегистрНакопленияНаборЗаписей.<Имя регистра накопления>; РегистрСведенийНаборЗаписей.<Имя регистра сведений>; РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>; РегистрРасчетаНаборЗаписей.<Имя регистра расчета>; СправочникСписок.<Имя справочника>; ДокументСписок.<Имя документа>; ЖурналДокументовСписок.<Имя журнала документов>; ПланСчетовСписок.<Имя плана счетов>; ПланВидовХарактеристикСписок.<Имя плана видов характеристик>; ПланВидовРасчетаСписок.<Имя плана видов расчета>; БизнесПроцессСписок.<Имя бизнес-процесса>; ЗадачаСписок.<Имя задачи>; РегистрСведенийСписок.<Имя регистра сведений>; РегистрНакопленияСписок.<Имя регистра накопления>; РегистрБухгалтерииСписок.<Имя регистра бухгалтерии>; РегистрРасчетаСписок.<Имя регистра расчета>; ПланОбменаСписок.<Имя плана обмена>. Описываемый источник данных.
Описание:
Создает описание источника данных на основании другого источника данных.
5. tempa85 17.07.13 09:30 Сейчас в теме
(4) crabzzy, ДокументСписок- это динамический список описанный на управляемой форме 8.2
(3) doom2good, запрос можно составить для динамического списка, но тогда получается что бы получить данные придется обрабатывать запрос дважды (первый раз пользователю для фильтрации и второй когда необходимо будет перебрать документы). Пропадает смысл в описании динамических данных на форме документа.
6. amaksimov 17.07.13 09:44 Сейчас в теме
(5) tempa85, ДокументСписок - это нечто старое, от 8.1 или 8.0 и работает и на 8.2
ДинамическийСписок это другой объект

И тот и другой называют дин.списками.
ДокументСписок - источник данных для табличного поля в обычных формах.
7. tempa85 17.07.13 09:46 Сейчас в теме
(6) crabzzy, ДокументСписок - это реквизит на управляемой форме с типом динамический список
2. tempa85 17.07.13 08:29 Сейчас в теме
неужто нет идей по реализации данного метода???
3. doom2good 139 17.07.13 08:42 Сейчас в теме
Может прокатит:
написать запрос (или получить из дин списка)
выполнить его
обходить результат, применяя установленные отборы дин списка
8. Sevens 6 17.07.13 14:15 Сейчас в теме
Перебрать все строки динамического списка вроде как нельзя. Сколько искал - нигде не нашел.
Вариант 1. Повторить запрос и выгрузить его в ТЗ.
Вариант 2. Использовать объект "WSCript.Shell" для выделения всех строк динамического списка и уже Выделенные строки обходить циклом.
hame1e00n; evseevoleg; doom2good; +3 Ответить
9. _Sedoy 16.12.14 15:25 Сейчас в теме
Да вообще-то, если очень хочется, то очень даже можно перебрать все строки Динамического списка.. Вопрос на сколько это грамотно! Решение тут
10. webdimon 11.02.16 16:15 Сейчас в теме
Вот статья о том как выбрать все строки динамического списка
http://v8.1c.ru/o7/201404list/index.htm
Puhov2112; kazimesh; Xershi; +3 Ответить
11. Xershi 1490 06.09.16 14:14 Сейчас в теме
(10) webdimon, спасибо!
Жаль у нас режим совместимости 8.3.5. Этот метод не доступен еще.

А хотя поторопился, этот метод доступен и в режиме совместимости, только он доступен лишь на сервере! Буду разбираться!
12. KazanKokos 10 07.11.19 19:02 Сейчас в теме
Нашел рабочее решение для перебора выделенных строк динамического списка. Оставлю тут. Появляется необходимость пару раз в лет и поэтому забываю :)

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    
        ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
        МассивСтрок = Новый Массив();
        Для каждого ИдентификаторСтроки_ Из ВыделенныеСтроки Цикл
            МассивСтрок.Добавить(Элементы.Список.ДанныеСтроки(ИдентификаторСтроки_ ));
        КонецЦикла;
        СписокВыборНаСервере(МассивСтрок);
    
КонецПроцедуры
 
&НаСервере
Процедура СписокВыборНаСервере(ВыбранныеСтроки)
       
     Для каждого Строка Из ВыбранныеСтроки Цикл
     //...
     КонецЦикла;     
 
КонецПроцедуры
Показать
belyakooov; dante; PavelSS; independ; +4 Ответить
13. KazanKokos 10 11.12.19 18:01 Сейчас в теме
(12) обнаружил что при пересортировке если не перечитать данные формы поле НомерСтроки отсортирован по старому и номера перепутаны. Поэтому если важна сортировка лучше пользоваться более медленной выборкой через СКД:
&НаСервере
Функция СписокВТЗнаСервере()
// реквизит1 - динамический список на форме
    Схема = Элементы.Реквизит1.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    Настройки = Элементы.Реквизит1.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	

массивСсылок=ТаблицаРезультат.ВыгрузитьКолонку("Ссылка");  // выгружаем ссылки в массив для передачи клиенту
возврат массивСсылок;
КонецФункции
Показать
user1050439; bprogs; AndroidRu; Aspire1C; Stivens; maksa2005; armeec; dante; smit1c; user1503726; Летяга; wolder; gelmoriel; +13 Ответить
14. wolder 131 23.03.20 10:49 Сейчас в теме
(13)
&НаСервере
Функция СписокВТЗнаСервере()
// реквизит1 - динамический список на форме
Схема = Элементы.Реквизит1.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Реквизит1.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);


массивСсылок=ТаблицаРезультат.ВыгрузитьКолонку("Ссылка"); // выгружаем ссылки в массив для передачи клиенту
возврат массивСсылок;
КонецФункции
Показать

Вот это реальная вещь!
uk09; AndroidRu; +2 Ответить
16. Летяга 10.12.20 01:49 Сейчас в теме
(13) Спасибо !!!!! Вот это выручил !!!!
17. user1050439 7 03.10.23 18:52 Сейчас в теме
15. пользователь 14.10.20 10:39
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот