Имя: Пароль:
1C
1С v8
Помогите с обходом результата запроса
,
0 katerinaUniv
 
12.09.11
12:35
Добрый день!
Не понимаю в чем ошибка, нужно обойти и показать отчет по подразделениям, а в каждом подразделении по сотрудникам

Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
       Пока Выборка.Следующий() Цикл
           Область = Макет.ПолучитьОбласть("Подразделение");
           Область.Параметры.Показатель = Выборка.ПодразделениеОрганизации;
           Область.Параметры.Сумма = Выборка.Результат;
           Область.Параметры.суммаНДФЛ = Выборка.Налог;
           ТабДок.Вывести(Область);
           ВыборкаДетали = Выборка.Выбрать(ОбходРезультатаЗапроса.Прямой);
           Пока ВыборкаДетали.Следующий() Цикл
                 Область = Макет.ПолучитьОбласть("Сотрудник");
               Область.Параметры.Показатель = ВыборкаДетали.Сотрудник;
               Область.Параметры.Сумма = выборкаДетали.Результат;
               Область.Параметры.СуммаНДФЛ = ВыборкаДетали.Налог;
               ТабДок.Вывести(Область);
           КонецЦикла;
       КонецЦикла;
1 Рэйв
 
12.09.11
12:37
Обходи и показывай.
2 lxs
 
12.09.11
12:42
1. Получать область каждый раз - некорректно.
2. Табдок.Показать() не пробовала?
3 mzelensky
 
12.09.11
12:47
(0) что есть "ТабДок" ? Попробуй как (2) написал "Табдок.Показать() " ?!
4 katerinaUniv
 
12.09.11
12:54
все поправила
5 katerinaUniv
 
12.09.11
12:54
получается так:

Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       Пока Выборка.Следующий() Цикл
           Область = Макет.ПолучитьОбласть("Подразделение");
           Область.Параметры.Показатель = Выборка.ПодразделениеОрганизации;
           Область.Параметры.Сумма = Выборка.Результат;
           Область.Параметры.суммаНДФЛ = Выборка.Налог;
           ТабДок.Вывести(Область);
           ВыборкаДетали = Выборка.Выбрать(ОбходРезультатаЗапроса.Прямой);
           Пока ВыборкаДетали.Следующий() Цикл
                 Область = Макет.ПолучитьОбласть("Сотрудник");
               Область.Параметры.Показатель = ВыборкаДетали.Сотрудник;
               Область.Параметры.Сумма = выборкаДетали.Результат;
               Область.Параметры.СуммаНДФЛ = ВыборкаДетали.Налог;
               ТабДок.Вывести(Область);
           КонецЦикла;
       КонецЦикла;
6 katerinaUniv
 
12.09.11
12:58
вопрос еще, как в запросе отсортировать по алфавиту возр?
|УПОРЯДОЧИТЬ ПО
       |    ПодразделениеОрганизации,
       |    Сотрудник
7 katerinaUniv
 
12.09.11
12:58
может что где дописать надо?
8 mzelensky
 
12.09.11
13:00
(6) |УПОРЯДОЧИТЬ ПО
       |    ПодразделениеОрганизации.наименование,
       |    Сотрудник.наименование
9 katerinaUniv
 
12.09.11
13:02
т.е. надо четко указывать поле?
10 katerinaUniv
 
12.09.11
13:03
(8) не работает, пишет ошибку
Неоднозначное поле "ПодразделениеОрганизации.Наименование"
11 Axel2009
 
12.09.11
13:03
т.е. надо указывать поле по которому сортируется.
ПодразделениеОрганизации - ссылка. и сортировка идет по ссылке.
12 mzelensky
 
12.09.11
13:06
(10) я как пример написал. Я же не знаю что ты там конкретно выбираешь! в (11) тебе прально сказали!
13 katerinaUniv
 
12.09.11
13:40
правильно, но почему-то для подразделения организаций ошибка, а для сотрудника написала -  реально работает, спасибо
14 katerinaUniv
 
12.09.11
13:40
последний вопрос: как свернуть результат запроса? например, у меня 2 сотрудника одинаковых в результате запроса, у каждого свое начисление и своя сумма
15 katerinaUniv
 
12.09.11
13:41
по идее из двух надо сделать одного с общей суммой
16 katerinaUniv
 
12.09.11
13:41
ил запроса текст менять?
17 Axel2009
 
12.09.11
13:41
потому что надо указывать имя таблицы, от которой идет сортировка по подразделению.
18 katerinaUniv
 
12.09.11
13:42
"ВЫБРАТЬ
       |    НДФЛРасчетыСБюджетом.ФизЛицо КАК ФизЛицо1,
       |    НДФЛРасчетыСБюджетом.ПодразделениеОрганизации КАК ПодразделениеОрганизации1,
       |    СУММА(НДФЛРасчетыСБюджетом.Налог) КАК Налог,
       |    НДФЛРасчетыСБюджетом.Период,
       |    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
       |    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник КАК Сотрудник,
       |    ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо,
       |    СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
       |    ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации
       |ИЗ
       |    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
       |        ПО ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = НДФЛРасчетыСБюджетом.ФизЛицо
       |ГДЕ
       |    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаС И &ДатаПо
       |    И НДФЛРасчетыСБюджетом.Период МЕЖДУ &ДатаС И &ДатаПо  
       |    И ОсновныеНачисленияРаботниковОрганизаций.Результат <> &С  
|
       |СГРУППИРОВАТЬ ПО
       |    ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации,
       |    НДФЛРасчетыСБюджетом.ФизЛицо,
       |    НДФЛРасчетыСБюджетом.ПодразделениеОрганизации,
       |    НДФЛРасчетыСБюджетом.Период,
       |    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
       |    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
       |    ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо
       |
       |УПОРЯДОЧИТЬ ПО
       |    ПодразделениеОрганизации,
       |    Сотрудник.Наименование
       |ИТОГИ
       |    СУММА(Налог),
       |    СУММА(Результат)
       |ПО
       |    ПодразделениеОрганизации
19 katerinaUniv
 
12.09.11
13:42
это мой вариант запроса
20 mzelensky
 
12.09.11
13:42
(14) в этом случае проще всего итоги делать по сотруднику и прописать функцию ("сумма")
21 mzelensky
 
12.09.11
13:43
(20) +

|ИТОГИ
       |    СУММА(Налог),
       |    СУММА(Результат)
       |ПО
       |    ПодразделениеОрганизации, СОТРУДНИК
22 mzelensky
 
12.09.11
13:44
(13) напиши так:

"УПОРЯДОЧИТЬ ПО ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации.НАИМЕНОВАНИЕ"
23 mzelensky
 
12.09.11
13:45
(22) + а вообще учись делать все в конструкторе запросов - эт очень облегчает жизнь + избавляет от глупых ошибок и вопросов!
24 katerinaUniv
 
12.09.11
13:49
(21) все равно не считает, отдельно выводит сотрудников
25 katerinaUniv
 
12.09.11
13:49
вот так написала:
|ИТОГИ
       |    СУММА(Налог),
       |    СУММА(Результат)
       |ПО
       |    ПодразделениеОрганизации,
       |    Сотрудник"
26 katerinaUniv
 
12.09.11
13:50
получилось не 2, а 4 строки из-за появившейся группировки
27 katerinaUniv
 
12.09.11
13:50
конструктором делаю обычно, сейчас открываться не хочет, ошибку пишет, хотя отчет работает и запрос тоже
28 mzelensky
 
12.09.11
13:53
(25) ну так а обход запроса ты изменила на 3 выборки???
29 katerinaUniv
 
12.09.11
13:56
все, спасибо, все правильно, только в базе уже успели сотрудников надвоить, одно начисление на правильном, а другое - на двойнике, вот и лезут!
(28)обход поменяла и все стало ОК))) спасибо!!!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.