Имя: Пароль:
1C
1С v8
СКД. Не "сворачиваются" данные по группировке
0 Анцеранана
 
19.09.12
10:00
У меня есть отчет в СКД , где в строках заданы группировки.
- Подразделение
--Сотрудник
---Период...

Результат выводится примерно в таком виде:
-Дирекция
--Иванов
---Июнь 2012 года
---Июль 2012 года
--Петров
---Июль 2012 года

Когда я меняю иерархию и хочу вывести отчет в формате
-Подразделение
--Период

у меня выводится:
-Дирекция
---Июнь 2012 года
---Июль 2012 года
---Июль 2012 года

Группировка по периоду почему-то не сворачивается. Что я сделал не так?
1 Alex S D
 
19.09.12
10:01
может период к началу периода приводить? наверное форматом месяц делаешь, а по факту дни разные?
2 Aprobator
 
19.09.12
10:07
(1) +100500.
3 Анцеранана
 
19.09.12
10:18
(1) (2) как раз привожу, только к концу - вот так:

КОНЕЦПЕРИОДА(УправленческиеНачисления.ПериодРегистрации, МЕСЯЦ) КАК ПериодРегистрации,

так что не прокатило.
4 Aprobator
 
19.09.12
10:28
тогда странно. Причем очень.
5 Aprobator
 
19.09.12
10:29
приводишь то в запросе?
6 Alex S D
 
19.09.12
10:29
ну давай запрос, до кучи..
7 Анцеранана
 
19.09.12
10:32
Причем самое странное, что некоторых сотрудников в рамках периода группирует, а других нет. как-то странно это все..

Запрос:

ВЫБРАТЬ
   КОНЕЦПЕРИОДА(УправленческиеНачисления.ПериодРегистрации, МЕСЯЦ) КАК ПериодРегистрации,
   КОНЕЦПЕРИОДА(УправленческиеНачисления.ПериодРегистрации, МЕСЯЦ) КАК ПериодРасчета,
   УправленческиеНачисления.Регистратор.ВалютаДокумента КАК ВалютаДокумента,
   УправленческиеНачисления.ВидРасчета КАК ВидРасчета,
   УправленческиеНачисления.ВидРасчета.СпособОтраженияВУпрУчете КАК СпособОтражения,
   УправленческиеНачисления.ФизЛицо КАК ФизЛицо,
   УправленческиеНачисления.Подразделение КАК Подразделение,
   СУММА(УправленческиеНачисления.Результат) КАК Результат
ПОМЕСТИТЬ ВыплатыИКурс
ИЗ
   РегистрРасчета.УправленческиеНачисления КАК УправленческиеНачисления
ГДЕ
   УправленческиеНачисления.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
   И НЕ УправленческиеНачисления.ВидРасчета В (&МассивПремийБонусов)

СГРУППИРОВАТЬ ПО
   УправленческиеНачисления.ПериодРегистрации,
   УправленческиеНачисления.Регистратор.ВалютаДокумента,
   УправленческиеНачисления.ВидРасчета,
   УправленческиеНачисления.ВидРасчета.СпособОтраженияВУпрУчете,
   УправленческиеНачисления.ФизЛицо,
   УправленческиеНачисления.Подразделение

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   КОНЕЦПЕРИОДА(УправленческиеУдержания.ПериодРегистрации, МЕСЯЦ),
   КОНЕЦПЕРИОДА(УправленческиеУдержания.ПериодРегистрации, МЕСЯЦ),
   УправленческиеУдержания.Регистратор.ВалютаДокумента,
   ВЫБОР
       КОГДА УправленческиеУдержания.ВидРасчета В (&МассивУдержанийПоОкладу)
           ТОГДА &ВидРасчетаОклад
       КОГДА УправленческиеУдержания.ВидРасчета В (&МассивУдержанийПоМаксПремии)
           ТОГДА &ВидРасчетаМаксПремия
   КОНЕЦ,
   ВЫБОР
       КОГДА УправленческиеУдержания.ВидРасчета.Наименование ПОДОБНО "%премии%"
           ТОГДА &СпособОтраженияПремии
       ИНАЧЕ &СпособОтраженияЗарплата
   КОНЕЦ,
   УправленческиеУдержания.ФизЛицо,
   УправленческиеУдержания.Подразделение,
   СУММА(-УправленческиеУдержания.Результат)
ИЗ
   РегистрРасчета.УправленческиеУдержания КАК УправленческиеУдержания
ГДЕ
   УправленческиеУдержания.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
   И НЕ УправленческиеУдержания.ВидРасчета В (&МассивУдержанийПоПремиямБонусам)

СГРУППИРОВАТЬ ПО
   УправленческиеУдержания.ПериодРегистрации,
   УправленческиеУдержания.Регистратор.ВалютаДокумента,
   УправленческиеУдержания.ВидРасчета,
   УправленческиеУдержания.ФизЛицо,
   УправленческиеУдержания.Подразделение,
   ВЫБОР
       КОГДА УправленческиеУдержания.ВидРасчета.Наименование ПОДОБНО "%премии%"
           ТОГДА &СпособОтраженияПремии
       ИНАЧЕ &СпособОтраженияЗарплата
   КОНЕЦ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(УправленческиеНачисления.ПериодРегистрации, МЕСЯЦ, 1), МЕСЯЦ),
   КОНЕЦПЕРИОДА(УправленческиеНачисления.ПериодРегистрации, МЕСЯЦ),
   УправленческиеНачисления.Регистратор.ВалютаДокумента,
   УправленческиеНачисления.ВидРасчета,
   УправленческиеНачисления.ВидРасчета.СпособОтраженияВУпрУчете,
   УправленческиеНачисления.ФизЛицо,
   УправленческиеНачисления.Подразделение,
   СУММА(УправленческиеНачисления.Результат)
ИЗ
   РегистрРасчета.УправленческиеНачисления КАК УправленческиеНачисления
ГДЕ
   УправленческиеНачисления.ПериодРегистрации МЕЖДУ ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -1) И ДОБАВИТЬКДАТЕ(&КонецПериода, МЕСЯЦ, -1)
   И УправленческиеНачисления.ВидРасчета В(&МассивПремийБонусов)

СГРУППИРОВАТЬ ПО
   УправленческиеНачисления.ПериодРегистрации,
   УправленческиеНачисления.Регистратор.ВалютаДокумента,
   УправленческиеНачисления.ВидРасчета,
   УправленческиеНачисления.ВидРасчета.СпособОтраженияВУпрУчете,
   УправленческиеНачисления.ФизЛицо,
   УправленческиеНачисления.Подразделение

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(УправленческиеУдержания.ПериодРегистрации, МЕСЯЦ, 1), МЕСЯЦ),
   КОНЕЦПЕРИОДА(УправленческиеУдержания.ПериодРегистрации, МЕСЯЦ),
   УправленческиеУдержания.Регистратор.ВалютаДокумента,
   &ВидРасчетаПремияБонус,
   &СпособОтраженияПремии,
   УправленческиеУдержания.ФизЛицо,
   УправленческиеУдержания.Подразделение,
   СУММА(-УправленческиеУдержания.Результат)
ИЗ
   РегистрРасчета.УправленческиеУдержания КАК УправленческиеУдержания
ГДЕ
   УправленческиеУдержания.ПериодРегистрации МЕЖДУ ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -1) И ДОБАВИТЬКДАТЕ(&КонецПериода, МЕСЯЦ, -1)
   И УправленческиеУдержания.ВидРасчета В(&МассивУдержанийПоПремиямБонусам)

СГРУППИРОВАТЬ ПО
   УправленческиеУдержания.ПериодРегистрации,
   УправленческиеУдержания.Регистратор.ВалютаДокумента,
   УправленческиеУдержания.ВидРасчета,
   УправленческиеУдержания.ФизЛицо,
   УправленческиеУдержания.Подразделение,
   ВЫБОР
       КОГДА УправленческиеУдержания.ВидРасчета.Наименование ПОДОБНО "%премии%"
           ТОГДА &СпособОтраженияПремии
       ИНАЧЕ &СпособОтраженияЗарплата
   КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВыплатыИКурс.ПериодРегистрации,
   ВыплатыИКурс.ВалютаДокумента,
   ВыплатыИКурс.ВидРасчета,
   ВыплатыИКурс.СпособОтражения,
   ВыплатыИКурс.ФизЛицо,
   ВыплатыИКурс.Подразделение,
   ВыплатыИКурс.Результат КАК Результат,
   МАКСИМУМ(КурсыВалют.Период) КАК ДатаКурсаДоллара
ПОМЕСТИТЬ Выплаты
ИЗ
   ВыплатыИКурс КАК ВыплатыИКурс
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
       ПО ВыплатыИКурс.ПериодРасчета >= КурсыВалют.Период
ГДЕ
   КурсыВалют.Валюта = &Доллар

СГРУППИРОВАТЬ ПО
   ВыплатыИКурс.ВидРасчета,
   ВыплатыИКурс.СпособОтражения,
   ВыплатыИКурс.ФизЛицо,
   ВыплатыИКурс.Подразделение,
   ВыплатыИКурс.ПериодРегистрации,
   ВыплатыИКурс.ВалютаДокумента,
   ВыплатыИКурс.Результат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РаботникиСрезПоследних.ФизЛицо,
   ВЫБОР
       КОГДА РаботникиСрезПоследнихУволенные.ФизЛицо ЕСТЬ NULL
           ТОГДА РАЗНОСТЬДАТ(РаботникиСрезПоследних.Период, &КонецПериода, МЕСЯЦ)
       ИНАЧЕ ВЫБОР
               КОГДА РаботникиСрезПоследнихУволенные.Период < РаботникиСрезПоследних.Период
                   ТОГДА РАЗНОСТЬДАТ(РаботникиСрезПоследних.Период, &КонецПериода, МЕСЯЦ)
               ИНАЧЕ ВЫБОР
                       КОГДА РаботникиСрезПоследнихУволенные.Период > &КонецПериода
                           ТОГДА РАЗНОСТЬДАТ(РаботникиСрезПоследних.Период, &КонецПериода, МЕСЯЦ)
                       ИНАЧЕ РАЗНОСТЬДАТ(РаботникиСрезПоследних.Период, РаботникиСрезПоследнихУволенные.Период, МЕСЯЦ)
                   КОНЕЦ
           КОНЕЦ
   КОНЕЦ КАК Стаж,
   ВЫБОР
       КОГДА РаботникиСрезПоследнихУволенные.ФизЛицо ЕСТЬ NULL
           ТОГДА ЛОЖЬ
       ИНАЧЕ ВЫБОР
               КОГДА РаботникиСрезПоследнихУволенные.Период < РаботникиСрезПоследних.Период
                   ТОГДА ЛОЖЬ
               ИНАЧЕ ИСТИНА
           КОНЕЦ
   КОНЕЦ КАК Уволен,
   ВЫБОР
       КОГДА РаботникиСрезПоследнихУволенные.ФизЛицо ЕСТЬ NULL
           ТОГДА ЛОЖЬ
       ИНАЧЕ ВЫБОР
               КОГДА РаботникиСрезПоследнихУволенные.Период < РаботникиСрезПоследних.Период
                   ТОГДА ЛОЖЬ
               ИНАЧЕ ВЫБОР
                       КОГДА РаботникиСрезПоследнихУволенные.Период > &КонецПериода
                           ТОГДА ЛОЖЬ
                       ИНАЧЕ ИСТИНА
                   КОНЕЦ
           КОНЕЦ
   КОНЕЦ КАК УволенТекПер
ПОМЕСТИТЬ Работники
ИЗ
   РегистрСведений.Работники.СрезПоследних(&ДатаКонцаПериодаПлюсОдин, ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)) КАК РаботникиСрезПоследних
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Работники.СрезПоследних(&ДатаКонцаПериодаПлюсОдин, ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) КАК РаботникиСрезПоследнихУволенные
       ПО РаботникиСрезПоследних.ФизЛицо = РаботникиСрезПоследнихУволенные.ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВыплатыИКурс.ФизЛицо,
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВыплатыИКурс.ПериодРегистрации) КАК ПериодРегистрации
ПОМЕСТИТЬ КолПериодов
ИЗ
   ВыплатыИКурс КАК ВыплатыИКурс

СГРУППИРОВАТЬ ПО
   ВыплатыИКурс.ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Выплаты.ПериодРегистрации КАК Период,
   Выплаты.ФизЛицо,
   Выплаты.Подразделение,
   Работники.Стаж,
   Работники.Уволен,
   Выплаты.ВидРасчета,
   Выплаты.СпособОтражения,
   СУММА(ВЫБОР
           КОГДА &Валюта = &ВалютаУпр
               ТОГДА Выплаты.Результат
           ИНАЧЕ Выплаты.Результат / КурсыВалют.Курс
       КОНЕЦ) КАК Результат,
   КолПериодов.ПериодРегистрации КАК КолМес,
   Работники.УволенТекПер
ПОМЕСТИТЬ База
ИЗ
   Выплаты КАК Выплаты
       ЛЕВОЕ СОЕДИНЕНИЕ Работники КАК Работники
       ПО Выплаты.ФизЛицо = Работники.ФизЛицо
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
       ПО Выплаты.ДатаКурсаДоллара = КурсыВалют.Период
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ КолПериодов КАК КолПериодов
       ПО Выплаты.ФизЛицо = КолПериодов.ФизЛицо
ГДЕ
   КурсыВалют.Валюта = &Доллар

СГРУППИРОВАТЬ ПО
   Выплаты.ФизЛицо,
   Работники.Стаж,
   Работники.Уволен,
   Выплаты.ВидРасчета,
   Выплаты.СпособОтражения,
   Выплаты.Подразделение,
   Выплаты.ПериодРегистрации,
   КолПериодов.ПериодРегистрации,
   Работники.УволенТекПер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   База.Период,
   База.ФизЛицо,
   База.Подразделение,
   База.Стаж,
   База.Уволен,
   База.УволенТекПер КАК УволенВТекущемПериоде,
   База.ВидРасчета,
   База.СпособОтражения,
   База.Результат,
   База.КолМес,
   ВЫБОР
       КОГДА База.ВидРасчета В ИЕРАРХИИ (&МассивПремийБонусов)
           ТОГДА 0
       КОГДА База.ВидРасчета В ИЕРАРХИИ (&МассивГодовыхПремий)
           ТОГДА 0
       ИНАЧЕ База.Результат / База.КолМес
   КОНЕЦ КАК СреднееБезБонусов,
   ВЫБОР
       КОГДА База.ВидРасчета В ИЕРАРХИИ (&МассивГодовыхПремий)
           ТОГДА 0
       ИНАЧЕ База.Результат / База.КолМес
   КОНЕЦ КАК СреднееОбщее,
   ВЫБОР
       КОГДА База.ВидРасчета В ИЕРАРХИИ (&МассивГодовыхПремий)
           ТОГДА База.Результат / (12 * База.КолМес)
       ИНАЧЕ База.Результат / База.КолМес
   КОНЕЦ КАК СреднееГодовые
ИЗ
   База КАК База
ГДЕ
   ВЫБОР
           КОГДА База.ВидРасчета.СпособОтраженияВУпрУчете = &ОсновнаяЗарплата
               ТОГДА ВЫБОР
                       КОГДА &Основные
                           ТОГДА ИСТИНА
                       ИНАЧЕ ЛОЖЬ
                   КОНЕЦ
           ИНАЧЕ ИСТИНА
       КОНЕЦ
   И ВЫБОР
           КОГДА База.ВидРасчета.СпособОтраженияВУпрУчете = &СпособПремии
               ТОГДА ВЫБОР
                       КОГДА &Премии
                           ТОГДА ИСТИНА
                       ИНАЧЕ ЛОЖЬ
                   КОНЕЦ
           ИНАЧЕ ИСТИНА
       КОНЕЦ
   И ВЫБОР
           КОГДА База.ВидРасчета.СпособОтраженияВУпрУчете = &СпособПремииГодовые
               ТОГДА ВЫБОР
                       КОГДА &ПремииГодовые
                           ТОГДА ИСТИНА
                       ИНАЧЕ ЛОЖЬ
                   КОНЕЦ
           ИНАЧЕ ИСТИНА
       КОНЕЦ
   И ВЫБОР
           КОГДА База.ВидРасчета.СпособОтраженияВУпрУчете = ЗНАЧЕНИЕ(Справочник.СпособыОтраженияЗарплатыВУпрУчете.ПустаяСсылка)
               ТОГДА ВЫБОР
                       КОГДА &Прочие
                           ТОГДА ИСТИНА
                       ИНАЧЕ ЛОЖЬ
                   КОНЕЦ
           ИНАЧЕ ИСТИНА
       КОНЕЦ
8 Alex S D
 
19.09.12
10:42
посмотри запрос который выводит консоль СКД, в нем надо смотреть
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший