Есть форма списка документов, она заполняется документами по списку значений неким запросом с кучкой условий. По отобранному списку считается общая итоговая сумма. В списке могут быть установлены пользователем дополнительные отборы штатными средствами - стандартными кнопками "Отбор", "Отбор по значению в текущей колонке". Колонок много, отборы могут быть разными.
Вопрос: как получить итоговую сумму по всем документам, прошедшим все отборы?
По логике вещей надо как-то все отборы из списка на форме скопировать в запрос, но все варианты, которые мне удается придумать, не работают. Выкладываю простейший из них, просто чтобы было понятно, о чем речь. Запрос вызывается при обновлении списка. В попытке всегда (всегда!) вызывается исключение, т.е. так совсем нельзя :). Ошибочная строка
НовыйЭлемент = Построитель.Отбор.Добавить(Элемент.ПутьКДанным), ошибка "Неверный параметр №1"
Пробовал добавлять в выборку все поля, пробовал все поля указывать в разделе запроса "Построитель", результат одинаковый, наверное, нужно что-то принципиально другое.
Помогите идеями, плз.

```1c
    ТекстЗапроса = "ВЫБРАТЬ
    | СУММА(ЗаявкиНаРасходованиеСредствОбороты.СуммаВзаиморасчетовПриход) КАК Сумма,
    | ЗаявкиНаРасходованиеСредствОбороты.ЗаявкаНаРасходование.ВалютаДокумента КАК Валюта
    |ИЗ
    | РегистрНакопления.ЗаявкиНаРасходованиеСредств.Обороты КАК ЗаявкиНаРасходованиеСредствОбороты
    |ГДЕ
    | ЗаявкиНаРасходованиеСредствОбороты.ЗаявкаНаРасходование В(&СписокЗаявок)
    |
    |СГРУППИРОВАТЬ ПО
    | ЗаявкиНаРасходованиеСредствОбороты.ЗаявкаНаРасходование.ВалютаДокумента
    |
    |УПОРЯДОЧИТЬ ПО
    | Валюта";
    Построитель = Новый ПостроительЗапроса(ТекстЗапроса);
    Построитель.ЗаполнитьНастройки();
    Для Каждого Элемент Из ДокументСписок.Отбор Цикл
    Попытка
    НовыйЭлемент = Построитель.Отбор.Добавить(Элемент.ПутьКДанным);
    НовыйЭлемент.ВидСравнения = Элемент.ВидСравнения;
    ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент, "Значение, ЗначениеПо, ЗначениеС, Использование");
    Исключение
    Сообщить(Элемент.ПутьКДанным);
    КонецПопытки;
    КонецЦикла;
```
---
Твой код, увы, не работает.
может стоит книжечки почитать, перед обращением на профессиональный форум ?

ПостроительЗапроса=Новый ПостроительЗапроса;
 ПостроительЗапроса.Текст="ВЫБРАТЬ
 | ЗаказПокупателя.Ссылка
 |ИЗ
 | Документ.ЗаказПокупателя КАК ЗаказПокупателя
 |{ГДЕ
 | ЗаказПокупателя.Организация.*,
 | ЗаказПокупателя.Ссылка.*,
 | ЗаказПокупателя.Номер,
 | ЗаказПокупателя.Дата,
 | ЗаказПокупателя.Проведен,
 | ЗаказПокупателя.ВалютаДокумента.*,
 | ЗаказПокупателя.ВидОперации.*,
 | ЗаказПокупателя.Контрагент.*,
 | ЗаказПокупателя.ДоговорКонтрагента.*}";

 Для Каждого СтрокаОтбора из ЭлементыФормы.Список.Значение.Отбор Цикл
  ДоступноеПоле=ПостроительЗапроса.ДоступныеПоля.Найти(СтрокаОтбора.Имя);
  Если ДоступноеПоле<>Неопределено И ДоступноеПоле.Отбор=Истина Тогда
   СтрокаОтбораПостроителя=ПостроительЗапроса.Отбор.Добавить(СтрокаОтбора.Имя);
   ЗаполнитьЗначенияСвойств(СтрокаОтбораПостроителя, СтрокаОтбора);
  КонецЕсли;
 КонецЦикла;
 ПостроительЗапроса.Выполнить();
 ТЗ=ПостроительЗапроса.Результат.Выгрузить();
 ТЗ.ВыбратьСтроку("Запрос с отбором");
---
ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент, "Значение, ЗначениеПо, ЗначениеС, Использование");

все много проще, вот пример как отбор по ТЧ документа засунуть в построитель запроса:

Построительчик=Новый ПостроительЗапроса;
 Построительчик.ИсточникДанных=Новый ОписаниеИсточникаДанных(Товары); // табличная часть документа
 // копирование отбора
 Для Каждого СтрокаОтбора из ЭлементыФормы.Товары.ОтборСтрок Цикл // цикл по отбору табличной части
  СтрокаОтбораПостроителя=Построительчик.Отбор.Добавить(СтрокаОтбора.Имя);
  ЗаполнитьЗначенияСвойств(СтрокаОтбораПостроителя, СтрокаОтбора); // копирование нужных реквизитов отбора одной строкой
 КонецЦикла;
 Построительчик.Выполнить();
 ТЗ=Построительчик.Результат.Выгрузить();
 ТЗ.ВыбратьСтроку("ТЧ с отбором");
---
как насчет выгрузить колонку с сылками из Элемента формы "таблица"? Насколько я знаю там хранятся именно отображенные данные.
---
можно и выгрузить, только как? Таблицы там нет, на форме табличное поле, тип значения = ДокументСписок.

(3) shuhard,
ЭлементыФормы.Товары.ОтборСтрок - нет такого. Это не табличная часть, а список документов, возможно, у них разные свойства.
---
а список документов, возможно, у них разные свойства.
с чего бы это ?
---
коллега, если ты можешь привести работающий код, я буду крайне признателен. Твой код, увы, не работает.
А, похоже, я не все важные сведения сказал. Интерфейс неуправляемый! Отбор строк - в управляемом...
---
Твой код, увы, не работает.
может стоит книжечки почитать, перед обращением на профессиональный форум ?

ПостроительЗапроса=Новый ПостроительЗапроса;
 ПостроительЗапроса.Текст="ВЫБРАТЬ
 | ЗаказПокупателя.Ссылка
 |ИЗ
 | Документ.ЗаказПокупателя КАК ЗаказПокупателя
 |{ГДЕ
 | ЗаказПокупателя.Организация.*,
 | ЗаказПокупателя.Ссылка.*,
 | ЗаказПокупателя.Номер,
 | ЗаказПокупателя.Дата,
 | ЗаказПокупателя.Проведен,
 | ЗаказПокупателя.ВалютаДокумента.*,
 | ЗаказПокупателя.ВидОперации.*,
 | ЗаказПокупателя.Контрагент.*,
 | ЗаказПокупателя.ДоговорКонтрагента.*}";

 Для Каждого СтрокаОтбора из ЭлементыФормы.Список.Значение.Отбор Цикл
  ДоступноеПоле=ПостроительЗапроса.ДоступныеПоля.Найти(СтрокаОтбора.Имя);
  Если ДоступноеПоле<>Неопределено И ДоступноеПоле.Отбор=Истина Тогда
   СтрокаОтбораПостроителя=ПостроительЗапроса.Отбор.Добавить(СтрокаОтбора.Имя);
   ЗаполнитьЗначенияСвойств(СтрокаОтбораПостроителя, СтрокаОтбора);
  КонецЕсли;
 КонецЦикла;
 ПостроительЗапроса.Выполнить();
 ТЗ=ПостроительЗапроса.Результат.Выгрузить();
 ТЗ.ВыбратьСтроку("Запрос с отбором");
---
спасибо! правда работает. Это потрясающе :)
Не находит только общие критерии отбора - ДокументыПоКонтрагенту, ДокументыПоДоговоруКонтрагента. Ну да фиг с ними.

А, еще нельзя писать
ЗаполнитьЗначенияСвойств(СтрокаОтбораПостроителя, СтрокаОтбора);

потому что появляется ошибка при сравнении "В списке" - такое впечатление, что она сначала заполняет значение, а потом вид сравнения, и значение типа СписокЗначений вызывает ошибку, потому что по умолчанию вид сравнения "равно". Поэтому надо все же так:
         НовыйЭлемент.ВидСравнения = Элемент.ВидСравнения;
         ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент, "Значение, ЗначениеПо, ЗначениеС, Использование");

Большущее спасибо! Вопрос закрыт.
---
Спасибо
---
А можно просто получить Итог по колонке
---
Ой это я не про то подумал.