Вход | Регистрация


Запрос сгруппировать по Дате

Запрос сгруппировать по Дате
Я
   Радим1987
 
14.09.16 - 20:31
s50.radikal.ru/i128/1609/d6/fcc1d3b6a240.jpg
 
 
   Радим1987
 
1 - 14.09.16 - 20:34
   Радим1987
 
2 - 14.09.16 - 20:36
Сгруппировать надо 
01.07.2016 - 12.07.2016 Территория Участок №3
13.07.2016 - 20.07.2016 Территория Участок___№29
21.07.2016 - 31.07.2016 Территория Участок №3
   Casey1984
 
3 - 14.09.16 - 20:38
Мин и Макс по территориям, как-то так наверное.
   Радим1987
 
4 - 14.09.16 - 20:41
ВЫБРАТЬ
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.Период КАК Период,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.НомерСтроки КАК НомерСтроки,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.Активность КАК Активность,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.Организация КАК Организация,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.Сотрудник КАК Сотрудник,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.ДатаРегистрации КАК ДатаРегистрации,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.ВидВремени КАК ВидВремени,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.Территория КАК Территория,
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.КоличествоЧасов КАК КоличествоЧасов
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
    РегистрСведений.РТ_ГрафикСотрудниковПоОбъектамУчета.СрезПоследних(, Период МЕЖДУ &Начало И &Конец) КАК РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних
ГДЕ
    РТ_ГрафикСотрудниковПоОбъектамУчетаСрезПоследних.Сотрудник = &Сотрудник
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Основная.Сотрудник КАК Сотрудник,
    ВЫБОР
        КОГДА Основная.Территория = Проверка.Территория
            ТОГДА МИНИМУМ(Основная.ДатаРегистрации)
    КОНЕЦ КАК Время,
    МАКСИМУМ(Основная.Территория) КАК ТерриторияОсновная,
    МАКСИМУМ(Проверка.Территория) КАК ТерриторияПроверки
ПОМЕСТИТЬ ВременнаяТаблица1
ИЗ
    ВременнаяТаблица КАК Основная
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК Проверка
        ПО Основная.Сотрудник = Проверка.Сотрудник

СГРУППИРОВАТЬ ПО
    Основная.Сотрудник,
    Основная.Территория,
    Проверка.Территория

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

ВЫБРАТЬ
    ВременнаяТаблица.Сотрудник,
    ВЫБОР
        КОГДА ВременнаяТаблица.Территория <> Проверка2.Территория
            ТОГДА МАКСИМУМ(Проверка2.ДатаРегистрации)
    КОНЕЦ,
    МАКСИМУМ(ВременнаяТаблица.Территория),
    МАКСИМУМ(Проверка2.Территория)
ИЗ
    ВременнаяТаблица КАК ВременнаяТаблица
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК Проверка2
        ПО ВременнаяТаблица.Сотрудник = Проверка2.Сотрудник

СГРУППИРОВАТЬ ПО
    ВременнаяТаблица.Сотрудник,
    ВременнаяТаблица.Территория,
    Проверка2.Территория
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Конечная.Сотрудник КАК Сотрудник,
    Конечная.Время КАК Время,
    Конечная.ТерриторияОсновная КАК ТерриторияОсновная,
    Конечная.ТерриторияПроверки КАК ТерриторияПроверки
ИЗ
    ВременнаяТаблица1 КАК Конечная
ГДЕ
    Конечная.Время <> ДАТАВРЕМЯ(1, 1, 1)
   Радим1987
 
5 - 14.09.16 - 20:42
Получает правильно только долго
   Радим1987
 
6 - 14.09.16 - 20:43
и есть только начальные даты
   Радим1987
 
7 - 14.09.16 - 20:44
Вильданов     01.07.2016 0:00:00    3/ (Участок №3 (дог.№ 16Y0631 от 17.03.16) сч25)
Вильданов     13.07.2016 0:00:00    29/ (Участок№29 (дог.№ЛК-КС-2014/46 от 08.09.2014) сч20)
Вильданов     20.07.2016 0:00:00    3/ (Участок №3 (дог.№ 16Y0631 от 17.03.16) сч25)
Вильданов     31.07.2016 0:00:00    29/ (Участок№29 (дог.№ЛК-КС-2014/46 от 08.09.2014) сч20)
   Casey1984
 
8 - 14.09.16 - 20:45
хм, а я думал что-то типа такого:

выбрать
  таб.Территория как Территория,
  минимум(таб.ДатаРегистрации) как ПериодС,
  максимум(таб.ДатаРегистрации) как ПериодПо,
из
  таб
сгруппировать
  по Территория


А дальше уже как надо выводить
   Casey1984
 
9 - 14.09.16 - 20:45
А тут так наверчено, что даже не знаю
   Радим1987
 
10 - 14.09.16 - 20:47
))) я сам уже 2 часа сижу голова скоро взорвется
 
 Рекламное место пустует
   Радим1987
 
11 - 14.09.16 - 21:08
Походу все устали ладно завтра еще подниму
   Casey1984
 
12 - 14.09.16 - 21:19
Ну уж до конца сотри мои посты, а то как-то нелепо выглядит.
   Casey1984
 
13 - 14.09.16 - 21:20
(12) ой блин, это у меня отбор стоял, сори
   youalex
 
14 - 14.09.16 - 22:42
(4) >РегистрСведений.РТ_ГрафикСотрудниковПоОбъектамУчета.СрезПоследних(, Период МЕЖДУ &Начало И &Конец)

Это просто шедеврально))
   Радим1987
 
15 - 15.09.16 - 07:31
Это не мой регистр кто то сделал, он должен быть не периодический
   DrZombi
 
16 - 15.09.16 - 08:27
(0) Состряпать в СКД Два набора данных.
1 набор выводить по одной Дате, либо максимальной, либо минимальной, как ходчеш
2 набор данных, нужен только для получения некого списка дат, т.е. периода.

Затем в общий модуль добавляешь функцию "Представление периода" 

и на закладке "Вычисляемые поля", группируешь со второго набора все даты в виде строки.
ПРИМЕР ИСПОЛЬЗОВАНИЯ ФУНКЦИЙ СКД МАССИВ (ARRAY) И СОЕДИНИТЬСТРОКИ (JOINSTRINGS) В ОТЧЁТЕ 1С 8

http://www.softmaker.kz/otchety-1s/primer-ispolzovaniya-funkcij-skd-massiv-array-i-soedinitstroki-joinstrings-v-otchyote-1s-8.html

И уже передаешь в свою функцию "Представление периода"

...
Так же, нужно формировать СКД отчет с параметром:



Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    // Вставить содержимое обработчика.

    
    СтандартнаяОбработка = Ложь;
    
    //-------------------------

    НастройкиКомпоновщика = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
    
    
    ВнешниеНаборыДанных = Новый Структура;
    //ВнешниеНаборыДанных.Вставить("ТЗ_ДниНедели",ТЗ_ДниНедели);

    
    //Макет компоновки 

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки);
    
    //Компоновка данных 

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
    
    //Вывод результата ДокументРезультат.Очистить();

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры


....
Код выше добавить в модуль отчета
Тебя должна интересовать "ВозможностьИспользованияВнешнихФункций" - значение Истина
Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>)
   Радим1987
 
17 - 17.09.16 - 17:59
ВЫБРАТЬ
    График.Сотрудник КАК Сотрудник,
    График.ДатаРегистрации КАК ДатаНачало,
    График.Территория КАК Территория
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрСведений.РТ_ГрафикСотрудниковПоОбъектамУчета КАК График
ГДЕ
    График.ДатаРегистрации МЕЖДУ &Начало И &Конец
    И График.Сотрудник = &Сотрудник
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ.Сотрудник КАК Сотрудник,
    ВТ.Территория КАК Территория,
    СТ.Территория КАК ТерриторияСТ,
    ВТ.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ ВТНачало
ИЗ
    ВТ КАК ВТ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК СТ
        ПО (ВТ.ДатаНачало = ДОБАВИТЬКДАТЕ(СТ.ДатаНачало, ДЕНЬ, 1))
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ.Сотрудник КАК Сотрудник,
    ВТ.Территория КАК Территория,
    СТ.Территория КАК ТерриторияСТ,
    ВТ.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ ВТКонец
ИЗ
    ВТ КАК ВТ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК СТ
        ПО (ВТ.ДатаНачало = ДОБАВИТЬКДАТЕ(СТ.ДатаНачало, ДЕНЬ, -1))
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    МАКСИМУМ(ВВТ.Сотрудник) КАК Сотрудник,
    ВВТ.Территория КАК Территория,
    МИНИМУМ(ВВТ.ДатаНачало) КАК ДатаНачало,
    ВВТ.ТерриторияСТ КАК ТерриторияСТ
ПОМЕСТИТЬ ВТПоследняяНачало
ИЗ
    ВТНачало КАК ВВТ

СГРУППИРОВАТЬ ПО
    ВВТ.Территория,
    ВВТ.ТерриторияСТ
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    МАКСИМУМ(ВВТ.Сотрудник) КАК Сотрудник,
    ВВТ.Территория КАК Территория,
    МИНИМУМ(ВВТ.ДатаНачало) КАК ДатаНачало,
    ВВТ.ТерриторияСТ КАК ТерриторияСТ
ПОМЕСТИТЬ ВТПоследняяКонец
ИЗ
    ВТКонец КАК ВВТ

СГРУППИРОВАТЬ ПО
    ВВТ.Территория,
    ВВТ.ТерриторияСТ
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТПоследняя.Сотрудник КАК Сотрудник,
    ВТПоследняя.Территория КАК Территория,
    ВТПоследняя.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ ВНачало
ИЗ
    ВТПоследняяНачало КАК ВТПоследняя
ГДЕ
    (ВТПоследняя.Территория <> ВТПоследняя.ТерриторияСТ
            ИЛИ ВТПоследняя.ТерриторияСТ ЕСТЬ NULL )
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТПоследняя.Сотрудник КАК Сотрудник,
    ВТПоследняя.Территория КАК Территория,
    ВТПоследняя.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ ВКонец
ИЗ
    ВТПоследняяКонец КАК ВТПоследняя
ГДЕ
    (ВТПоследняя.Территория <> ВТПоследняя.ТерриторияСТ
            ИЛИ ВТПоследняя.ТерриторияСТ ЕСТЬ NULL )
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВНачало.Сотрудник КАК Сотрудник,
    ВНачало.Территория КАК Территория,
    ВНачало.ДатаНачало КАК Дата
ИЗ
    ВНачало КАК ВНачало

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

ВЫБРАТЬ
    ВКонец.Сотрудник,
    ВКонец.Территория,
    ВКонец.ДатаНачало
ИЗ
    ВКонец КАК ВКонец

УПОРЯДОЧИТЬ ПО
    Дата
   Радим1987
 
18 - 17.09.16 - 19:41
Окончательное решение
 ВЫБРАТЬ
    График.Сотрудник КАК Сотрудник,
    График.ДатаРегистрации КАК ДатаНачало,
    График.Территория КАК Территория
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрСведений.РТ_ГрафикСотрудниковПоОбъектамУчета КАК График
ГДЕ
    График.ДатаРегистрации МЕЖДУ &Начало И &Конец
    //И График.Сотрудник В(&Сотрудник)

;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ.Сотрудник КАК Сотрудник,
    ВТ.Территория КАК Территория,
    СТ.Территория КАК ТерриторияСТ,
    ВТ.ДатаНачало КАК ДатаНачало,
    ВТ.ДатаНачало КАК ДатаНачало1
ПОМЕСТИТЬ ВТНачало
ИЗ
    ВТ КАК ВТ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК СТ
        ПО (ВТ.ДатаНачало = ДОБАВИТЬКДАТЕ(СТ.ДатаНачало, ДЕНЬ, 1))
            И ВТ.Сотрудник = СТ.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ.Сотрудник КАК Сотрудник,
    ВТ.Территория КАК Территория,
    СТ.Территория КАК ТерриторияСТ,
    ВТ.ДатаНачало КАК ДатаНачало,
    ВТ.ДатаНачало КАК ДатаНачало1
ПОМЕСТИТЬ ВТКонец
ИЗ
    ВТ КАК ВТ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК СТ
        ПО (ВТ.ДатаНачало = ДОБАВИТЬКДАТЕ(СТ.ДатаНачало, ДЕНЬ, -1))
            И ВТ.Сотрудник = СТ.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВВТ.Сотрудник КАК Сотрудник,
    ВВТ.Территория КАК Территория,
    МИНИМУМ(ВВТ.ДатаНачало) КАК ДатаНачало,
    ВВТ.ТерриторияСТ КАК ТерриторияСТ,
    ВВТ.ДатаНачало1 КАК ДатаНачало1
ПОМЕСТИТЬ ВТПоследняяНачало
ИЗ
    ВТНачало КАК ВВТ

СГРУППИРОВАТЬ ПО
    ВВТ.Территория,
    ВВТ.ТерриторияСТ,
    ВВТ.Сотрудник,
    ВВТ.ДатаНачало1
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВВТ.Сотрудник КАК Сотрудник,
    ВВТ.Территория КАК Территория,
    МИНИМУМ(ВВТ.ДатаНачало) КАК ДатаНачало,
    ВВТ.ТерриторияСТ КАК ТерриторияСТ,
    ВВТ.ДатаНачало1
ПОМЕСТИТЬ ВТПоследняяКонец
ИЗ
    ВТКонец КАК ВВТ

СГРУППИРОВАТЬ ПО
    ВВТ.Территория,
    ВВТ.ТерриторияСТ,
    ВВТ.Сотрудник,
    ВВТ.ДатаНачало1
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТПоследняя.Сотрудник КАК Сотрудник,
    ВТПоследняя.Территория КАК Территория,
    ВТПоследняя.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ ВНачало
ИЗ
    ВТПоследняяНачало КАК ВТПоследняя
ГДЕ
    (ВТПоследняя.Территория <> ВТПоследняя.ТерриторияСТ
            ИЛИ ВТПоследняя.ТерриторияСТ ЕСТЬ NULL )
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТПоследняя.Сотрудник КАК Сотрудник,
    ВТПоследняя.Территория КАК Территория,
    ВТПоследняя.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ ВКонец
ИЗ
    ВТПоследняяКонец КАК ВТПоследняя
ГДЕ
    (ВТПоследняя.Территория <> ВТПоследняя.ТерриторияСТ
            ИЛИ ВТПоследняя.ТерриторияСТ ЕСТЬ NULL )
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВНачало.Сотрудник КАК Сотрудник,
    ВНачало.Территория КАК Территория,
    ВНачало.ДатаНачало КАК Дата,
    ВКонец.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ Окончательная
ИЗ
    ВНачало КАК ВНачало
        ЛЕВОЕ СОЕДИНЕНИЕ ВКонец КАК ВКонец
        ПО ВНачало.Сотрудник = ВКонец.Сотрудник
            И ВНачало.Территория = ВКонец.Территория
ГДЕ
    ВНачало.ДатаНачало <= ВКонец.ДатаНачало
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Окончательная.Сотрудник КАК Сотрудник,
    Окончательная.Территория КАК Территория,
    МИНИМУМ(Окончательная.Дата) КАК Дата,
    МИНИМУМ(Окончательная.ДатаНачало) КАК ДатаНачало
ПОМЕСТИТЬ НТ
ИЗ
    Окончательная КАК Окончательная

СГРУППИРОВАТЬ ПО
    Окончательная.Сотрудник,
    Окончательная.Территория
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Окончательная.Сотрудник КАК Сотрудник,
    Окончательная.Территория КАК Территория,
    МАКСИМУМ(Окончательная.Дата) КАК Дата,
    МАКСИМУМ(Окончательная.ДатаНачало) КАК ДатаНачало
ПОМЕСТИТЬ ОТ
ИЗ
    Окончательная КАК Окончательная

СГРУППИРОВАТЬ ПО
    Окончательная.Сотрудник,
    Окончательная.Территория
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    НТ.Сотрудник КАК Сотрудник,
    НТ.Территория КАК Территория,
    НТ.Дата КАК Дата,
    НТ.ДатаНачало КАК ДатаНачало
ПОМЕСТИТЬ УсталУже
ИЗ
    НТ КАК НТ

СГРУППИРОВАТЬ ПО
    НТ.Сотрудник,
    НТ.Территория,
    НТ.Дата,
    НТ.ДатаНачало

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

ВЫБРАТЬ
    ОТ.Сотрудник,
    ОТ.Территория,
    ОТ.Дата,
    ОТ.ДатаНачало
ИЗ
    ОТ КАК ОТ

СГРУППИРОВАТЬ ПО
    ОТ.Сотрудник,
    ОТ.Территория,
    ОТ.Дата,
    ОТ.ДатаНачало
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    УсталУже.Сотрудник КАК Сотрудник,
    УсталУже.Территория КАК Территория,
    УсталУже.Дата КАК ДатаНачало,
    УсталУже.ДатаНачало КАК ДатаОкончания
ИЗ
    УсталУже КАК УсталУже

СГРУППИРОВАТЬ ПО
    УсталУже.Сотрудник,
    УсталУже.Территория,
    УсталУже.Дата,
    УсталУже.ДатаНачало

УПОРЯДОЧИТЬ ПО
    Сотрудник,
    ДатаНачало


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует