Имя: Пароль:
1C
1С v8
Остатки на разные даты
0 Oz11
 
04.10.11
15:28
Необходимо из регистра Партии товаров на складах вытянуть остатки и стоимости товаров на 2е разные даты. подскажите как это реализовать.
1 PR
 
04.10.11
15:29
Запросом
2 shuhard
 
04.10.11
15:31
(0) запрос
в нем дважды остатки + объединить все
3 Oz11
 
04.10.11
16:04
ВЫБРАТЬ
   ЕСТЬNULL(Остатки.Склад1, Остатки.Склад2) КАК Склад,
   ЕСТЬNULL(Остатки.Номенклатура1, Остатки.Номенклатура2) КАК Автомобиль,
   ЕСТЬNULL(Остатки.КоличествоОстаток1, "0") КАК ОстатокНач,
   ЕСТЬNULL(Остатки.СтоимостьОстаток1, "0.00") КАК СтоимостьНач,
   ЕСТЬNULL(Остатки.КоличествоОстаток2, "0") КАК ОстатокКон,
   ЕСТЬNULL(Остатки.СтоимостьОстаток2, "0.00") КАК СтоимостьКон
ИЗ
   (ВЫБРАТЬ
       ПартииТоваровНаСкладахОстатки.Склад.НаименованиеАнгл КАК Склад1,
       NULL КАК Склад2,
       ПартииТоваровНаСкладахОстатки.Номенклатура КАК Номенклатура1,
       NULL КАК Номенклатура2,
       ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток1,
       NULL КАК КоличествоОстаток2,
       ПартииТоваровНаСкладахОстатки.СтоимостьОстаток КАК СтоимостьОстаток1,
       NULL КАК СтоимостьОстаток2
   ИЗ
       РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаНачала, ) КАК ПартииТоваровНаСкладахОстатки
   ГДЕ
       ПартииТоваровНаСкладахОстатки.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
       
   ОБЪЕДИНИТЬ ВСЕ

   ВЫБРАТЬ
       NULL КАК Склад1,
       ПартииТоваровНаСкладахОстатки1.Склад.НаименованиеАнгл КАК Склад2,
       NULL КАК Номенклатура1,
       ПартииТоваровНаСкладахОстатки1.Номенклатура КАК Номенклатура2,
       NULL КАК КоличествоОстаток1,
       ПартииТоваровНаСкладахОстатки1.КоличествоОстаток КАК КоличествоОстаток2,
       NULL КАК СтоимостьОстаток1,
       ПартииТоваровНаСкладахОстатки1.СтоимостьОстаток КАК СтоимостьОстаток2
   ИЗ
       РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКонца, ) КАК ПартииТоваровНаСкладахОстатки1
   ГДЕ
       ПартииТоваровНаСкладахОстатки1.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры) КАК Остатки
Делаю так, записи в выборке двоятся.
4 shuhard
 
04.10.11
16:05
(0)[записи в выборке двоятся.]
ты просил остатки на две разные даты,
получил две строки на каждый товар
5 Amiralnar
 
04.10.11
16:09
Объединение, группировка, максимум.
6 Oz11
 
04.10.11
16:17
блин, не въеду как это провернуть. делаю на СКД, группирую по складу, а в нем по детальным записям.
7 Oz11
 
04.10.11
16:33
удалось, вот код. может для кого-то будет полезен.
ВЫБРАТЬ
   Группа.Склад КАК Склад,
   Группа.Автомобиль КАК Автомобиль,
   (ВЫБОР
       КОГДА Группа.ОстатокНач = 0
           ТОГДА "0"
       ИНАЧЕ Группа.ОстатокНач
   КОНЕЦ) КАК ОстатокНач,
   (ВЫБОР
       КОГДА Группа.СтоимостьНач = 0
           ТОГДА "0.00"
       ИНАЧЕ Группа.СтоимостьНач
   КОНЕЦ) КАК СтоимостьНач,
   (ВЫБОР
       КОГДА Группа.ОстатокКон = 0
           ТОГДА "0"
       ИНАЧЕ Группа.ОстатокКон
   КОНЕЦ) КАК ОстатокКон,
   (ВЫБОР
       КОГДА Группа.СтоимостьКон = 0
           ТОГДА "0.00"
       ИНАЧЕ Группа.СтоимостьКон
   КОНЕЦ) КАК СтоимостьКон    
ИЗ
   (ВЫБРАТЬ
       ЕСТЬNULL(Остатки.Склад1, Остатки.Склад2) КАК Склад,
       ЕСТЬNULL(Остатки.Номенклатура1, Остатки.Номенклатура2) КАК Автомобиль,
       СУММА(ЕСТЬNULL(Остатки.КоличествоОстаток1, 0)) КАК ОстатокНач,
       СУММА(ЕСТЬNULL(Остатки.СтоимостьОстаток1, 0)) КАК СтоимостьНач,
       СУММА(ЕСТЬNULL(Остатки.КоличествоОстаток2, 0)) КАК ОстатокКон,
       СУММА(ЕСТЬNULL(Остатки.СтоимостьОстаток2, 0)) КАК СтоимостьКон
   ИЗ
       (ВЫБРАТЬ
           ПартииТоваровНаСкладахОстатки.Склад.НаименованиеАнгл КАК Склад1,
           NULL КАК Склад2,
           ПартииТоваровНаСкладахОстатки.Номенклатура КАК Номенклатура1,
           NULL КАК Номенклатура2,
           ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток1,
           NULL КАК КоличествоОстаток2,
           ПартииТоваровНаСкладахОстатки.СтоимостьОстаток КАК СтоимостьОстаток1,
           NULL КАК СтоимостьОстаток2
       ИЗ
           РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаНачала, ) КАК ПартииТоваровНаСкладахОстатки
       ГДЕ
           ПартииТоваровНаСкладахОстатки.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           NULL,
           ПартииТоваровНаСкладахОстатки1.Склад.НаименованиеАнгл,
           NULL,
           ПартииТоваровНаСкладахОстатки1.Номенклатура,
           NULL,
           ПартииТоваровНаСкладахОстатки1.КоличествоОстаток,
           NULL,
           ПартииТоваровНаСкладахОстатки1.СтоимостьОстаток
       ИЗ
           РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКонца, ) КАК ПартииТоваровНаСкладахОстатки1
       ГДЕ
           ПартииТоваровНаСкладахОстатки1.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры) КАК Остатки

   СГРУППИРОВАТЬ ПО
       ЕСТЬNULL(Остатки.Номенклатура1, Остатки.Номенклатура2),
       ЕСТЬNULL(Остатки.Склад1, Остатки.Склад2)) КАК Группа
Независимо от того, куда вы едете — это в гору и против ветра!