Имя: Пароль:
1C
1С v8
Отбор в списке РегСведений. получить набор записей по установленному отбору.
,
0 AaNnDdRrEeYy
 
16.12.13
12:45
Есть форма (обычная не управляемая) на ней РегистрСведенийСписок в этом списке есть отбор, нужно получить набор записей с точно таким же отбором как и у списка на форме.
Нужно программно перезаписать те записи что видны на форме в списке не трогая остальные. (которые не видны из за отбора)

Есть проблема, в списке на форме можно устанавливать отбор по реквизитам регистра в наборе записей только по измерениям.
1 Naumov
 
16.12.13
12:54
обращаяся к СправочникСписок из модуля формы и читай.
2 AaNnDdRrEeYy
 
16.12.13
13:01
(1) у этого Списка нет свойств кроме "Отбор" "Порядок" и "Колонки" и всего один метод "Обновить()"
3 Naumov
 
16.12.13
13:02
(2) За чем тебе отбор? читай, что отобрано
4 Ненавижу 1С
 
гуру
16.12.13
13:03
программно, через построитель
5 AaNnDdRrEeYy
 
16.12.13
13:33
(3) не читается... потому что там нет данных это картинка просто (4) попробую через построитель.
6 AaNnDdRrEeYy
 
16.12.13
14:05
вот так получилось

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ *
|ИЗ
|    РегистрСведений.МойРегистр КАК МойРегистр";

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

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

Построитель.Выполнить();

Возврат Построитель.Результат.Выбрать();
7 Ненавижу 1С
 
гуру
16.12.13
14:28
(6) проверь на списках значений также
8 Михаил Козлов
 
16.12.13
15:42
(6) Мне кажется проще через Построитель.ИсточникДанных = Новый ОписаниеДанных(сюда РС список); - не придется с отборами программно возиться.
9 AaNnDdRrEeYy
 
16.12.13
16:16
я тоже думал что туда что попало пихать можно
однако только ТаблицаЗначений; РезультатЗапроса; ОбластьЯчеекТабличногоДокумента.


ОписаниеИсточникаДанных (DataSourceDescription)
На основании источника данных
Синтаксис:

Новый ОписаниеИсточникаДанных(<ИсточникДанных>)
Параметры:

<ИсточникДанных> (обязательный)

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

Создает описание источника данных на основании другого источника данных.
Также может быть создан с использованием функциональной формы оператора Новый.
10 Михаил Козлов
 
16.12.13
16:27
Я для регистра накопления делал так:
Пост = Новый ПостроительОтчета;
Пост.ИсточникДанных = Новый ОписаниеИсточникаДанных(РегистрНакопленияСписок);
...
- вроде как работает.