Имя: Пароль:
1C
1С v8
Запрос Продажи за предыдущие 30 дней на каждый день
, ,
0 kn
 
01.12.11
17:11
Как написать такой запрос,подскажите идею или где посмотреть что-нибудь похожее
т.е
01.01.11  - продажи за 02.12.10-31.12.10
02.01.11 - продажи за 03.12.10-01.01.11
и т.д.
1 Ненавижу 1С
 
гуру
01.12.11
17:14
берешь ВТ оборотов регистра продаж за (Дата1-30, Дата2-30) с периодичностью день...
2 Buster007
 
01.12.11
17:15
обсуждалось пиццот раз
3 kn
 
01.12.11
17:16
(1)а Дата1,Дата2 что?
(2)не пробегало на моих глазах такого, кинь ссылку если не трудно
4 pumbaEO
 
01.12.11
17:21
1С нарастающие итоги - в яндексе.
5 kn
 
01.12.11
17:25
верю что вот так (1),спасибо.
6 Ненавижу 1С
 
гуру
01.12.11
17:32
(3) параметры
7 kn
 
01.12.11
17:35
понятно, просто ведь.
8 kn
 
01.12.11
17:38
а вто сложней вопрос - как сюда прикрутить дебиторскую задолженность на день(учет по документам расчета установлен в УТ 10.3)
9 kn
 
01.12.11
18:27
возвращаясь к сабжу, замечу что (1) не то
(4)но надо ведь не нарастающие итоги.
10 pumbaEO
 
01.12.11
18:28
11 kn
 
01.12.11
18:40
(10)дебиторка пока подождет, а продажи интересуют т.к нет идеи решения.
12 pumbaEO
 
01.12.11
18:45
Ок я приведу ссылку Книга знаний: v8: Полные остатки по периоду во вложенном запросе по начальному остатку
Там в запросе вы получаете список дат... есть ДОБАВИТЬКДАТЕ что вам мешает выбрать из оборотов по регистру Продажи?
13 kn
 
01.12.11
19:47
спасибо за ссылки, пробую, но смысл еще не улавливаю.
14 pumbaEO
 
01.12.11
19:58
Там смысл долго надо улавливать, я в первой только через часа 3 понял, это с разбивкой на подзапросы и т.д. Запрос у вас есть, консоль запросов в руки и разбиваем на части смотрим и ищем просветления...
15 АйЭм
 
01.12.11
20:01
Знатная хоботня.
16 kn
 
02.12.11
13:45
не получается.запрос ниже выводит обороты за каждый день, а мне надо за 30 предыдущих, как такое организовать?

ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, РазностьДат.НомерДняИзДиапазона) КАК Период,
   ТоварыНаСкладах.СтоимостьОборот,
   РазностьДат.НомерДняИзДиапазона
ИЗ
   (ВЫБРАТЬ
       МАКСИМУМ(ЗапросДатаС.ДатаС) КАК ДатаС,
       ЗапросДатаПо.ДатаПо КАК ДатаПо,
       ЗапросДатаПо.СтоимостьОборот КАК СтоимостьОборот
   ИЗ
       (ВЫБРАТЬ
           КОНЕЦПЕРИОДА(ПродажиОбороты.Период, ДЕНЬ) КАК ДатаПо,
           ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
       ИЗ
           РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ПродажиОбороты) КАК ЗапросДатаПо
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               ПродажиОбороты.Период КАК ДатаС
           ИЗ
               РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ПродажиОбороты) КАК ЗапросДатаС
           ПО (ЗапросДатаС.ДатаС < ЗапросДатаПо.ДатаПо)
   
   СГРУППИРОВАТЬ ПО
       ЗапросДатаПо.ДатаПо,
       ЗапросДатаПо.СтоимостьОборот) КАК ТоварыНаСкладах
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерДняИзДиапазона
       ИЗ
           (ВЫБРАТЬ
               0 КАК a
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК aa
               ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   0 КАК b
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   1
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   2
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   3
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   4
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   5
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   6
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   7
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   8
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   9) КАК bb
               ПО (ИСТИНА)
               ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   0 КАК c
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   1
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   2
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   3
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   4
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   5
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   6
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   7
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   8
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   9) КАК cc
               ПО (ИСТИНА)
               ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   0 КАК d
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   1
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   2
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   3
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   4
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   5
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   6
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   7
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   8
               
               ОБЪЕДИНИТЬ
               
               ВЫБРАТЬ
                   9) КАК dd
               ПО (ИСТИНА)
       ГДЕ
           aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= &КолДнейМеждуДатами) КАК РазностьДат
       ПО (ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, РазностьДат.НомерДняИзДиапазона) МЕЖДУ ТоварыНаСкладах.ДатаС И ТоварыНаСкладах.ДатаПо)

УПОРЯДОЧИТЬ ПО
   Период
17 kn
 
02.12.11
14:14
вверх
18 Ненавижу 1С
 
гуру
02.12.11
14:18
(9) почему (1) ЭТО НЕ ТО?
19 kn
 
02.12.11
14:21
Там тоже продажи разворачиваются до дня и ЗА ДЕНЬ, единственно какой в этом смысл увидела я что делать каждый день отчет за тек день находить обороты  за предыдущие 30 дней, писать это в какой нибудь регистр и отчет получать из этого регистра
20 kn
 
02.12.11
14:22
мне надо чтобы Дата1 Дата2 "скользили" как бы
21 kn
 
02.12.11
14:31
(18)Вот приведу незамысловатый запрос как описано(если правильно понимаю) в (1)

ВЫБРАТЬ
   ПродажиОбороты.КоличествоОборот,
   ДОБАВИТЬКДАТЕ(ПродажиОбороты.Период, ДЕНЬ, 30) КАК Дата
ИЗ
   РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, День, ) КАК ПродажиОбороты

УПОРЯДОЧИТЬ ПО
   Дата
Так вот он не то что надо.
22 kn
 
02.12.11
16:07
вверх
23 pumbaEO
 
02.12.11
16:16
Вы получаете диапазон в один день, почему не получить диапазон в 10, 20, 30 дней?
Экономического смысла в этой информации совершенно не вижу. Подскажите зачем?
24 kn
 
02.12.11
16:23
(23)на фирме ежедневно создается отчет для руководства куда входят эти самые продажи, дебиторка, просроченная и их отношения,причем бухгалтер выбирает данные по соответствующим отчетам и накапливает в Экселе, вот поставили задачу написать единый отчет за период по дням как их Экселевская таблица.
Я не понимаю как получить диапазон в 30 дней.
25 pumbaEO
 
02.12.11
16:59
ну остатки(дебиторка ладно, на каждый день есть определенная сумма) а какой период для анализа продаж берется?
А все посмотрел. Тогда вот тебе https://1cers.ru/topic.php?upd&id=184893 для регистра накопления.
26 AAlexandra
 
02.12.11
17:00
(24) с помощью запроса (16) получаешь таблицуОборотовПоДням:
ПериодДень | ОборотСумма
ПериодДень в диапазоне от (ДатаНачалаОтчета-31день) до (ДатаОкончанияОтчета-1день)

Отдельно получаешь таблицуДнейОтчета из 1 колонки:
ПериодДень
ПериодДень от (ДатаНачалаОтчета) до (ДатаОкончанияОтчета)

Делаешь левое соединение таблицыОборотовПоДням к таблицеДнейОтчета по условию:

таблицаОборотовПоДням.ПериодДень > ДобавитьКДате(таблицаДнейОтчета.ПериодДень, ДЕНЬ, -31) И
таблицаОборотовПоДням.ПериодДень <= ДобавитьКДате(таблицаДнейОтчета.ПериодДень, ДЕНЬ, -1)

Получаешь ИтоговуюТаблицу:
таблицаДнейОтчета.ПериодДень | таблицаОборотовПоДням.ОборотСумма

Группируешь ее по ПериодДень, Сумма(ОборотСумма) - Получаешь то что хотел в (0).
27 kn
 
02.12.11
17:13
(25)я это видела и когда-то использовала но как для этого случая адаптировать не знаю
(26)спасибо, попробую
28 kn
 
02.12.11
17:29
Воспользовавшись идеей в (26), получилось так

ВЫБРАТЬ
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
ИЗ
   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, День, ) КАК ПродажиОбороты
       ПО (ПродажиОбороты.Период > ДОБАВИТЬКДАТЕ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ, -31))
           И (ПродажиОбороты.Период <= ДОБАВИТЬКДАТЕ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ, -1))
ГДЕ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаКон
ИТОГИ
   СУММА(СтоимостьОборот)
ПО
   ДатаКалендаря
29 kn
 
02.12.11
17:30
Всем помогавшим большое спасибо!
30 pumbaEO
 
02.12.11
17:31
фотку.
31 pumbaEO
 
02.12.11
17:32
на спасибо не посмотришь. :)
32 kn
 
02.12.11
17:34
а помогать лучше просто так и быть верным.
33 pumbaEO
 
02.12.11
17:35
так я не для себя, сыну покажу.
34 kn
 
02.12.11
17:40
ему я думаю лучше смешариков