Имя: Пароль:
1C
1С v8
Нужна помощь с запросом
0 Пип Пибип
 
05.04.12
14:42
День добрый, господа

База УТ 10.3, Платформа 8.2.х
Есть следующий запрос:



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



Подскажите, как мне в итоговый вывод добавить еще одно поле - дату максимального (по дате, то есть, самого последнего) регистратора для партии соответствующей? Не дату ДокументОприходования, а именно дату регистратора? Учитывая то, что во вложенной таблице Остатки используется регистр ПартииТоваровНаСкладах.Остатки
1 Пип Пибип
 
05.04.12
14:50
ап
2 Пип Пибип
 
05.04.12
14:55
апп
3 ssh2006
 
05.04.12
14:58
(2) такая простыня, кто в ней будет разбираться?
4 Пип Пибип
 
05.04.12
15:02
Согласен. Тогда вот запрос, чуть короче:



ВЫБРАТЬ
   ОстаткиПоПериодам.Склад КАК Склад,
   ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Склад) КАК СкладПредставление,
   ОстаткиПоПериодам.Номенклатура КАК Номенклатура,
   ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Номенклатура) КАК НоменклатураПредставление,
   ОстаткиПоПериодам.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление,
   ОстаткиПоПериодам.СерияНоменклатуры КАК СерияНоменклатуры,
   ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.СерияНоменклатуры) КАК СерияНоменклатурыПредставление,
   ОстаткиПоПериодам.ДокументОприходования,
   ОстаткиПоПериодам.ДокументОприходования.ВалютаДокумента КАК ВалютаОприходования,
   ОстаткиПоПериодам.ОстатокКонечный0 КАК ОстатокКонечный,
   ОстаткиПоПериодам.ОстатокСтоимость0 КАК ОстатокСтоимость,
   ОстаткиПоПериодам.ОстатокКонечный0 - ОстаткиПоПериодам.ОстатокКонечный1 КАК ОстатокПериода1,
   ОстаткиПоПериодам.ОстатокСтоимость0 - ОстаткиПоПериодам.ОстатокСтоимость1 КАК СтоимостьПериода1
ИЗ
   (ВЫБРАТЬ
       ОстатокИОбороты.Склад КАК Склад,
       ОстатокИОбороты.Номенклатура КАК Номенклатура,
       ОстатокИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
       ОстатокИОбороты.СерияНоменклатуры КАК СерияНоменклатуры,
       ОстатокИОбороты.ОстатокКонечный0 КАК ОстатокКонечный0,
       ОстатокИОбороты.ОстатокСтоимость0 КАК ОстатокСтоимость0,
       ОстатокИОбороты.ДокументОприходования КАК ДокументОприходования,
       ВЫБОР
           КОГДА ОстатокИОбороты.ОстатокКонечный0 - ОстатокИОбороты.УвеличениеОстатка1 > 0
               ТОГДА ОстатокИОбороты.ОстатокКонечный0 - ОстатокИОбороты.УвеличениеОстатка1
           ИНАЧЕ 0
       КОНЕЦ КАК ОстатокКонечный1,
       ВЫБОР
           КОГДА ОстатокИОбороты.ОстатокКонечный0 - ОстатокИОбороты.УвеличениеОстатка1 > 0
               ТОГДА ОстатокИОбороты.ОстатокСтоимость0 - ОстатокИОбороты.УвеличениеСтоимость1
           ИНАЧЕ 0
       КОНЕЦ КАК ОстатокСтоимость1
   ИЗ
       (ВЫБРАТЬ
           Остатки.Склад КАК Склад,
           Остатки.Номенклатура КАК Номенклатура,
           Остатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
           Остатки.СерияНоменклатуры КАК СерияНоменклатуры,
           Остатки.ОстатокКонечный0 КАК ОстатокКонечный0,
           Остатки.ОстатокСтоимость0 КАК ОстатокСтоимость0,
           Остатки.ДокументОприходования КАК ДокументОприходования,
           ЕСТЬNULL(Обороты1.УвеличениеОстатка1, 0) КАК УвеличениеОстатка1,
           ЕСТЬNULL(Обороты1.УвеличениеСтоимость1, 0) КАК УвеличениеСтоимость1
       ИЗ
           (ВЫБРАТЬ
               ПартииТоваровНаСкладах.Склад КАК Склад,
               ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура,
               ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
               ПартииТоваровНаСкладах.СерияНоменклатуры КАК СерияНоменклатуры,
               ПартииТоваровНаСкладах.КоличествоОстаток КАК ОстатокКонечный0,
               ПартииТоваровНаСкладах.СтоимостьОстаток КАК ОстатокСтоимость0,
               ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования
           ИЗ
               РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаОстатков, ) КАК ПартииТоваровНаСкладах
           ГДЕ
               ПартииТоваровНаСкладах.КоличествоОстаток > 0) КАК Остатки
               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   ТоварыНаСкладахОбороты.Склад КАК Склад,
                   ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
                   ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                   ТоварыНаСкладахОбороты.СерияНоменклатуры КАК СерияНоменклатуры,
                   ВЫБОР
                       КОГДА ТоварыНаСкладахОбороты.КоличествоПриход > 0
                           ТОГДА ТоварыНаСкладахОбороты.КоличествоПриход
                       ИНАЧЕ 0
                   КОНЕЦ - ВЫБОР
                       КОГДА ТоварыНаСкладахОбороты.КоличествоРасход < 0
                           ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход
                       ИНАЧЕ 0
                   КОНЕЦ КАК УвеличениеОстатка1,
                   ВЫБОР
                       КОГДА ТоварыНаСкладахОбороты.КоличествоПриход > 0
                           ТОГДА ТоварыНаСкладахОбороты.СтоимостьПриход
                       ИНАЧЕ 0
                   КОНЕЦ - ВЫБОР
                       КОГДА ТоварыНаСкладахОбороты.КоличествоРасход < 0
                           ТОГДА ТоварыНаСкладахОбороты.СтоимостьРасход
                       ИНАЧЕ 0
                   КОНЕЦ КАК УвеличениеСтоимость1
               ИЗ
                   РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&НачалоИнтервала1, &КонецИнтервала1, , ) КАК ТоварыНаСкладахОбороты) КАК Обороты1
               ПО Остатки.Склад = Обороты1.Склад
                   И Остатки.Номенклатура = Обороты1.Номенклатура
                   И Остатки.ХарактеристикаНоменклатуры = Обороты1.ХарактеристикаНоменклатуры
                   И Остатки.СерияНоменклатуры = Обороты1.СерияНоменклатуры) КАК ОстатокИОбороты) КАК ОстаткиПоПериодам
ИТОГИ
   СУММА(ОстатокКонечный),
   СУММА(ОстатокСтоимость),
   СУММА(ОстатокПериода1),
   СУММА(СтоимостьПериода1)
ПО
   ОБЩИЕ
5 Пип Пибип
 
05.04.12
15:07
Тогда вот так:



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