Необходимо перебрать документы из динамического списка.
Кругом описывают примеры через построитель отчета:
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
Выборка = Построитель.Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
КонецЦикла;
Но в справке указано что
источником данных может выступать только: ТаблицаЗначений; РезультатЗапроса; ОбластьЯчеекТабличногоДокумента; Табличная часть; РегистрНакопленияНаборЗаписей.<Имя регистра накопления>; РегистрСведенийНаборЗаписей.<Имя регистра сведений>; РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>; РегистрРасчетаНаборЗаписей.<Имя регистра расчета>.
Ну и вообщем то выдается ошибка при выполнение этой операции.
(1) tempa85, вообще больше.. в том числе и ДокументСписок.<...>
Вы динамический список из версии 8.2 имеете ввиду, ДинамическийСписок? В котором запрос можно писать?
Или же старый, который в 8.1 был, тип ДокументСписок.<...>
ОписаниеИсточникаДанных.По умолчанию (DataSourceDescription.Default)
ОписаниеИсточникаДанных (DataSourceDescription)
На основании источника данных
Синтаксис:
Новый ОписаниеИсточникаДанных(<Источник данных>)
Параметры:
<Источник данных> (обязательный)
Тип: ТаблицаЗначений; РезультатЗапроса; ОбластьЯчеекТабличногоДокумента; Табличная часть; РегистрНакопленияНаборЗаписей.<Имя регистра накопления>; РегистрСведенийНаборЗаписей.<Имя регистра сведений>; РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>; РегистрРасчетаНаборЗаписей.<Имя регистра расчета>; СправочникСписок.<Имя справочника>; ДокументСписок.<Имя документа>; ЖурналДокументовСписок.<Имя журнала документов>; ПланСчетовСписок.<Имя плана счетов>; ПланВидовХарактеристикСписок.<Имя плана видов характеристик>; ПланВидовРасчетаСписок.<Имя плана видов расчета>; БизнесПроцессСписок.<Имя бизнес-процесса>; ЗадачаСписок.<Имя задачи>; РегистрСведенийСписок.<Имя регистра сведений>; РегистрНакопленияСписок.<Имя регистра накопления>; РегистрБухгалтерииСписок.<Имя регистра бухгалтерии>; РегистрРасчетаСписок.<Имя регистра расчета>; ПланОбменаСписок.<Имя плана обмена>. Описываемый источник данных.
Описание:
Создает описание источника данных на основании другого источника данных.
(4) crabzzy, ДокументСписок- это динамический список описанный на управляемой форме 8.2
(3) doom2good, запрос можно составить для динамического списка, но тогда получается что бы получить данные придется обрабатывать запрос дважды (первый раз пользователю для фильтрации и второй когда необходимо будет перебрать документы). Пропадает смысл в описании динамических данных на форме документа.
Перебрать все строки динамического списка вроде как нельзя. Сколько искал - нигде не нашел.
Вариант 1. Повторить запрос и выгрузить его в ТЗ.
Вариант 2. Использовать объект "WSCript.Shell" для выделения всех строк динамического списка и уже Выделенные строки обходить циклом.
Нашел рабочее решение для перебора выделенных строк динамического списка. Оставлю тут. Появляется необходимость пару раз в лет и поэтому забываю :)
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
МассивСтрок = Новый Массив();
Для каждого ИдентификаторСтроки_ Из ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Элементы.Список.ДанныеСтроки(ИдентификаторСтроки_ ));
КонецЦикла;
СписокВыборНаСервере(МассивСтрок);
КонецПроцедуры
&НаСервере
Процедура СписокВыборНаСервере(ВыбранныеСтроки)
Для каждого Строка Из ВыбранныеСтроки Цикл
//...
КонецЦикла;
КонецПроцедуры
(12) обнаружил что при пересортировке если не перечитать данные формы поле НомерСтроки отсортирован по старому и номера перепутаны. Поэтому если важна сортировка лучше пользоваться более медленной выборкой через СКД:
&НаСервере
Функция СписокВТЗнаСервере()
// реквизит1 - динамический список на форме
Схема = Элементы.Реквизит1.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Реквизит1.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
массивСсылок=ТаблицаРезультат.ВыгрузитьКолонку("Ссылка"); // выгружаем ссылки в массив для передачи клиенту
возврат массивСсылок;
КонецФункции