|
типовой отчет ШтатнаяРасстановка | ☑ | ||
---|---|---|---|---|
0
Ar-Bus
08.12.13
✎
21:42
|
Привет всем. конфигурация ЗиК бюджетного учреждения. Есть типовой отчет: "ОтчетПоШтатнойРасстановке". Используется СКД. Группировки: учреждение, подразделение, должность
Поля: кол-во ставок по штатному расписканию, кол-во ставок по основному месту работы, кол-во ставок по внутреннему совместительству, кол-во ставок по внешнему совместительству. Так вот, кол-ва ставок по осн, внутр. и внешн. совместительству я сделал для каждого работника... Но ведь кол-во ставок в штатном расписании относится к должности... как сделать, чтобы кол-во ставок в отчет выходило только для группировки Должность, а для работников это поле оставалось пустым... Вот единственное, чего я смог добиться: для каждого работника проставляется общее кол-во штатный единиц в должности... но это неудобно. Ниже приведена ссыла на принт-скрин отчета http://forum.infostart.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=364839 |
|||
1
Ar-Bus
09.12.13
✎
18:15
|
Ну что у меня в коде вывода результата запроса не так написано? почему выводит в табличныйДокумент только первую одну строку с подразделением, затем одну строку с должностью - и на этом все, обходы группировок заканчиваются...
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Работники.Организация, | Работники.ПодразделениеОрганизации КАК Подразделение, | Работники.Должность КАК Должность, | Работники.Сотрудник, | СУММА(Штатное.КоличествоСтавок) КАК КоличествоСтавок, | КОЛИЧЕСТВО(Штатное.Должность) КАК КоличествоДолжностей, | СУММА(ВЫБОР | КОГДА Работники.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы) | ТОГДА ВЫБОР | КОГДА Работники.ПериодЗавершения <= &Период | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ЗанимаемыхСтавокЗавершения | ИНАЧЕ Работники.ЗанимаемыхСтавок | КОНЕЦ | КОНЕЦ) КАК ОСН, | СУММА(ВЫБОР | КОГДА Работники.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА ВЫБОР | КОГДА Работники.ПериодЗавершения <= &Период | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ЗанимаемыхСтавокЗавершения | ИНАЧЕ Работники.ЗанимаемыхСтавок | КОНЕЦ | КОНЕЦ) КАК ВНУТР, | СУММА(ВЫБОР | КОГДА Работники.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ТОГДА ВЫБОР | КОГДА Работники.ПериодЗавершения <= &Период | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ЗанимаемыхСтавокЗавершения | ИНАЧЕ Работники.ЗанимаемыхСтавок | КОНЕЦ | КОНЕЦ) КАК ВНЕШ |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период) КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(&Период) КАК Штатное | ПО Работники.Должность = Штатное.Должность | И Работники.ПодразделениеОрганизации = Штатное.ПодразделениеОрганизации |ГДЕ | Работники.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | |СГРУППИРОВАТЬ ПО | Работники.Организация, | Работники.ПодразделениеОрганизации, | Работники.Должность, | Работники.Сотрудник | |УПОРЯДОЧИТЬ ПО | Работники.Организация, | Работники.ПодразделениеОрганизации.Наименование, | Работники.Должность.Наименование, | Работники.Сотрудник.Наименование |ИТОГИ | СУММА(КоличествоСтавок), | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КоличествоДолжностей) |ПО | Подразделение, | Должность"; Запрос.УстановитьПараметр("Период", ДатаОтчета); Результат = Запрос.Выполнить(); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ВыборкаОбщийИтог.Следующий(); // Общий итог ВыборкаПоПодразделениям = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение", "ВСЕ"); //Ал ОбходРезультатаЗапроса.ПоГруппировкамСИерархией Пока ВыборкаПоПодразделениям.Следующий() Цикл Если ВыборкаПоПодразделениям.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда Область = ОбластьПодразделениеИерархия; ИначеЕсли ВыборкаПоПодразделениям.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоГруппировке Тогда Область = ОбластьПодразделениеГруппировка; Иначе Область = ОбластьПодразделение; КонецЕсли; Область.Параметры.Заполнить(ВыборкаПоПодразделениям); ТабДок.Вывести(Область, ВыборкаПоПодразделениям.Уровень()); ВыборкаПоДолжностям=ВыборкаПоПодразделениям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Должность"); Пока ВыборкаПоДолжностям.Следующий() Цикл Если ВыборкаПоДолжностям.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда Область = ОбластьДолжностьИерархия; ИначеЕсли ВыборкаПоДолжностям.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоГруппировке Тогда Область = ОбластьДолжностьГруппировка; Иначе Область = ОбластьДолжность; КонецЕсли; Область.Параметры.Заполнить(ВыборкаПоДолжностям); ТабДок.Вывести(Область, ВыборкаПоДолжностям.Уровень()); КонецЦикла; КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.ЗакончитьАвтогруппировкуКолонок(); КонецПроцедуры |
|||
2
grayshadow
09.12.13
✎
18:33
|
омфг... должность СидороваОльгаЕвгеньевна10...
|
|||
3
Ar-Bus
09.12.13
✎
18:46
|
(2) это не должность, а сотрудник
|
|||
4
Ar-Bus
09.12.13
✎
20:44
|
а я буду писать дальше... Где косяк в тексте запроса? Подразделения мне нужно выводить с учетом иерархии. В выборке видит, что это иерархия, но выводит общую строку, без вложенных группировок по должностям и работникам. Хотя показывает общие суммы ставок по иерархии. В тексте запроса все правильно написано? Значит косяк в выборке из результата запроса?
Запрос.Текст = "ВЫБРАТЬ | Работники.Организация КАК Организация, | Работники.ПодразделениеОрганизации КАК Подразделение, | Работники.Должность КАК Должность, | Работники.Сотрудник КАК Работник, | СУММА(Штатное.КоличествоСтавок) КАК КоличествоСтавок, | КОЛИЧЕСТВО(Штатное.Должность) КАК КоличествоДолжностей, | СУММА(ВЫБОР | КОГДА Работники.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы) | ТОГДА ВЫБОР | КОГДА Работники.ПериодЗавершения <= &Период | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ЗанимаемыхСтавокЗавершения | ИНАЧЕ Работники.ЗанимаемыхСтавок | КОНЕЦ | КОНЕЦ) КАК ОСН, | СУММА(ВЫБОР | КОГДА Работники.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА ВЫБОР | КОГДА Работники.ПериодЗавершения <= &Период | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ЗанимаемыхСтавокЗавершения | ИНАЧЕ Работники.ЗанимаемыхСтавок | КОНЕЦ | КОНЕЦ) КАК ВНУТР, | СУММА(ВЫБОР | КОГДА Работники.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ТОГДА ВЫБОР | КОГДА Работники.ПериодЗавершения <= &Период | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ЗанимаемыхСтавокЗавершения | ИНАЧЕ Работники.ЗанимаемыхСтавок | КОНЕЦ | КОНЕЦ) КАК ВНЕШ |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период) КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(&Период) КАК Штатное | ПО Работники.Должность = Штатное.Должность | И Работники.ПодразделениеОрганизации = Штатное.ПодразделениеОрганизации |ГДЕ | Работники.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | |СГРУППИРОВАТЬ ПО | Работники.Организация, | Работники.ПодразделениеОрганизации, | Работники.Должность, | Работники.Сотрудник | |УПОРЯДОЧИТЬ ПО | Работники.Организация, | Работники.ПодразделениеОрганизации, | Работники.Должность, | Работники.Сотрудник |ИТОГИ | СУММА(КоличествоСтавок), | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КоличествоДолжностей), | СУММА(Осн), | СУММА(Внутр), | СУММА(Внеш) |ПО | ОБЩИЕ, | Организация, | Подразделение ИЕРАРХИЯ, | Должность, | Работник"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |