Имя: Пароль:
1C
1С v8
Как в СКД программно установить отбор?
0 Бомж
 
27.03.09
09:22
Всем доброго дня.
Как изменить уже существующую настройку отбора в СКД?

Добавить новый можно так:
       

НовыйЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       ПолеОтбора = Новый ПолеКомпоновкиДанных("Регистратор.Дата");
       НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
       НовыйЭлементОтбора.Использование = Истина;
       НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
       НовыйЭлементОтбора.ПравоеЗначение = НП.ПолучитьДатуОкончания();


А как получить уже существующий элемент отбора и установить новое значение?
Спасибо.
1 gr13
 
27.03.09
09:23
в 7.7?
2 gr13
 
27.03.09
09:23
3 gr13
 
27.03.09
09:24
хотя там нет) но если подумать, то разберешься) там не сложно
4 lucky-nn
 
27.03.09
09:25
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
   
   Если ЗначениеЗаполнено(ДатаОтчета) Тогда
       Настройки.ПараметрыДанных.Элементы[0].Значение = ДатаОтчета;
       Настройки.ПараметрыДанных.Элементы[0].Использование=Истина;
   КонецЕсли;
   
   КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
5 Andry888
 
27.03.09
09:27
ЭтотОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы.Получить(0).Использование=Истина;
ЭтотОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы.Получить(0).ПравоеЗначение= ...;
6 Бомж
 
27.03.09
09:30
(5), да примерно так и хотел написать, но такая проблема: Например есть достаточно большой отчет, и отборов может быть много. Вот прользователь добавил пару отборов, поменял их местами и Индекс 0 уже не индекс 0. Как бы по имени получить?
7 Andry888
 
27.03.09
09:34
У ...Элементы вроде бы метод "найти" есть...
8 Andry888
 
27.03.09
09:37
ЭтотОбъект.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(...
9 Shurjk
 
27.03.09
09:38
Примерно так
Отбор = Новый Массив;
   
   ЭлементОтбора1 = Новый Структура;
   ЭлементОтбора1.Вставить("ЛевоеЗначение", "Сотрудник");
   ЭлементОтбора1.Вставить("ВидСравнения", ВидСравненияКомпоновкиДанных.Равно);
   ЭлементОтбора1.Вставить("ПравоеЗначение", Сотрудник);
   Отбор.Добавить(ЭлементОтбора1);
   
   Параметры = Новый Массив;
   
   ЭлементПараметра1 = Новый Структура;
   ЭлементПараметра1.Вставить("Параметр", "НачалоПериода");
   ЭлементПараметра1.Вставить("Значение", НачалоПериода);
   Параметры.Добавить(ЭлементПараметра1);
   
   ЭлементПараметра2 = Новый Структура;
   ЭлементПараметра2.Вставить("Параметр", "КонецПериода");
   ЭлементПараметра2.Вставить("Значение", КонецМесяца(КонецПериода));
   Параметры.Добавить(ЭлементПараметра2);
   
   ЭлементПараметра3 = Новый Структура;
   ЭлементПараметра3.Вставить("Параметр", "ВидРасчетногоЛистка");
   ЭлементПараметра3.Вставить("Значение", "Подробно");
   Параметры.Добавить(ЭлементПараметра3);
Объект.НастроитьОтборыПарметры(Отбор, Параметры);
10 Бомж
 
27.03.09
09:43
НайтиПоле(<Поле>)
Параметры:
<Поле> (обязательный)
Тип: ПолеКомпоновкиДанных. Поле системы компоновки данных
Возвращаемое значение:
Тип: Неопределено, ДоступноеПолеКомпоновкиДанных, ДоступноеПолеОтбораКомпоновкиДанных.
Описание:
Осуществляет поиск доступного поля.
Если поле не найдено, возвращается значение Неопределено.
Если найдено - найденное поле.

<Поле> (обязательный) - Дык а сюда-то что передавать? то что по индексу получил что ли???
Непонятно...
11 Andry888
 
27.03.09
09:44
(9) не ну это каждый раз перезаписывать отбор + затрет пользовательские отборы...
12 Andry888
 
27.03.09
09:47
(10) ЭтотОбъект.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.Элементы.Найти("ИмяПоля")
13 Andry888
 
27.03.09
09:48
(10)  (12) это <Поле>...
14 gr13
 
27.03.09
09:53
(6) в цикле попробуй...
15 Бомж
 
27.03.09
09:55
ЭлементОтбора=ЭтотОбъект.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.Элементы.Найти("Регистратор.Дата")

Возвращает неопределено. куда копать?
16 Andry888
 
27.03.09
09:57
В отладчике просмотри все доступныеэлементыотбора (наверно такого поля там нет...)
17 Бомж
 
27.03.09
10:01
Всем спасибо. НА сегодня все. Домой пора уже. буду завтра ковырять
18 acsent
 
27.03.09
10:34
НЕ забываем что это ДЕРЕВО отборов
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан