Имя: Пароль:
1C
1С v8
Виртуальная таблица остаткииобороты
,
0 Путник_М
 
29.03.12
15:10
Добрый день! Как заставить виртуальную таблицу остаткииобороты регистра накопления  выдавать  остатки на каждый день из заданного периода независимо от того было в день движение или нет?
1 Путник_М
 
29.03.12
15:10
ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Склад,
   ТоварыНаСкладахОстаткиИОбороты.Период,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
   ВЫБОР
       КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток > 10
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК ПризнакПривышенияЛимита
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
           &Нач,
           &Кон,
           День,
           ,
           Склад.ТипСклада = ЗНАЧЕНИЕ(Справочник.ТипыСкладов.Ремонт)
               ИЛИ Склад.ТипСклада = ЗНАЧЕНИЕ(Справочник.ТипыСкладов.РекламацияРемонт)) КАК ТоварыНаСкладахОстаткиИОбороты
2 Deon
 
29.03.12
15:11
По-моему никак. Надо с табличкой со списком дат объединять. Но я могу и ошибаться
3 Путник_М
 
29.03.12
15:11
Мне нужно подсчитать сколько дней из периода было превышение лимита (КАК ПризнакПривышенияЛимита)
4 rs_trade
 
29.03.12
15:13
(3) соединяй со смписком дат на каждый день и считай
5 Fragster
 
гуру
29.03.12
15:13
(3) а зачем для этого знать каждый день, когда оно было? мы знаем, когда оно появилось, знаем, когда пропало, получаем разность дат...
6 Fragster
 
гуру
29.03.12
15:13
(4) нафига?
7 Путник_М
 
29.03.12
15:13
(2) Короче мудрить надо
8 Deon
 
29.03.12
15:13
(3) И сделать это нужно одним запросом для красоты исполнения?
9 Путник_М
 
29.03.12
15:14
(8) да
10 Deon
 
29.03.12
15:14
Задача-то популярная: Определить кол-во дней, когда товар был на складе.
11 Путник_М
 
29.03.12
15:15
(5) Да буду мудрить
12 Путник_М
 
29.03.12
15:16
(10) Типа, только заданный лимит
13 Fragster
 
гуру
29.03.12
15:19
500 рублей мне и можно не мудрить
14 Deon
 
29.03.12
15:24
(13) Одним запросом без объединений? )
15 Путник_М
 
29.03.12
15:24
(14) Ага
16 Путник_М
 
29.03.12
15:25
(13) Спасибо за предложение... Сам щя сделаю из любви к искусству
17 Deon
 
29.03.12
15:25
(14) без *соединений
18 ssh2006
 
29.03.12
15:25
(0) вот в помощь пример. Подсчитывается какое количество и какой период находился товар в резерве. Про разность дат уже писали

ВЫБРАТЬ
   ТоварыВРезервеНаСкладахОстаткиИОбороты.Период,
   ТоварыВРезервеНаСкладахОстаткиИОбороты.ДокументРезерва КАК ЗаказПокупателя,
   ТоварыВРезервеНаСкладахОстаткиИОбороты.Номенклатура,
   ТоварыВРезервеНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
   ТоварыВРезервеНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
   ТоварыВРезервеНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ Таб1
ИЗ
   РегистрНакопления.ТоварыВРезервеНаСкладах.ОстаткиИОбороты(&НачалоПериода, ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, 1), День, ДвиженияИГраницыПериода, ДокументРезерва ССЫЛКА Документ.ЗаказПокупателя {(ДокументРезерва) КАК ЗаказПокупателя, (Номенклатура) КАК Номенклатура, (ДокументРезерва.Контрагент) КАК Контрагент, (ДокументРезерва.Контрагент.ОсновнойМенеджерПокупателя) КАК ОсновнойМенеджерПокупателя}) КАК ТоварыВРезервеНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Таб1.ЗаказПокупателя,
   Таб1.Номенклатура,
   Таб1.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   Таб1.Период КАК ПериодС,
   МИНИМУМ(Таб11.Период) КАК ПериодДо,
   Таб1.КоличествоКонечныйОстаток КАК Количество
ПОМЕСТИТЬ Таб2
ИЗ
   Таб1 КАК Таб1
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб1 КАК Таб11
       ПО Таб1.Номенклатура = Таб11.Номенклатура
           И Таб1.ХарактеристикаНоменклатуры = Таб11.ХарактеристикаНоменклатуры
           И Таб1.Период < Таб11.Период
           И Таб1.ЗаказПокупателя = Таб11.ЗаказПокупателя

СГРУППИРОВАТЬ ПО
   Таб1.Номенклатура,
   Таб1.ХарактеристикаНоменклатуры,
   Таб1.Период,
   Таб1.КоличествоКонечныйОстаток,
   Таб1.ЗаказПокупателя
19 Путник_М
 
29.03.12
15:28
(18) Спасибо пригодится!))
20 Fragster
 
гуру
29.03.12
15:29
(14)(17) с соединениями, но без таблиц даты
21 Deon
 
29.03.12
15:32
(20) Как в (18) Соединением таблицы к самой себе?
22 Fragster
 
гуру
29.03.12
15:33
(21) ну, типа того
23 Sandy_S
 
29.03.12
15:34
v8: Получение в запросе всех периодов из указанного интервала...
24 Sandy_S
 
29.03.12
15:35
25 Fragster
 
гуру
29.03.12
15:35
(24) для решения задачи не нужна таблица со всеми периодами указанного интервала.
26 Deon
 
29.03.12
15:37
Блин, хочу без соединений, но видимо никак )
27 Путник_М
 
30.03.12
11:45
Приветствую! Всем спасибо получилось!
Сделал вот так:

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

СГРУППИРОВАТЬ ПО
   ВложенныйЗапрос1.Склад
;
28 Fragster
 
гуру
30.03.12
11:50
(27) жесть
Закон Брукера: Даже маленькая практика стоит большой теории.