Имя: Пароль:
1C
1С v8
Платежный календарь
0 STAYEKR
 
04.06.12
19:33
Господа, помогите разобраться. Не могу сформировать отчет ПлатежныйКлендарь. Выдает ошибку: "Совместная группировка по периодам с другими выражениями запрещена". Группирую по колонкам "ПК_Дата, ПК_ДеньНедели", "КолонкаИтогов", "КолонкаДанныеБДДС", "КолонкаОтклонение". Поля "ПК_Дата" и "ПК_День" недели имеют роль "Период,1" и "Период,2" соответственно. Пробовал менять роли на "измерение", ошибка повторялась. Отчет должен выводить фактические данные до текущей даты и плановые после текущей даты. Полный код запроса приведен ниже. За любую помщь буду безмерно благодарен! Заранее спасибО!



ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ОперативныйПланДвиженияДенежныхСредств.Период       КАК ПК_Дата,
   ДЕНЬНЕДЕЛИ(ОперативныйПланДвиженияДенежныхСредств.Период) КАК ПК_ДеньНедели,
   ОперативныйПланДвиженияДенежныхСредств.СтатьяБДДС   КАК ПК_СтатьяБДДС,
   ОперативныйПланДвиженияДенежныхСредств.Предприятие  КАК ПК_Предприятие,
   0                                                   КАК ПК_План,
   ОперативныйПланДвиженияДенежныхСредств.СуммаОборот  КАК ПК_ПланФакт,
   0                                                   КАК ПК_ДанныеБДДС,
   0 КАК ПК_ФактическийПлатеж

ПОМЕСТИТЬ СписокДанных
   
ИЗ
   РегистрНакопления.ОперативныйПланДвиженияДенежныхСредств.Обороты(&ДатаНач, &ДатаКон, Регистратор) КАК ОперативныйПланДвиженияДенежныхСредств
ГДЕ
   ОперативныйПланДвиженияДенежныхСредств.Тип <> ЗНАЧЕНИЕ(Справочник.ТипыЗаявок.Трансферт)    

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

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

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

ВЫБРАТЬ
   БюджетныеЗаявкиОбороты.Период              КАК ПК_Дата,
   ДЕНЬНЕДЕЛИ(БюджетныеЗаявкиОбороты.Период) КАК ПК_ДеньНедели,
   БюджетныеЗаявкиОбороты.СтатьяБДДС  КАК ПК_СтатьяБДДС,
   БюджетныеЗаявкиОбороты.Предприятие КАК ПК_Предприятие,
   0                                   КАК ПК_План,    
   0                                   КАК ПК_ПланФакт,    
   ВЫБОР
       КОГДА БюджетныеЗаявкиОбороты.СтатьяБДДС.ВидДвижения = ЗНАЧЕНИЕ(Перечисление.ВидЗаявок.Расходные) ТОГДА -БюджетныеЗаявкиОбороты.СуммаОборот
       КОГДА БюджетныеЗаявкиОбороты.СтатьяБДДС.ВидДвижения = ЗНАЧЕНИЕ(Перечисление.ВидЗаявок.Приходные) ТОГДА БюджетныеЗаявкиОбороты.СуммаОборот
   КОНЕЦ КАК ПК_ДанныеБДДС,
   0 КАК ПК_ФактическийПлатеж
ИЗ
   РегистрНакопления.БюджетныеЗаявки.Обороты(&ДатаНач, &ДатаКон,Регистратор ) КАК БюджетныеЗаявкиОбороты
ГДЕ
   БюджетныеЗаявкиОбороты.Тип <> ЗНАЧЕНИЕ(Справочник.ТипыЗаявок.Трансферт)        

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

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

ВЫБРАТЬ РАЗРЕШЕННЫЕ
   Данные.ПК_Дата                    КАК ПК_Дата,
   Данные.ПК_ДеньНедели            КАК ПК_ДеньНедели,
   Данные.ПК_СтатьяБДДС            КАК ПК_СтатьяБДДС,
   Данные.ПК_Предприятие           КАК ПК_Предприятие,
   СУММА(Данные.ПК_План)                  КАК ПК_План,
   СУММА(Данные.ПК_ПланФакт)              КАК ПК_ПланФакт,
   СУММА(Данные.ПК_ДанныеБДДС)            КАК ПК_ДанныеБДДС,
   СУММА(Данные.ПК_ФактическийПлатеж)     КАК ПК_ФактическийПлатеж,
   ОтклонениеВремени.ПК_ДатаФактическихПлатежей КАК ПК_ДатаФактическихПлатежей,
   ПК_РабочийКалендарь.ПК_ПоследнийРабочийДеньМесяца КАК ПК_ПоследнийРабочийДеньМесяца
   
ПОМЕСТИТЬ _СписокСводный    

ИЗ СписокДанных КАК Данные

ЛЕВОЕ СОЕДИНЕНИЕ

(ВЫБРАТЬ
   ВЫБОР
       КОГДА Настройки.ЗначениеНастройки > 0 ТОГДА Настройки.ЗначениеНастройки
       ИНАЧЕ 0
   КОНЕЦ КАК ПК_ДатаФактическихПлатежей
   ИЗ
   Справочник.эф_Настройки КАК Настройки    

   ГДЕ
       Настройки.Ссылка = ЗНАЧЕНИЕ(Справочник.эф_Настройки.СтандартнаяЗадержкаФактаПлатежей)
) КАК ОтклонениеВремени

ПО ИСТИНА

ЛЕВОЕ СОЕДИНЕНИЕ

(ВЫБРАТЬ    
   МАКСИМУМ(РабочийКалендарь.Дата) КАК ПК_ПоследнийРабочийДеньМесяца
ИЗ
   РегистрСведений.эф_РабочийКалендарь КАК    РабочийКалендарь
ГДЕ
       РабочийКалендарь.Дата МЕЖДУ ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаКон, МЕСЯЦ), ДЕНЬ, -5) И КОНЕЦПЕРИОДА(&ДатаКон, МЕСЯЦ)    
   И
       РабочийКалендарь.СтатусДня = ЗНАЧЕНИЕ(Перечисление.СтатусыДня.РабочийДень)
) КАК ПК_РабочийКалендарь

ПО ИСТИНА

СГРУППИРОВАТЬ ПО

   Данные.ПК_Дата,
   ОтклонениеВремени.ПК_ДатаФактическихПлатежей,
   ПК_РабочийКалендарь.ПК_ПоследнийРабочийДеньМесяца,
   Данные.ПК_ДеньНедели,
   Данные.ПК_СтатьяБДДС,
   Данные.ПК_Предприятие

;

ВЫБРАТЬ РАЗРЕШЕННЫЕ
   _СписокСводный.ПК_Дата                           КАК ПК_Дата,
   _СписокСводный.ПК_ДеньНедели                   КАК ПК_ДеньНедели,
   _СписокСводный.ПК_СтатьяБДДС                 КАК ПК_СтатьяБДДС,
   _СписокСводный.ПК_Предприятие               КАК ПК_Предприятие,
   _СписокСводный.ПК_План                       КАК ПК_План,
   _СписокСводный.ПК_ПланФакт                   КАК ПК_ПланФакт,
   _СписокСводный.ПК_ДанныеБДДС                 КАК ПК_ДанныеБДДС,
   _СписокСводный.ПК_ФактическийПлатеж         КАК ПК_ФактическийПлатеж,
   _СписокСводный.ПК_ДатаФактическихПлатежей    КАК ПК_ДатаФактическихПлатежей,
   _СписокСводный.ПК_ПоследнийРабочийДеньМесяца КАК ПК_ПоследнийРабочийДеньМесяца
   
ПОМЕСТИТЬ СписокСводный    
ИЗ _СписокСводный КАК _СписокСводный

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


ВЫБРАТЬ
   __СписокСводный.ПК_ПоследнийРабочийДеньМесяца          КАК ПК_Дата,
   ДЕНЬНЕДЕЛИ(__СписокСводный.ПК_ПоследнийРабочийДеньМесяца ) КАК ПК_ДеньНедели,
   
   __СписокСводный.ПК_СтатьяБДДС                  КАК ПК_СтатьяБДДС,
   __СписокСводный.ПК_Предприятие                КАК ПК_Предприятие,
   0                                                КАК ПК_План,
   __СписокСводный.ПК_План - __СписокСводный.ПК_ПланФакт                    КАК ПК_ПланФакт,
   0                                              КАК ПК_ДанныеБДДС,
   0                                              КАК ПК_ФактическийПлатеж,
   __СписокСводный.ПК_ДатаФактическихПлатежей    КАК ПК_ДатаФактическихПлатежей,
   __СписокСводный.ПК_ПоследнийРабочийДеньМесяца КАК ПК_ПоследнийРабочийДеньМесяца
   
ИЗ _СписокСводный КАК __СписокСводный

ГДЕ
       __СписокСводный.ПК_Дата <= &ТекДата
   И
       (__СписокСводный.ПК_План > 0 И __СписокСводный.ПК_План - __СписокСводный.ПК_ПланФакт <> 0)

;
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   СписокСводный.ПК_Дата                     КАК ПК_Дата,
   СписокСводный.ПК_ДеньНедели                 КАК ПК_ДеньНедели,
   СписокСводный.ПК_СтатьяБДДС              КАК ПК_СтатьяБДДС,
   СписокСводный.ПК_Предприятие             КАК ПК_Предприятие,
   
   ВЫБОР КОГДА
       СписокСводный.ПК_План   <> 0
         ТОГДА ЕстьNULL(СписокСводный.ПК_План,0)
   КОНЕЦ                                     КАК ПК_План,
   
                       
   ВЫБОР
       КОГДА СписокСводный.ПК_Дата <= ДОБАВИТЬКДАТЕ(&ТекДата,ДЕНЬ,-ВЫРАЗИТЬ(СписокСводный.ПК_ДатаФактическихПлатежей КАК ЧИСЛО)) ТОГДА СписокСводный.ПК_ФактическийПлатеж
       ИНАЧЕ СписокСводный.ПК_ПланФакт          
   КОНЕЦ КАК ПК_ПланФакт,
   СписокСводный.ПК_ДанныеБДДС              КАК ПК_ДанныеБДДС,
   ВЫБОР
       КОГДА СписокСводный.ПК_Дата <= ДОБАВИТЬКДАТЕ(&ТекДата,ДЕНЬ,-ВЫРАЗИТЬ(СписокСводный.ПК_ДатаФактическихПлатежей КАК ЧИСЛО)) ТОГДА СписокСводный.ПК_ФактическийПлатеж
       ИНАЧЕ СписокСводный.ПК_ПланФакт          
   КОНЕЦ - СписокСводный.ПК_ДанныеБДДС КАК  ПК_Отклонение,
   СписокСводный.ПК_ФактическийПлатеж       КАК ПК_ФактическийПлатеж,
   СписокСводный.ПК_ДатаФактическихПлатежей КАК ПК_ДатаФактическихПлатежей
ПОМЕСТИТЬ ИтоговыйСписок    
   
ИЗ
   СписокСводный КАК СписокСводный
   
;


////////////////////////////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   _ИтоговыйСписок.ПК_Дата                   КАК ПК_Дата,
   _ИтоговыйСписок.ПК_ДеньНедели               КАК ПК_ДеньНедели,
   _ИтоговыйСписок.ПК_СтатьяБДДС              КАК ПК_СтатьяБДДС,
   _ИтоговыйСписок.ПК_Предприятие             КАК ПК_Предприятие,
   _ИтоговыйСписок.ПК_План                   КАК ПК_План,
   ВЫБОР КОГДА  _ИтоговыйСписок.ПК_Дата <= &ТекДата ТОГДА
       _ИтоговыйСписок.ПК_ФактическийПлатеж      
   ИНАЧЕ    
       _ИтоговыйСписок.ПК_ПланФакт
   КОНЕЦ   КАК ПК_ПланФакт,
   _ИтоговыйСписок.ПК_ДанныеБДДС              КАК ПК_ДанныеБДДС,
   ВЫБОР
       КОГДА _ИтоговыйСписок.ПК_Дата <= &ТекДата ТОГДА
           _ИтоговыйСписок.ПК_ФактическийПлатеж - _ИтоговыйСписок.ПК_ДанныеБДДС
       ИНАЧЕ
           _ИтоговыйСписок.ПК_ПланФакт - _ИтоговыйСписок.ПК_ДанныеБДДС            
   КОНЕЦ КАК  ПК_Отклонение,
   
   _ИтоговыйСписок.ПК_ФактическийПлатеж       КАК ПК_ФактическийПлатеж,
   _ИтоговыйСписок.ПК_ДатаФактическихПлатежей КАК ПК_ДатаФактическихПлатежей
ИЗ
   СписокСводный КАК _ИтоговыйСписок
1 vudo
 
04.06.12
20:33
Там еще он обычно пишет в какой строке ошибка.
А то влом всю твою радость разума читать. :)