Имя: Пароль:
1C
1С v8
Создание отчета на СКД
0 black_cat1305
 
12.03.14
14:07
Добрый день! Необходимо на основе РегистраСведений создать отчет на СКД.
Есть регистр сведений с измерениями:
        дата              Заказы                Статусы
05.09.2013 14:27:37       55701                 Действующий
05.09.2013 15:07:43       55701                 Разработка
05.09.2013 15:08:53       55701                 Действующий

В отчете колонку Статусы разбить на две колонки СтатусПредыдущий и СтатусНастоящий, примерно должно быть так:

дата                      Заказы     СтатусПредыд      СтатусыНаст
05.09.2013 14:27:37       55701                        Действующий
05.09.2013 15:07:43       55701      Действующий       Разработка
05.09.2013 15:08:53       55701      Разработка        Действующий

Может кто подкинет идею. Никак не могу правильно реализовать?
1 butterbean
 
12.03.14
14:08
таблицу регистра саму с собой соединяешь по всем измерениям и сравнением по периоду на <
2 black_cat1305
 
12.03.14
14:09
а, можно поточнее?
3 butterbean
 
12.03.14
14:18
(2) вот как-то так:
ВЫБРАТЬ
    Т1.Заказ,
    Т1.Статус,
    Т2.Статус КАК ПредыдущийСтатус,
ИЗ(ВЫБРАТЬ
    Т1.Заказ,
    Т1.Статус
    МАКСИМУМ(Т2.Период) КАК ПредПериод,
ИЗ РегистрСведений.ТвойРегистр.СрезПоследних КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТвойРегистр КАК Т2
   ПО Т1.Заказ = Т2.Заказ И Т1.Период > Т2.Период
СГРУППИРОВАТЬ ПО Т1.Заказ,Т1.Статус) КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТвойРегистр КАК Т2
   ПО Т1.Заказ = Т2.Заказ И Т1.ПредПериод = Т2.Период
4 black_cat1305
 
12.03.14
14:23
спасибо! Буду пробовать)
5 black_cat1305
 
28.03.14
09:21
Добрый день.. Вопрос возник по данной проблеме снова, вот сделала отчет на СКД с запросом:

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

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

УПОРЯДОЧИТЬ ПО
    ДатаИзмененияСтатуса
////////////////////////////////////////////
///////////////////////////////////////////
Запрос срабатывает правильно кроме одного - если есть в РС СтатусыЗаказов один заказ, то в отчет данный заказ не выводится так как в РС СтатусыЗаказов только одно движение по этому заказу. Помогите, ежу перепробовала все возможные варианты установки условий но никак у меня не срабатывает(((
6 barrgand
 
28.03.14
09:26
(5) Поменять соединение на ЛЕВОЕ?
7 black_cat1305
 
28.03.14
09:26
неа, не помогает(((
8 black_cat1305
 
28.03.14
09:44
отзовитесь!!!!
9 barrgand
 
28.03.14
10:40
(8) Сделай пакетный запрос:

1 запрос - текущий статус
2 запрос - левое соединение с регистром - выбор даты пред. статуса
3 запрос - левое соединение с регистром - выбор статуса по дате пред. статуса