Имя: Пароль:
1C
1С v8
Подскажите по отчету в 8.3
0 Sun125
 
25.03.15
11:31
Был отчет в 8.2. На форме отчета была возможность отбора по физ.лицу, причем отбор с возможностью выбрать "В списке", "В иерархии" и пр.
На форме это 2 элемента:
ВидСравненияФизЛицо - Тип "Системные перечисления.ВидСравнения"
ФизЛицо - Тип "СписокЗначений, СправочникСсылка.ФизическиеЛица".

Как такое можно организовать в 8.3?
На форме пытаюсь добавить элемент "ВидСравненияФизЛицо", но типа "Системные перечисления.ВидСравнения" нет. Подскажите,пожалуйста, как быть?
1 Sun125
 
25.03.15
11:46
Может есть примеры в типовых?
2 D_E_S_131
 
25.03.15
11:58
Имеется в виду, что на 8.2 отчет был сделан через какой-нибудь "Универсальный" на Построителе, а 8.3 теперь заставляет СКД использовать?
3 Sun125
 
25.03.15
12:15
(2) Не совсем.
В обычном простом отчете было 2 реквизита:
ВидСравненияФизЛицо - Тип "Системные перечисления.ВидСравнения"
ФизЛицо - Тип "СписокЗначений, СправочникСсылка.ФизическиеЛица".
Реквизиты добавлены на форму.
Был обработчик ПриИзменении реквизита "ВидСравненияФизЛицо":
Если выбрали "В списке", то тип значения Физ.лицо = СправочникСсылка.ФизическиеЛица. Если выбрали "Равно", то тип значения Физ.лицо = СписокЗначения.

Дальше менялся текст запроса в зависимости от того, выбрали "В списке" ИЛИ "Равно". Это все прописано программно.
4 Sun125
 
25.03.15
12:16
Без всяких построителей, вот такой примитивный отбор
5 Sun125
 
25.03.15
12:32
Сделал в 8.3 по-другому:
Добавил на форму реквизит "МойОтбор" типа "КомпоновщикНастроекКомпоновкиДанных.настройки.Отбор".
Создал макет СКД "МакетОтбор", куда поместил свой запрос.
ПриСозданииНаСервере()
    ОбъектТМП = РеквизитФормыВЗначение("Отчет");
    СхемаКомпоновки = ОбъектТМП.ПолучитьМакет("МакетОтбор");//Ваша схема может называться как угодно
    
    НастройкиКомпоновки = СхемаКомпоновки.НастройкиПоУмолчанию;
    
    Адрес = Новый УникальныйИдентификатор();
    URLСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновки, Адрес);
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы);
    
    НовыйОтбор.Инициализировать(ИсточникНастроек);
    НовыйОтбор.ЗагрузитьНастройки(НастройкиКомпоновки);

Как теперь вытащить результат запроса после отбора? Не могу понять
6 nordbox
 
25.03.15
12:37
Я дико извиняюсь, а вот
>>НовыйОтбор
Это что и где?
7 Sun125
 
25.03.15
13:18
(6) МойОтбор.Инициализировать(ИсточникНастроек);
    МойОтбор.ЗагрузитьНастройки(НастройкиКомпоновки);
8 Sun125
 
25.03.15
13:25
(7) Сам по себе отбор работает на форме. Но как мне получить результат отбора?
9 hhhh
 
25.03.15
13:25
(7) в общем всё это выкиньте. в 8.3 такая фишка: ни одной строчки кода. Описываете схему компоновки данных и всё. Остальное стандартное, там есть все отборы. Форму не нужно создавать. Ничего не нужно.
10 Sun125
 
25.03.15
13:28
(9) У меня отчет со своим сложным макетом. И вывод данных в Табличный документ мне нужно описать программно
11 hhhh
 
25.03.15
13:29
(10) это всё можно в СКД сделать. И макеты там есть. Выкиньте этот свой план.
12 Sun125
 
25.03.15
13:37
(11) Пользователь не должен лазить в Настройки отчета СКД, искать там закладку отбор. Все должно быть на форме. Как тут без формы и без кода?
13 D_E_S_131
 
25.03.15
13:40
(12) "Все должно быть на форме." — и все прекрасно на форму из настроек СКД вытаскивается.
14 hhhh
 
25.03.15
14:26
(12) ну откройте любой отчет в Бух 3.0 или в УТ 11. Уж они посложнее вашего. Оборотно-сальдовые ведомости всякие. Пользователи спокойно работают. Ну то есть вы спрашивали как в 8.3 делается, я поделился, но если вы свою древнюю настройку из 8.1 туда подпихнете, думаю ничего страшного не случится.
15 Sun125
 
25.03.15
22:44
Пытаюсь получить результат так:
    ОбъектТМП = РеквизитФормыВЗначение("Отчет");
    СхемаКомпоновки = ОбъектТМП.ПолучитьМакет("МакетОтбор");//Ваша схема может называться как угодно
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    НастройкиКомпоновкиДанных = НовыйОтбор.ПолучитьНастройки();
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки, НастройкиКомпоновкиДанных,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    Таблица = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Таблица почему-то пустая. Может что не так делаю?
16 Sun125
 
25.03.15
22:45
(15) Аа..все,понял в чем ошибка. В СКД в выбранные поля не добавл.