Имя: Пароль:
1C
1С v8
Запрос: связь между регистрами
,
0 Adgjj
 
06.07.12
15:37
На 1 строку ВыработкаТС_Лес иногда приходится больше 1 строки уатОстаткиГСМнаТС
|    уатОстаткиГСМнаТС.Количество КАК ВыдатьГорючего
|ИЗ
|    РегистрНакопления.ВыработкаТС_Лес КАК ВыработкаТС_Лес
   
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС
|        ПО ВыработкаТС_Лес.ПутЛист = уатОстаткиГСМнаТС.ПутевойЛист

Как изменить запрос, чтобы выдавалась строки не множились в зависимости от количества строк уатОстаткиГСМнаТС.
Например, если в ВыработкаТС_Лес 1 строка, а в уатОстаткиГСМнаТС для нее 3 строки, то запрос бы выдавал 1 строку с общей суммой по уатОстаткиГСМнаТС.Количество?
1 Ненавижу 1С
 
гуру
06.07.12
15:38
сгруппировать по
2 Adgjj
 
06.07.12
15:41
а если в запросе три ОБЪЕДИНИТЬ, то группировать по для каждого придется писать?
3 Ненавижу 1С
 
гуру
06.07.12
15:48
(2) подзапрос
4 Adgjj
 
06.07.12
15:50
а можете схематично написать?
5 Adgjj
 
06.07.12
16:08
|    СУММА(уатОстаткиГСМнаТС.Количество) КАК ВыдатьГорючего, на эту строку ругается, говорит поле уатОстаткиГСМнаТС.Количество не найдено

в |СГРУППИРОВАТЬ ПО
|    уатОстаткиГСМнаТС.Количество,  есть
6 Ненавижу 1С
 
гуру
06.07.12
16:10
(5) может все покажешь?
(4)
выбрать сумма(т.чтото)
...
из
(выбрать чтото
из ...
объединить все
выбрать чтото
из ...
объединить все
выбрать чтото
из ...) как т
сгруппировать по ...
7 Adgjj
 
06.07.12
16:11
я-то покажу но это на 4 монитора
8 Ненавижу 1С
 
гуру
06.07.12
16:11
9 Adgjj
 
06.07.12
16:13
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ //Путевой лист и Простои из него
   //1) ОбщиеДанные
   |    ВыработкаТС_Лес.Период КАК ДатаДок, //это дата закрытия
   |    ВыработкаТС_Лес.ПутЛист.ВидПЛ КАК ВидДок,  //для проверки в сообщении ниже запроса
   |    ВЫБОР
   |    КОГДА  ВыработкаТС_Лес.ПутЛист.ВидПЛ = ЗНАЧЕНИЕ(Перечисление.уатВидыПЛ._4С)   ТОГДА
   |        ВЫБОР
   |        КОГДА (ВыработкаТС_Лес.ПутЛист.Режим_Лес = ЗНАЧЕНИЕ(Перечисление.РежимыРаботы_Лес.Режим_67)) ТОГДА
   |            ВЫБОР КОГДА 7<=ЧАС(ВыработкаТС_Лес.ДатаВыезда) и ЧАС(ВыработкаТС_Лес.ДатаВыезда)<19 ТОГДА
   |                ""X""
   |            ИНАЧЕ
   |                ""Y""
   |            КОНЕЦ  
   |        КОГДА (ВыработкаТС_Лес.ПутЛист.Режим_Лес = ЗНАЧЕНИЕ(Перечисление.РежимыРаботы_Лес.Режим_19))  ТОГДА
   |            ВЫБОР КОГДА 8<=ЧАС(ВыработкаТС_Лес.ДатаВыезда) и ЧАС(ВыработкаТС_Лес.ДатаВыезда)<20 ТОГДА
   |                ""X""
   |            ИНАЧЕ
   |                ""Y""
   |            КОНЕЦ
   |        КОНЕЦ
   |    КОГДА ВыработкаТС_Лес.ПутЛист.ВидПЛ = ЗНАЧЕНИЕ(Перечисление.уатВидыПЛ._4П) ТОГДА
   |        ""X""  
   |    КОНЕЦ КАК СменаXY,
   |    уатПервоначальныеСведенияТС.КодСАП КАК ЕО,             //д. б. заполнено, иначе сразу после запроса сообщение
   |    уатПервоначальныеСведенияТС.РабочееМесто КАК РабМесто, //д. б. заполнено, иначе сразу после запроса сообщение
   |    ""60"" + ВыработкаТС_Лес.ПутЛист.ВыпустилМеханик.Код КАК ТаноМеханика,
   |    ВыработкаТС_Лес.ПутЛист.Номер КАК НомерДок,
   
   //2) ПоказателиРаботы
   |    ВыработкаТС_Лес.КоличествоКмГруз + ВыработкаТС_Лес.КоличествоКмПорожний КАК ОбщПробег,
   |    ВыработкаТС_Лес.КоличествоКмГруз КАК ГрПробег,
   //|    КоэфУвелНормы
   |    уатСчетчикиТС.СпНач КАК СпидометрВыезда,
   |    уатСчетчикиТС.Значение КАК СпидометрВозвращения,
   |    уатРасходГСМнаТС.ОстатокТопливаВыезд КАК ОстатокВыезда,
   |    уатРасходГСМнаТС.ОстатокТопливаВозврат КАК ОстатокВозвращения,
   |    СУММА(уатОстаткиГСМнаТС.Количество) КАК ВыдатьГорючего,
   
   //3) Операции
   //|    ЕСТЬNULL(ВыработкаТС_Лес.ВидРаботы.КодСАП,уатПростои.ВидПростоя.КодСАП) КАК КодОперации,  //д. б. заполнено, иначе сразу после запроса сообщение
   //|    ЕСТЬNULL(ВыработкаТС_Лес.ДатаВыезда      ,уатПростои.Период) КАК ДатаВремяНачала,
   //|    ЕСТЬNULL(ВыработкаТС_Лес.ДатаВозвращения ,уатПростои.ДатаОкончПростоя) КАК ДатаВремяОкончания,
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП КАК КодОперации,  //д. б. заполнено, иначе сразу после запроса сообщение
   |    ВыработкаТС_Лес.ДатаВыезда       КАК ДатаВремяНачала,
   |    ВыработкаТС_Лес.ДатаВозвращения  КАК ДатаВремяОкончания,
   
   |    ВыработкаТС_Лес.Водитель.Код КАК ТаноВодителя,
   //|    ВыработкаТС_Лес.КоличествоКмГруз + ВыработкаТС_Лес.КоличествоКмПорожний КАК ОбщПробег, //есть выше
   // |    ВыработкаТС_Лес.КоличествоКмГруз КАК ГрПробегОп, //ГрПробегОп !!!
   
   //4) Материалы
   |    уатРасходГСМнаТС.РасходПоФакту КАК РасходТоплива,
   |    уатПервоначальныеСведенияТС.МВЗ,            //д. б. заполнено, иначе сразу после запроса сообщение
   
   //5) Моё
   |    ВыработкаТС_Лес.Организация, //НУЖНО ОБЯЗАТЕЛЬНО ДЛЯ СОРТИРОВКИ
   |    уатПервоначальныеСведенияТС.ОсновноеСредство КАК ОсновноеСредство, //для вывода сообщения о незаполненности КодСАП для авто
   |    ВыработкаТС_Лес.Водитель КАК Водитель,                             //для вывода сообщения о незаполненности ВидРабот путевки
   
   |    ВыработкаТС_Лес.ВидРаботы КАК ВидРаботы,                           //для вывода сообщения
   |    NULL КАК ВидПростоя, //уатПростои.ВидПростоя,                                             //для вывода сообщения
   
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП КАК ВидРаботыКодСАП,              //для вывода сообщения
   |    NULL КАК ВидПростояКодСАП                  //для вывода сообщения  уатПростои.ВидПростоя.КодСАП
   
   //|    ВыработкаТС_Лес.НомерШтатного КАК РабМесто,
   //|    уатПростои.НомерШтатного КАК РабМестоПростоя
   
   //|    СУММА(ВыработкаТС_Лес.КоличествоЧасов) КАК КоличествоЧасов,
   //|    уатПростои.Время КАК ВремяПростоя,
   
   |ИЗ
   |    РегистрНакопления.ВыработкаТС_Лес КАК ВыработкаТС_Лес
   
   //|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС
   //|        ПО ВыработкаТС_Лес.ПутЛист = уатОстаткиГСМнаТС.ПутевойЛист
   //ВыдатьГорючего получим не из уатОстаткиГСМнаТС, а из путевки непосредственно,
   //чтоб количество строк в ТЗ не множилось по кол-ву документов-заправок
   //Пример: ПЛ KOT00000121 от 02.12.2011 - 3 документа заправки
   
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатРасходГСМнаТС КАК уатРасходГСМнаТС
   |        ПО ВыработкаТС_Лес.ПутЛист = уатРасходГСМнаТС.Регистратор
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
   |        ПО ВыработкаТС_Лес.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС КАК уатСчетчикиТС
   |        ПО ВыработкаТС_Лес.ПутЛист = уатСчетчикиТС.Регистратор
   //|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатПростои КАК уатПростои  //Простои из путевых листов
   //|        ПО ВыработкаТС_Лес.ПутЛист = уатПростои.Регистратор
   |ГДЕ
   |    ВыработкаТС_Лес.Период МЕЖДУ &ДатаС И &ДатаПо
   |    И ВыработкаТС_Лес.Активность
   //|    наложить ограничение на ВидПЛ - только сдельный или повременный?
   |";
   Если Организация <> Справочники.Организации.ПустаяСсылка() Тогда
       Запрос.Текст = Запрос.Текст + "
       |    И ВыработкаТС_Лес.Организация = &Организация ";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   |";
   
   Если НомерТранспортноеСредство <> "" Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И ВыработкаТС_Лес.ТС = &ТС";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   
   |";
   
   Если ВидТС_Лес <> Перечисления.ВидыАвтотранспорта.ПустаяСсылка() Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И уатПервоначальныеСведенияТС.ВидТС_Лес = &ВидТС_Лес";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
 |
          |СГРУППИРОВАТЬ ПО
         
          |    ВыработкаТС_Лес.ПутЛист,
          |    ВыработкаТС_Лес.ДатаВыезда,
          |    ВыработкаТС_Лес.ДатаВозвращения,
          |    ВыработкаТС_Лес.ПутЛист.ДатаВыезда,
          |    ВыработкаТС_Лес.ПутЛист.ДатаВозвращения,
          |    ВыработкаТС_Лес.КоличествоКмГруз,
          |    ВыработкаТС_Лес.КоличествоКмПорожний,
          |    ВыработкаТС_Лес.Период,
          |    уатОстаткиГСМнаТС.Количество,  //
          |    уатРасходГСМнаТС.РасходПоФакту,
          |    уатРасходГСМнаТС.ОстатокТопливаВыезд,
          |    уатРасходГСМнаТС.ОстатокТопливаВозврат,
          |    ВыработкаТС_Лес.ПутЛист.Номер,
          |    уатСчетчикиТС.СпНач,
          |    уатСчетчикиТС.Значение,
          |    уатПервоначальныеСведенияТС.МВЗ,
          //|    ВыработкаТС_Лес.НомерШтатного,
          |    уатПервоначальныеСведенияТС.РабочееМесто,
          |    ВыработкаТС_Лес.Водитель.Код,
          |    уатПервоначальныеСведенияТС.КодСАП,
          |    ВыработкаТС_Лес.ПутЛист.ВыпустилМеханик,
          |    уатПростои.Период,
          |    уатПростои.ДатаОкончПростоя,
          |    уатПростои.ВидПростоя,
          |    уатПростои.Время,
          |    уатПростои.НомерШтатного,
           |    ВыработкаТС_Лес.ВидРаботы,
           |    уатПервоначальныеСведенияТС.ОсновноеСредство,
           |    ВыработкаТС_Лес.Водитель,
           |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
           |
   |    ВыработкаТС_Лес.Период ,
   |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
   |   ВыработкаТС_Лес.ПутЛист.Режим_Лес,
   |    ВыработкаТС_Лес.ПутЛист.Номер,
   |    уатСчетчикиТС.СпНач ,
   |    уатСчетчикиТС.Значение ,
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП,
   |    уатПростои.ВидПростоя.КодСАП,  
   |    ВыработкаТС_Лес.Организация    
   
   
   |
   |ОБЪЕДИНИТЬ
   |
   | ВЫБРАТЬ  //Простои путевого листа
   //1) ОбщиеДанные
   |    уатПростои.Регистратор.Дата КАК ДатаДок, //это дата закрытия
   |    уатПростои.Регистратор.ВидПЛ КАК ВидДок,  //для проверки в сообщении ниже запроса
   //|    ВЫБОР
   //|    КОГДА  уатПростои.Регистратор.ВидПЛ = ЗНАЧЕНИЕ(Перечисление.уатВидыПЛ._4С)   ТОГДА
   //|        ВЫБОР
   //|        КОГДА (уатПростои.Регистратор.Режим_Лес = ЗНАЧЕНИЕ(Перечисление.РежимыРаботы_Лес.Режим_67)) ТОГДА
   //|            ВЫБОР КОГДА 7<=ЧАС(уатПростои.Регистратор.ДатаВыезда) и ЧАС(уатПростои.Регистратор.ДатаВыезда)<19 ТОГДА
   //|                ""X""
   //|            ИНАЧЕ
   //|                ""Y""
   //|            КОНЕЦ  
   //|        КОГДА (уатПростои.Регистратор.Режим_Лес = ЗНАЧЕНИЕ(Перечисление.РежимыРаботы_Лес.Режим_19))  ТОГДА
   //|            ВЫБОР КОГДА 8<=ЧАС(уатПростои.Регистратор.ДатаВыезда) и ЧАС(уатПростои.Регистратор.ДатаВыезда)<20 ТОГДА
   //|                ""X""
   //|            ИНАЧЕ
   //|                ""Y""
   //|            КОНЕЦ
   //|        КОНЕЦ
   //|    КОГДА уатПростои.Регистратор.ВидПЛ = ЗНАЧЕНИЕ(Перечисление.уатВидыПЛ._4П) ТОГДА
   //|        ""X""  
   //|    КОНЕЦ КАК СменаXY,
   |    ""Простой"" КАК СменаXY, //""Простой"" - исп-ется для наглядности. не надо: возьмется из путевого листа по его дате, номеру, ВидПЛ<>""Ремонтный лист""
   |    уатПервоначальныеСведенияТС.КодСАП КАК ЕО, //надо для УПОРЯДОЧИТЬ  //не надо:...   д. б. заполнено, иначе сразу после запроса сообщение
   |    NULL КАК РабМесто, //не надо:...   д. б. заполнено, иначе сразу после запроса сообщение
   |    NULL КАК ТаноМеханика,  //не надо:...  
   |    уатПростои.Регистратор.Номер КАК НомерДок,
   
   //2) ПоказателиРаботы
   |    NULL КАК ОбщПробег, //здесь нет  
   |    NULL КАК ГрПробег,  //здесь нет
   //|    КоэфУвелНормы
   |    NULL КАК СпидометрВыезда,  //не надо:...
   |    NULL КАК СпидометрВозвращения,  //не надо:...
   |    NULL КАК ОстатокВыезда, //не надо:...
   |    NULL КАК ОстатокВозвращения, //не надо:...
   |    NULL КАК ВыдатьГорючего,    //не надо:...
   
   //3) Операции ЗДЕСЬ НАДО ТОЛЬКО ЭТО
   |    уатПростои.ВидПростоя.КодСАП КАК КодОперации,  //д. б. заполнено, иначе сразу после запроса сообщение
   |    уатПростои.Период            КАК ДатаВремяНачала,
   |    уатПростои.ДатаОкончПростоя  КАК ДатаВремяОкончания,
   |    уатПростои.Водитель.Код      КАК ТаноВодителя,
   //|    ВыработкаТС_Лес.КоличествоКмГруз + ВыработкаТС_Лес.КоличествоКмПорожний КАК ОбщПробег, //есть выше
   // |    ВыработкаТС_Лес.КоличествоКмГруз КАК ГрПробегОп, //ГрПробегОп !!!
   
   //4) Материалы  //не надо:...
   |    NULL КАК РасходТоплива,
   |    NULL КАК МВЗ,            //д. б. заполнено, иначе сразу после запроса сообщение
   
   //5) Моё
   |    уатПростои.Организация, //НУЖНО ОБЯЗАТЕЛЬНО ДЛЯ СОРТИРОВКИ
   |    NULL                КАК ОсновноеСредство,          //для вывода сообщения о незаполненности КодСАП для авто
   |    уатПростои.Водитель КАК Водитель,                  //для вывода сообщения о незаполненности ВидПростоя
   
   |    NULL     КАК ВидРаботы,                            //для вывода сообщения
   |    уатПростои.ВидПростоя,                             //для вывода сообщения
   
   |    NULL                         КАК ВидРаботыКодСАП,  //для вывода сообщения
   |    уатПростои.ВидПростоя.КодСАП КАК ВидПростояКодСАП  //для вывода сообщения
   
   //|    ВыработкаТС_Лес.НомерШтатного КАК РабМесто,
   //|    уатПростои.НомерШтатного КАК РабМестоПростоя
   
   //|    СУММА(ВыработкаТС_Лес.КоличествоЧасов) КАК КоличествоЧасов,
   //|    уатПростои.Время КАК ВремяПростоя,
   
   |ИЗ   //Простои путевого листа
   |        РегистрНакопления.уатПростои КАК уатПростои  //Простои из путевых листов
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
   |        ПО уатПростои.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство
   
   |ГДЕ
   |    уатПростои.Регистратор.Дата МЕЖДУ &ДатаС И &ДатаПо   //это дата закрытия
   |    И уатПростои.Активность
   //|    наложить ограничение на ВидПЛ - только сдельный или повременный?
   |";
   Если Организация <> Справочники.Организации.ПустаяСсылка() Тогда
       Запрос.Текст = Запрос.Текст + "
       |    И уатПростои.Организация = &Организация ";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   |";
   
   Если НомерТранспортноеСредство <> "" Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И уатПростои.ТС = &ТС";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   
   |";
   
   Если ВидТС_Лес <> Перечисления.ВидыАвтотранспорта.ПустаяСсылка() Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И уатПервоначальныеСведенияТС.ВидТС_Лес = &ВидТС_Лес";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
     |
          |СГРУППИРОВАТЬ ПО
         
          |    ВыработкаТС_Лес.ПутЛист,
          |    ВыработкаТС_Лес.ДатаВыезда,
          |    ВыработкаТС_Лес.ДатаВозвращения,
          |    ВыработкаТС_Лес.ПутЛист.ДатаВыезда,
          |    ВыработкаТС_Лес.ПутЛист.ДатаВозвращения,
          |    ВыработкаТС_Лес.КоличествоКмГруз,
          |    ВыработкаТС_Лес.КоличествоКмПорожний,
          |    ВыработкаТС_Лес.Период,
          |    уатОстаткиГСМнаТС.Количество,
          |    уатРасходГСМнаТС.РасходПоФакту,
          |    уатРасходГСМнаТС.ОстатокТопливаВыезд,
          |    уатРасходГСМнаТС.ОстатокТопливаВозврат,
          |    ВыработкаТС_Лес.ПутЛист.Номер,
          |    уатСчетчикиТС.СпНач,
          |    уатСчетчикиТС.Значение,
          |    уатПервоначальныеСведенияТС.МВЗ,
          //|    ВыработкаТС_Лес.НомерШтатного,
          |    уатПервоначальныеСведенияТС.РабочееМесто,
          |    ВыработкаТС_Лес.Водитель.Код,
          |    уатПервоначальныеСведенияТС.КодСАП,
          |    ВыработкаТС_Лес.ПутЛист.ВыпустилМеханик,
          |    уатПростои.Период,
          |    уатПростои.ДатаОкончПростоя,
          |    уатПростои.ВидПростоя,
          |    уатПростои.Время,
          |    уатПростои.НомерШтатного,
           |    ВыработкаТС_Лес.ВидРаботы,
           |    уатПервоначальныеСведенияТС.ОсновноеСредство,
           |    ВыработкаТС_Лес.Водитель,
           |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
           |
   |    ВыработкаТС_Лес.Период ,
   |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
   |   ВыработкаТС_Лес.ПутЛист.Режим_Лес,
   |    ВыработкаТС_Лес.ПутЛист.Номер,
   |    уатСчетчикиТС.СпНач ,
   |    уатСчетчикиТС.Значение ,
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП,
   |    уатПростои.ВидПростоя.КодСАП,  
   |    ВыработкаТС_Лес.Организация
   
   |
   |ОБЪЕДИНИТЬ
   |
   | ВЫБРАТЬ  //Ремонтный лист
   //1) ОбщиеДанные
   |    ПростоиТС.Период КАК ДатаДок, //это дата закрытия
   |    ""Ремонтный лист"" КАК ВидДок, //для проверки в сообщении ниже запроса
   |    ""X"" КАК СменаXY,
   |    уатПервоначальныеСведенияТС.КодСАП КАК ЕО,             //д. б. заполнено, иначе сразу после запроса сообщение
   |    уатПервоначальныеСведенияТС.РабочееМесто КАК РабМесто, //д. б. заполнено, иначе сразу после запроса сообщение
   |    NULL КАК ТаноМеханика,
   |    ПростоиТС.Регистратор.Номер КАК НомерДок,
   
   //2) ПоказателиРаботы
   |    0 КАК ОбщПробег,
   |    0 КАК ГрПробег,
   //|    КоэфУвелНормы
   |    0 КАК СпидометрВыезда,
   |    0 КАК СпидометрВозвращения,
   |    0 КАК ОстатокВыезда,
   |    0 КАК ОстатокВозвращения,
   |    NULL КАК ВыдатьГорючего, //0
   
   //3) Операции
   |    ПростоиТС.ВидОбслуживания.КодСАП КАК КодОперации,  //д. б. заполнено, иначе сразу после запроса сообщение
   |    ПростоиТС.ДатаНачала     КАК ДатаВремяНачала,    
   |    ПростоиТС.ДатаОкончания  КАК ДатаВремяОкончания,
   |    ПростоиТС.Водитель.Код КАК ТаноВодителя,
   //|    ПростоиТС.КоличествоКмГруз + ПростоиТС.КоличествоКмПорожний КАК ОбщПробег, //есть выше
   // |    ПростоиТС.КоличествоКмГруз КАК ГрПробегОп, //ГрПробегОп !!!
   
   //4) Материалы
   |    0 КАК РасходТоплива,
   |    уатПервоначальныеСведенияТС.МВЗ,            //д. б. заполнено, иначе сразу после запроса сообщение
   
   //5) Моё
   |    ПростоиТС.Организация, //НУЖНО ОБЯЗАТЕЛЬНО ДЛЯ СОРТИРОВКИ
   |    уатПервоначальныеСведенияТС.ОсновноеСредство КАК ОсновноеСредство, //для вывода сообщения о незаполненности КодСАП для авто
   |    ПростоиТС.Водитель КАК Водитель,                             //для вывода сообщения о незаполненности ВидРабот путевки
   
   |    ПростоиТС.ВидОбслуживания КАК ВидРаботы,                           //для вывода сообщения
   |    NULL,                                             //для вывода сообщения
   
   |    ПростоиТС.ВидОбслуживания.КодСАП КАК ВидРаботыКодСАП,              //для вывода сообщения
   |    NULL КАК ВидПростояКодСАП                  //для вывода сообщения
   |ИЗ
   |    РегистрНакопления.ПростоиТС КАК ПростоиТС  //Ремонтный лист
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
   |        ПО ПростоиТС.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство
   |ГДЕ
   |    ПростоиТС.Период МЕЖДУ &ДатаС И &ДатаПо
   |    И ПростоиТС.Активность
   |";
   Если Организация <> Справочники.Организации.ПустаяСсылка() Тогда
       Запрос.Текст = Запрос.Текст + "
       |    И ПростоиТС.Организация = &Организация ";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   |";
   
   Если НомерТранспортноеСредство <> "" Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И ПростоиТС.ТС = &ТС";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   |";
   
   Если ВидТС_Лес <> Перечисления.ВидыАвтотранспорта.ПустаяСсылка() Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И уатПервоначальныеСведенияТС.ВидТС_Лес = &ВидТС_Лес";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
            |
          |СГРУППИРОВАТЬ ПО
         
          |    ВыработкаТС_Лес.ПутЛист,
          |    ВыработкаТС_Лес.ДатаВыезда,
          |    ВыработкаТС_Лес.ДатаВозвращения,
          |    ВыработкаТС_Лес.ПутЛист.ДатаВыезда,
          |    ВыработкаТС_Лес.ПутЛист.ДатаВозвращения,
          |    ВыработкаТС_Лес.КоличествоКмГруз,
          |    ВыработкаТС_Лес.КоличествоКмПорожний,
          |    ВыработкаТС_Лес.Период,
          |    уатОстаткиГСМнаТС.Количество,
          |    уатРасходГСМнаТС.РасходПоФакту,
          |    уатРасходГСМнаТС.ОстатокТопливаВыезд,
          |    уатРасходГСМнаТС.ОстатокТопливаВозврат,
          |    ВыработкаТС_Лес.ПутЛист.Номер,
          |    уатСчетчикиТС.СпНач,
          |    уатСчетчикиТС.Значение,
          |    уатПервоначальныеСведенияТС.МВЗ,
          //|    ВыработкаТС_Лес.НомерШтатного,
          |    уатПервоначальныеСведенияТС.РабочееМесто,
          |    ВыработкаТС_Лес.Водитель.Код,
          |    уатПервоначальныеСведенияТС.КодСАП,
          |    ВыработкаТС_Лес.ПутЛист.ВыпустилМеханик,
          |    уатПростои.Период,
          |    уатПростои.ДатаОкончПростоя,
          |    уатПростои.ВидПростоя,
          |    уатПростои.Время,
          |    уатПростои.НомерШтатного,
           |    ВыработкаТС_Лес.ВидРаботы,
           |    уатПервоначальныеСведенияТС.ОсновноеСредство,
           |    ВыработкаТС_Лес.Водитель,
           |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
           |
   |    ВыработкаТС_Лес.Период ,
   |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
   |   ВыработкаТС_Лес.ПутЛист.Режим_Лес,
   |    ВыработкаТС_Лес.ПутЛист.Номер,
   |    уатСчетчикиТС.СпНач ,
   |    уатСчетчикиТС.Значение ,
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП,
   |    уатПростои.ВидПростоя.КодСАП,  
   |    ВыработкаТС_Лес.Организация
   ////////|    ВыработкаТС_Лес.ВидРаботы КАК ВидРаботы,                           //для вывода сообщения
   ////////|    NULL КАК ВидПростоя, //уатПростои.ВидПростоя,                                             //для вывода сообщения
   ////////
   ////////|    ВыработкаТС_Лес.ВидРаботы.КодСАП КАК ВидРаботыКодСАП,              //для вывода сообщения
   ////////|    NULL КАК ВидПростояКодСАП  
           
           
   |
   |УПОРЯДОЧИТЬ ПО
   //|    НомерДок, СменаXY, ДатаДок //СменаXY перед ДатаДок, //т.к. нужно, чтобы сначала шла строка по ездкам путевого листа, а потом по простоям(погрузка/разгрузка) для вывода секций макета.
     |    Организация, ЕО, ДатаВремяНачала, СменаXY
   |";
   Запрос.УстановитьПараметр("Организация", Организация);
   Запрос.УстановитьПараметр("ДатаС"      , НачалоДня(ДатаС));
   Запрос.УстановитьПараметр("ДатаПо"     , КонецДня(ДатаПо));
   Запрос.УстановитьПараметр("ТС"         , ТранспортноеСредство);  //НомерТранспортноеСредство
   Запрос.УстановитьПараметр("ВидТС_Лес"  , ВидТС_Лес);  //Перечисления.ВидыАвтотранспорта.Грузовой
   ТЗ = Запрос.Выполнить().Выгрузить();
10 Adgjj
 
06.07.12
16:15
т.е. при таком размере при использовании (6) наверно немногим короче будет
11 Adgjj
 
06.07.12
16:20
12 Adgjj
 
06.07.12
16:20
13 Ненавижу 1С
 
гуру
06.07.12
16:21
(12) ну значит нет такого поля
14 Adgjj
 
06.07.12
16:23
пока сумму и упорядочить не писала было
15 Adgjj
 
06.07.12
16:23
//|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС
   //|        ПО ВыработкаТС_Лес.ПутЛист = уатОстаткиГСМнаТС.ПутевойЛист
забыла раскомментировать
16 Ненавижу 1С
 
гуру
06.07.12
16:24
(15) фото не хватает
17 Adgjj
 
09.07.12
15:19
Фото рано, задача не работает, т.е. нет группировки по полю Количество регистра уатОстаткиГСМнаТС((

Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ //Путевой лист и Простои из него
   //1) ОбщиеДанные
   //|    ВыработкаТС_Лес.Период КАК ДатаДок, //это дата закрытия     ДатаВыезда
   |    ВыработкаТС_Лес.ПутЛист КАК ДОКУМЕНТ, //для определения того, что ездки относятся к одному ПутЛист
   |    ВыработкаТС_Лес.ПутЛист.ВидПЛ КАК ВидДок,  //для проверки в сообщении ниже запроса
   |    ВЫБОР
   |    КОГДА  ВыработкаТС_Лес.ПутЛист.ВидПЛ = ЗНАЧЕНИЕ(Перечисление.уатВидыПЛ._4С)   ТОГДА
   |        ВЫБОР
   |        КОГДА (ВыработкаТС_Лес.ПутЛист.Режим_Лес = ЗНАЧЕНИЕ(Перечисление.РежимыРаботы_Лес.Режим_67)) ТОГДА
   |            ВЫБОР КОГДА 7<=ЧАС(ВыработкаТС_Лес.ДатаВыезда) и ЧАС(ВыработкаТС_Лес.ДатаВыезда)<19 ТОГДА
   |                ""X""
   |            ИНАЧЕ
   |                ""Y""
   |            КОНЕЦ  
   |        КОГДА (ВыработкаТС_Лес.ПутЛист.Режим_Лес = ЗНАЧЕНИЕ(Перечисление.РежимыРаботы_Лес.Режим_19))  ТОГДА
   |            ВЫБОР КОГДА 8<=ЧАС(ВыработкаТС_Лес.ДатаВыезда) и ЧАС(ВыработкаТС_Лес.ДатаВыезда)<20 ТОГДА
   |                ""X""
   |            ИНАЧЕ
   |                ""Y""
   |            КОНЕЦ
   |        КОНЕЦ
   |    КОГДА ВыработкаТС_Лес.ПутЛист.ВидПЛ = ЗНАЧЕНИЕ(Перечисление.уатВидыПЛ._4П) ТОГДА
   |        ""X""  
   |    КОНЕЦ КАК СменаXY,
   |    уатПервоначальныеСведенияТС.КодСАП КАК ЕО,             //д. б. заполнено, иначе сразу после запроса сообщение
   |    уатПервоначальныеСведенияТС.РабочееМесто КАК РабМесто, //д. б. заполнено, иначе сразу после запроса сообщение
   |    ""60"" + ВыработкаТС_Лес.ПутЛист.ВыпустилМеханик.Код КАК ТаноМеханика,
   |    ВыработкаТС_Лес.ПутЛист.Номер КАК НомерДок,
   
   //2) ПоказателиРаботы
   |    ВыработкаТС_Лес.КоличествоКмГруз + ВыработкаТС_Лес.КоличествоКмПорожний КАК ОбщПробег,
   |    ВыработкаТС_Лес.КоличествоКмГруз КАК ГрПробег,
   //|    КоэфУвелНормы
   |    уатСчетчикиТС.СпНач КАК СпидометрВыезда,
   |    уатСчетчикиТС.Значение КАК СпидометрВозвращения,
   |    уатРасходГСМнаТС.ОстатокТопливаВыезд КАК ОстатокВыезда,
   |    уатРасходГСМнаТС.ОстатокТопливаВозврат КАК ОстатокВозвращения,
   |    СУММА(уатОстаткиГСМнаТС.Количество) КАК ВыдатьГорючего,
   
   //3) Операции
   //|    ЕСТЬNULL(ВыработкаТС_Лес.ВидРаботы.КодСАП,уатПростои.ВидПростоя.КодСАП) КАК КодОперации,  //д. б. заполнено, иначе сразу после запроса сообщение
   //|    ЕСТЬNULL(ВыработкаТС_Лес.ДатаВыезда      ,уатПростои.Период) КАК ДатаВремяНачала,
   //|    ЕСТЬNULL(ВыработкаТС_Лес.ДатаВозвращения ,уатПростои.ДатаОкончПростоя) КАК ДатаВремяОкончания,
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП КАК КодОперации,  //д. б. заполнено, иначе сразу после запроса сообщение
   |    ВыработкаТС_Лес.ДатаВыезда       КАК ДатаВремяНачала,
   |    ВыработкаТС_Лес.ДатаВозвращения  КАК ДатаВремяОкончания,
   
   |    ВыработкаТС_Лес.Водитель.Код КАК ТаноВодителя,
   //|    ВыработкаТС_Лес.КоличествоКмГруз + ВыработкаТС_Лес.КоличествоКмПорожний КАК ОбщПробег, //есть выше
   // |    ВыработкаТС_Лес.КоличествоКмГруз КАК ГрПробегОп, //ГрПробегОп !!!
   
   //4) Материалы
   |    уатРасходГСМнаТС.РасходПоФакту КАК РасходТоплива,
   |    уатПервоначальныеСведенияТС.МВЗ,            //д. б. заполнено, иначе сразу после запроса сообщение
   
   //5) Моё
   |    ВыработкаТС_Лес.Организация, //НУЖНО ОБЯЗАТЕЛЬНО ДЛЯ СОРТИРОВКИ
   |    уатПервоначальныеСведенияТС.ОсновноеСредство КАК ОсновноеСредство, //для вывода сообщения о незаполненности КодСАП для авто
   |    ВыработкаТС_Лес.Водитель КАК Водитель,                             //для вывода сообщения о незаполненности ВидРабот путевки
   
   |    ВыработкаТС_Лес.ВидРаботы КАК ВидРаботы,                           //для вывода сообщения
   |    NULL КАК ВидПростоя, //уатПростои.ВидПростоя,                                             //для вывода сообщения
   
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП КАК ВидРаботыКодСАП,              //для вывода сообщения
   |    NULL КАК ВидПростояКодСАП                  //для вывода сообщения  уатПростои.ВидПростоя.КодСАП
   
   //|    ВыработкаТС_Лес.НомерШтатного КАК РабМесто,
   //|    уатПростои.НомерШтатного КАК РабМестоПростоя
   
   //|    СУММА(ВыработкаТС_Лес.КоличествоЧасов) КАК КоличествоЧасов,
   //|    уатПростои.Время КАК ВремяПростоя,
   
   |ИЗ
   |    РегистрНакопления.ВыработкаТС_Лес КАК ВыработкаТС_Лес
   
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС
   |        ПО ВыработкаТС_Лес.ПутЛист = уатОстаткиГСМнаТС.ПутевойЛист
   //ВыдатьГорючего получим не из уатОстаткиГСМнаТС, а из путевки непосредственно,
   //чтоб количество строк в ТЗ не множилось по кол-ву документов-заправок
   //Пример: ПЛ KOT00000121 от 02.12.2011 - 3 документа заправки
   
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатРасходГСМнаТС КАК уатРасходГСМнаТС
   |        ПО ВыработкаТС_Лес.ПутЛист = уатРасходГСМнаТС.Регистратор
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
   |        ПО ВыработкаТС_Лес.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС КАК уатСчетчикиТС
   |        ПО ВыработкаТС_Лес.ПутЛист = уатСчетчикиТС.Регистратор
   //|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатПростои КАК уатПростои  //Простои из путевых листов
   //|        ПО ВыработкаТС_Лес.ПутЛист = уатПростои.Регистратор
   |ГДЕ
   |    ВыработкаТС_Лес.Период МЕЖДУ &ДатаС И &ДатаПо
   |    И ВыработкаТС_Лес.Активность
   //|    наложить ограничение на ВидПЛ - только сдельный или повременный?
   |";
   Если Организация <> Справочники.Организации.ПустаяСсылка() Тогда
       Запрос.Текст = Запрос.Текст + "
       |    И ВыработкаТС_Лес.Организация = &Организация ";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   |";
   
   Если НомерТранспортноеСредство <> "" Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И ВыработкаТС_Лес.ТС = &ТС";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   
   |";
   
   Если ВидТС_Лес <> Перечисления.ВидыАвтотранспорта.ПустаяСсылка() Тогда  
       Запрос.Текст = Запрос.Текст + "
       |    И уатПервоначальныеСведенияТС.ВидТС_Лес = &ВидТС_Лес";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + "
   |
   |СГРУППИРОВАТЬ ПО
   |    ВыработкаТС_Лес.ПутЛист,
   |    ВыработкаТС_Лес.ДатаВыезда,
   |    ВыработкаТС_Лес.ДатаВозвращения,
   |    ВыработкаТС_Лес.ПутЛист.ДатаВыезда,
   |    ВыработкаТС_Лес.ПутЛист.ДатаВозвращения,
   |    ВыработкаТС_Лес.КоличествоКмГруз,
   |    ВыработкаТС_Лес.КоличествоКмПорожний,
   |    ВыработкаТС_Лес.Период,
   |    уатОстаткиГСМнаТС.Количество,  //
   |    уатРасходГСМнаТС.РасходПоФакту,
   |    уатРасходГСМнаТС.ОстатокТопливаВыезд,
   |    уатРасходГСМнаТС.ОстатокТопливаВозврат,
   |    ВыработкаТС_Лес.ПутЛист.Номер,
   |    уатСчетчикиТС.СпНач,
   |    уатСчетчикиТС.Значение,
   |    уатПервоначальныеСведенияТС.МВЗ,
   |    уатПервоначальныеСведенияТС.РабочееМесто,
   |    ВыработкаТС_Лес.Водитель.Код,
   |    уатПервоначальныеСведенияТС.КодСАП,
   |    ВыработкаТС_Лес.ПутЛист.ВыпустилМеханик,
   |    ВыработкаТС_Лес.ВидРаботы,
   |    уатПервоначальныеСведенияТС.ОсновноеСредство,
   |    ВыработкаТС_Лес.Водитель,
   |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
   |
   |    ВыработкаТС_Лес.Период ,
   |    ВыработкаТС_Лес.ПутЛист.ВидПЛ,
   |   ВыработкаТС_Лес.ПутЛист.Режим_Лес,
   |    ВыработкаТС_Лес.ПутЛист.Номер,
   |    уатСчетчикиТС.СпНач ,
   |    уатСчетчикиТС.Значение ,
   |    ВыработкаТС_Лес.ВидРаботы.КодСАП,
   |    ВыработкаТС_Лес.Организация
18 Adgjj
 
09.07.12
15:22
три выводимые строки отличаются только значением колонки Количество
19 proger2011
 
09.07.12
15:27
(17) Этот запрос я так понял тут периодический мелькает раз в месяц. Я помню эти X Y ... в запросе.
20 izekia
 
09.07.12
15:28
о боже мой
21 izekia
 
09.07.12
15:28
да, про уат
22 izekia
 
09.07.12
15:30
давай скриншоты регистров и что нужно
23 Aprobator
 
09.07.12
15:32
(5) нефига себе. В СГРУППИРОВАТЬ то Количество за что?
24 izekia
 
09.07.12
15:33
(23) иногда бывает нужно и так
25 Adgjj
 
09.07.12
15:36
(23) ок, спасибо)))
26 Aprobator
 
09.07.12
15:36
(24) ну не одновременно же и в сумму и в сгруппировать.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс