Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
popoff17
10 / 10 / 5
Регистрация: 13.07.2010
Сообщений: 206
1

Отчет: как связать поле выбора и запрос?

22.09.2010, 10:06. Просмотров 3913. Ответов 3
Метки нет (Все метки)

Добрый день. создал внешний отчет, который выводит ФИО и паспортные данные сотрудников всех организаций. вопрос: как сделать фильтр по организациям и по подразделениям??
т.е. список выводится, поле выбора есть, а вот как их "связать" - не могу разобраться.

Вот код формы:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//при нажатии на кнопку "выбор" заполняем поле выбора имеющимися организациями.
//пока что оставил так, ибо на данном этапе удобно
 
Процедура Выбор(Элемент);
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |   Организации.Ссылка,
    |   Организации.Наименование КАК Организация
    |ИЗ
    |   Справочник.Организации КАК Организации
    |УПОРЯДОЧИТЬ ПО
    |   Организация");
    Запрос.УстановитьПараметр("ПустаяОрганизация", Справочники.Организации.ПустаяСсылка());                       
    СписокОрганизаций = Новый СписокЗначений;
    Выборка = Запрос.Выполнить().Выбрать(); 
    Пока Выборка.Следующий() Цикл
        СписокОрганизаций.Добавить(Выборка.Ссылка, Выборка.Организация);
    КонецЦикла; 
    СписокОрганизаций.Вставить(0, Справочники.Организации.ПустаяСсылка(), "По всем сотрудникам");
    ЭлементыФормы.Организация.СписокВыбора = СписокОрганизаций;
    ЭлементыФормы.Организация.Значение = ЭлементыФормы.Организация.СписокВыбора.Получить(0).Значение;
    КонецПроцедуры
 
 
//Процедура выводит таблицу (по макету) с ФИО и паспортными данными сотрудников 
 
Процедура ПечатьНажатие(Элемент);
        Запрос = Новый Запрос;
    Запрос.Текст = 
"   ВЫБРАТЬ ПЕРВЫЕ 40
|   ПаспортныеДанныеФизЛиц.ФизЛицо,
|   ПаспортныеДанныеФизЛиц.ДокументВид,
|   ПаспортныеДанныеФизЛиц.ДокументСерия,
|   ПаспортныеДанныеФизЛиц.ДокументНомер,
|   ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
|   ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
|   ПаспортныеДанныеФизЛиц.ДатаРегистрацииПоМестуЖительства,
|   ФизическиеЛица.Наименование,
|   СотрудникиОрганизаций.Организация.Наименование КАК Организация,             
|   СотрудникиОрганизаций.Физлицо.Наименование КАК ФизЛицо1
|ИЗ
|   РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
|       ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
|           ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|           ПО ФизическиеЛица.Наименование = СотрудникиОрганизаций.Физлицо.Наименование
|       ПО ПаспортныеДанныеФизЛиц.ФизЛицо = ФизическиеЛица.Ссылка
|ГДЕ
|   СотрудникиОрганизаций.Организация.Наименование = &Организация"; 
    Запрос.УстановитьПараметр("&Организация", Организация);
    ВыборкаДляОтчет = Запрос.Выполнить().Выбрать();    
        ДокументРезультат = Новый ТабличныйДокумент;
        Макет = ПолучитьМакет("Макет");
        //ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
        //ДокументРезультат.Вывести(ОбластьМакетаШапка);
        ОбластьМакетаТаблица = Макет.ПолучитьОбласть("Таблица");
        Пока ВыборкаДляОтчет.Следующий()  Цикл
            ОбластьМакетаТаблица.Параметры.Заполнить(ВыборкаДляОтчет);
        ДокументРезультат.Вывести(ОбластьМакетаТаблица);    
    КонецЦикла;
        //ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
        //ДокументРезультат.Вывести(ОбластьМакетаПодвал);
  
        ДокументРезультат.Показать();                             
КонецПроцедуры
Заранее благодарю за помощь!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2010, 10:06
Ответы с готовыми решениями:

Как сделать так, чтобы после выбора данного элемента в поле выбора отобразились еще и названия групп?
Ситуация такая: Имеем Документ с Полем Выбора; - кликаем на кнопку выбора(1) и выбираем элемент...

Отчет: Схема компоновки данных, как связать поля?
Доброе время суток всем! Помогите пожалуйста разобраться, уже сколько времени долбаюсь не могу...

Как из комбобокса на си++ перенести значения в поле выбора на 1с?
Как из комбобокса на си++ перенести значения в поле выбора на 1с?

Как вывести текстовое поле в отчет
Добрый день, такая проблема, в общем есть полускдшный отчет(в основном на скд + есть небольшой...

Как при незаполненном поле выводить все записи в отчет
Такая задача. Имеется некий отчет, который формируется на основе регистра остатков. В...

3
Konctantin
941 / 745 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
23.09.2010, 13:02 2
С отбором по Организации у вас вроде все получилось, а вот чтобы отобразить добавьте отбор:
1C
1
2
                       |    СотрудникиОрганизаций.Организация.Наименование = &Организация
                       |    И СотрудникиОрганизаций.ПодразделениеОрганизации = &ПодразделениеОрганизации";
но так как это будет жесткий отбор, то можно сделать разбинение запроса, на куски, и применять их в зависимости от условий, но...
У вас простенький отчет, нет требований к условному форматированию, используйте систему компоновки данных или же используйте объект УниверсальныйОтчет
вот пример с вашим запросом:

для начала добавьте табличное поле и сделайте тип данных ПостроительОтчета.Отбор
и у вас будет поле с возможностью задания отбора по выбраным полям, там же будет и указываться вид сравниения
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
ПостроительОтчета.Текст = 
"ВЫБРАТЬ ПЕРВЫЕ 40
|   ПаспортныеДанныеФизЛиц.ФизЛицо,
|   ПаспортныеДанныеФизЛиц.ДокументВид,
|   ПаспортныеДанныеФизЛиц.ДокументСерия,
|   ПаспортныеДанныеФизЛиц.ДокументНомер,
|   ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
|   ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
|   ФизическиеЛица.Наименование,
|   СотрудникиОрганизаций.Организация КАК Организация,
|   СотрудникиОрганизаций.Физлицо КАК ФизЛицо1,
|   СотрудникиОрганизаций.ПодразделениеОрганизации
|{ВЫБРАТЬ
|   Организация.*,
|   ПодразделениеОрганизации.*}
|ИЗ
|   РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
|       ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
|           ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|           ПО ФизическиеЛица.Наименование = СотрудникиОрганизаций.Физлицо.Наименование
|       ПО ПаспортныеДанныеФизЛиц.ФизЛицо = ФизическиеЛица.Ссылка
|ГДЕ
|   СотрудникиОрганизаций.Организация.Наименование = &Организация
|   И СотрудникиОрганизаций.ПодразделениеОрганизации = &ПодразделениеОрганизации
|{ГДЕ
|   СотрудникиОрганизаций.Организация.*,
|   СотрудникиОрганизаций.Физлицо.*,
|   СотрудникиОрганизаций.ПодразделениеОрганизации.*}"; 
 
МассивОтбора = Новый Массив;
МассивОтбора.Добавить("Организация");
МассивОтбора.Добавить("Физлицо");
МассивОтбора.Добавить("ПодразделениеОрганизации");
УправлениеОтчетами.ЗаполнитьОтбор(МассивОтбора, ПостроительОтчета);
 
// можно жестко установить параметр отбора
ПостроительОтчета.Параметры.Вставить("Организация",  Организация);
ПостроительОтчета.Параметры.Вставить("ПодразделениеОрганизации",  ПодразделениеОрганизации);
// и выполняем запрос
ПостроительОтчета.Выполнить();
Выборка = ПостроительОтчета.Результат.Выбрать();
1
popoff17
10 / 10 / 5
Регистрация: 13.07.2010
Сообщений: 206
23.09.2010, 13:41  [ТС] 3
премного благодарен за помощь. но только что буквально доделал этот этап сейчас борюсь с другой проблемой: в одно из полей макета не цепляются данные. 3 поля - шапка, таблица и подвал. так в таблицу и подвал все норм встает, а в шапку ни-ни + директора и нглавбуха надо вывести. если интересно - вложил файл. как добью этот отчет - выложу результат, мало ли кому пригодится...
0
Вложения
Тип файла: rar e3.rar (8.1 Кб, 57 просмотров)
Konctantin
941 / 745 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
23.09.2010, 14:53 4
Не правильно вы делаете, сделайте групировку по организации, и обойдите запрос по групровкам. В первом обходе у вас будет выборка по организации, а потом во вором уровне у вас будет уже заполнение ТЧ.

Как-то так, но могу и ошибатся, так как писал на форуме
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ВыборкаДляОтчет   = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);    
ДокументРезультат = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
Если ВыборкаДляОтчет.Следующий() Тогда
    ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляОтчет);
КонецЕсли;
ДокументРезультат.Вывести(ОбластьМакетаШапка);
ОбластьМакетаТаблица = Макет.ПолучитьОбласть("Таблица");
ВыборкаПоСтрокам = ВыборкаДляОтчет.Выбрать();
Пока ВыборкаПоСтрокам.Следующий()  Цикл
    ОбластьМакетаТаблица.Параметры.Заполнить(ВыборкаПоСтрокам);
    ДокументРезультат.Вывести(ОбластьМакетаТаблица);    
КонецЦикла;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2010, 14:53

Как связать поле список-(<option><select>) поле text и checkbox
есть поле text - фамилия, потом поле с датой, поле список - наименование товара, поле text - кол-во...

Как связать отчет с формой
Помогите,пожалуйста,связать форму и отчет Выдача книги, по заданным параметрам (для вывода отчетов)...

Как связать таблицы заказ и отчет
Здравствуйте, помогите разобраться в следующем..при создании запроса к отчета таблице для ввода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru