Имя: Пароль:
1C
1С v8
Как в запросе СКД период разбить на месяца
,
0 Coldboy
 
24.12.13
15:58
Здравствуйте. Как в скд мне данные отобрать по месяцам, если я задам период допустим 01.07.2013 по 30.09.2013, а данные я хочу вывести в разрезе месяца,  допустим июль, август, сентябрь. Как сгруппировать проблем нет, как выборку такую получить, чтобы группировать.
1 Avganec
 
24.12.13
16:03
(0) в параметрах виртуальных таблиц есть поле нужное тебе
2 Nenaviwu1c20
 
24.12.13
16:05
Что за выборка?Откуда данные берешь?
3 Nenaviwu1c20
 
24.12.13
16:05
А так если что НАЧАЛОПЕРИОДА(Период,Месяц)
4 Coldboy
 
24.12.13
16:07
вот мой код
    Пока Период <=КонецМесяца(КонПериода) Цикл
        Сотрудники = СписокРаботниковЗаПериод(Период);
        //Сотрудники.ВыбратьСтроку();
            ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("Результат",Сотрудники);
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДАнныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

        Период = ДобавитьМесяц(Период,1);
    КОнецЦикла;


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


хочется все в 1 СКД, чтобы потом отборами рулить ...
5 Shur1cIT
 
24.12.13
16:14
(0) В СКД сделай колонку месяц
6 bootini
 
24.12.13
16:36
|    СтраховыеВзносыИсчисленныеОбороты.ПФРСтраховаяОборот + СтраховыеВзносыИсчисленныеОбороты.ПФРНакопительнаяОборот КАК ПФР,
                    |  КОНЕЦПЕРИОДА(СтраховыеВзносыИсчисленныеОбороты.Период, МЕСЯЦ) КАК Месяц //&Период,
                    |    СотрудникиОрганизаций.Организация


как то так
7 samozvanec
 
24.12.13
16:38
(4) жестко. а сразу нельзя за период выбрать и сгруппировать по-человечьи?
8 samozvanec
 
24.12.13
16:39
+(7) зачем справочник Сотрудники выбирать, если все равно внутреннее?
9 Вжескрыылг
 
24.12.13
16:41
(1)
10 Вжескрыылг
 
24.12.13
16:43
(0) в запросе периодМесяц обязательно, потом его в группировку
11 Coldboy
 
24.12.13
17:28
(8) чтобы выбирались именно те сотрудники, где был принят в этом месяца и не уволен, просто по регитсру и там и там фомс или тд будет начислено...