![]() |
![]() |
![]() |
|
Остатки по дням | ☑ | ||
---|---|---|---|---|
0
saudin
15.07.08
✎
10:06
|
Как запросом получить остатки товара за месяц по дням.Причем надо,чтобы все дни подряд попали в результат запроса.Помогите плз.
|
|||
1
Зарбазан
15.07.08
✎
10:11
|
кури периодичность виртуальной таблицы оборотов...
только данные будут за дни по которым обороты были |
|||
2
saudin
15.07.08
✎
10:14
|
А-а-а,а надо по всем.
|
|||
3
Зарбазан
15.07.08
✎
10:19
|
(2) ну сделай по всем, в чем проблема? Добавь к результату отсутствующие даты.
|
|||
4
IronDemon
15.07.08
✎
10:43
|
||||
5
saudin
17.07.08
✎
14:55
|
Все не то.Короче,надо чтоб было так: выбираем период,допустим месяц,и получались остатки товара на КАЖДЫЙ день месяца,т.е.
01.07.2008-остаток на конец дня, 02.07.2008-остаток на конец дня, 03.07.2008-остаток на конец дня, ------------------------------- 30.07.2008-остаток на конец дня, 31.07.2008-остаток на конец дня, Вообще,это возможно? |
|||
6
shuhard
17.07.08
✎
14:57
|
(5) лягко, кури СП периодами, если надо только запросом - клепай думми-табличку.
|
|||
7
saudin
17.07.08
✎
14:58
|
Я думаю,что такие задачи возникали ранее у кого-то.
|
|||
8
saudin
17.07.08
✎
15:00
|
shuhard,я не понимаю тебя вообще.Можно по-русски выражаться! Я ж не покалякать сюда зашел,а решить свою проблему,насколько это возможно.
|
|||
9
IronDemon
17.07.08
✎
14:58
|
Возможно
|
|||
10
Poopkeen
17.07.08
✎
15:03
|
вот запрос, делал для курса валют
(я тут новый, что-то не нашел мануала по тэгам, не знаю как выделить код) ВЫБРАТЬ ВложенныйЗапрос.Дата КАК Дата, ВложенныйЗапрос.Валюта КАК Валюта, КурсыВалют.Курс ИЗ (ВЫБРАТЬ Даты.Дата КАК Дата, КурсыВалют.Валюта КАК Валюта, МАКСИМУМ(КурсыВалют.Период) КАК Период ИЗ (ВЫБРАТЬ Даты.Дата КАК Дата ИЗ (ВЫБРАТЬ 1 КАК Поле1, ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона) КАК Дата ИЗ (ВЫБРАТЬ 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 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК РазностьДат) КАК Даты СГРУППИРОВАТЬ ПО Даты.Дата) КАК Даты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО Даты.Дата >= КурсыВалют.Период СГРУППИРОВАТЬ ПО Даты.Дата, КурсыВалют.Валюта) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ВложенныйЗапрос.Валюта = КурсыВалют.Валюта И ВложенныйЗапрос.Период = КурсыВалют.Период УПОРЯДОЧИТЬ ПО Дата, Валюта |
|||
11
Poopkeen
17.07.08
✎
15:04
|
о чудо, само отформатировалось
|
|||
12
shuhard
17.07.08
✎
15:04
|
(8) ню ню
|
|||
13
saudin
17.07.08
✎
15:05
|
Да вывести список дат по порядку-не в этом проблема,а получить остатки на конец каждого дня из этого списка.
|
|||
14
saudin
17.07.08
✎
15:08
|
Окончательно надо чтоб складывались все остатки по всем дням за месяц и потом делились на количесво дней в месяце
|
|||
15
Poopkeen
17.07.08
✎
15:11
|
запрос выдает результаты по всем датам интервала, в том числе и где нет движения
|
|||
16
Immortal
17.07.08
✎
15:12
|
мне кажеццо кто то копирайты забыл поставить.
|
|||
17
saudin
17.07.08
✎
15:16
|
Poopkeen
запрос выдает результаты по всем датам интервала, в том числе и где нет движения Ребята-КАК ЭТО СДЕЛАТЬ???!!! |
|||
18
saudin
17.07.08
✎
15:19
|
Не надо общих фраз-если не знаете конкретный ответ-не засоряйте тему пожалуйста.
|
|||
19
IronDemon
17.07.08
✎
15:20
|
(16) +1
|
|||
20
hhhh
17.07.08
✎
15:26
|
(17) если ты математик, то делается просто: остаток на каждый день - это остаток на начало + обороты за этот период. Можно просуммировать все остатки и получится формула, которая легко ложится на запрос.
|
|||
21
saudin
17.07.08
✎
15:33
|
(20) тут не надо быть математиком - так не получится!
|
|||
22
hhhh
17.07.08
✎
15:38
|
(21) получится, я так считал оборачиваемость. Будет что-то вроде
ОстатокНаначало * КоличествоДнейВМесяце + Движение * (ПоследнийДеньМесяца - ДеньДвижения + 1) ... Движение * (ПоследнийДеньМесяца - ДеньДвижения + 1) то есть убиваем сразу трех зайцев: по каждому дню расписывать не надо. |
|||
23
Poopkeen
17.07.08
✎
15:42
|
Immortal, болванку для выдачи дат брал где-то тут
спасибо автору :) джойны с курсами доделывал для себя сам. |
|||
24
NULLL
17.07.08
✎
16:50
|
Наиболее простой вариант:
Начало = НачалоМесяца(Дата); Запрос.Параметры.Вставить("Начало", Начало-2678400); Дней = День(КонецМесяца(дата)); Для дн = 1 по Дней-1 Цикл Текст = "" + Текст + "ВЫБРАТЬ | НачОстатки.ДоговорКонтрагента.Владелец КАК Контрагент, | НачОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента, | НачОстатки.СуммаВзаиморасчетовОстаток/&Дней КАК СуммаВзаиморасчетов, | " + Строка(Дн)+ " КАК День, | ""ОСТ"" КАК Тип |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Начало, ) КАК НачОстатки | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Приход.ДоговорКонтрагента.Владелец, | Приход.ДоговорКонтрагента, | Приход.СуммаВзаиморасчетовПриход/&Дней, | " + Строка(Дн) + ", | ""Реализация"" |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Начало, &Конец" + Строка(дн) + ", День, ) КАК Приход |ГДЕ | РАЗНОСТЬДАТ(Приход.Период, &Конец" + Строка(дн) + ", ДЕНЬ) >= Приход.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Расход.ДоговорКонтрагента.Владелец, | Расход.ДоговорКонтрагента, | -Расход.СуммаВзаиморасчетовРасход/&Дней, | " + Строка(Дн) + ", | ""Касса"" |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Начало, &Конец" + Строка(дн) + ", Период, ) КАК Расход |ОБЪЕДИНИТЬ ВСЕ |"; Запрос.Параметры.Вставить("Конец" + Строка(дн), Начало+86399); //Запрос.Параметры.Вставить("КонецКасса" + Строка(дн), Начало-345601); Начало = Начало + 86400; КонецЦикла; Запрос.Текст = Текст + "ВЫБРАТЬ | НачОстатки.ДоговорКонтрагента.Владелец, | НачОстатки.ДоговорКонтрагента, | НачОстатки.СуммаВзаиморасчетовОстаток/&Дней, | " + Строка(Дн) + ", | ""ОСТ"" |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Начало, ) КАК НачОстатки | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Приход.ДоговорКонтрагента.Владелец, | Приход.ДоговорКонтрагента, | Приход.СуммаВзаиморасчетовПриход/&Дней, | " + Строка(Дн) + ", | ""Реализация"" |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Начало, &Конец" + Строка(Дней) +", День, ) КАК Приход |ГДЕ | РАЗНОСТЬДАТ(Приход.Период, &Конец" + Строка(Дней) +", ДЕНЬ) >= Приход.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Расход.ДоговорКонтрагента.Владелец, | Расход.ДоговорКонтрагента, | -Расход.СуммаВзаиморасчетовРасход/&Дней, | " + Строка(Дн) + ", | ""Касса"" |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Начало, &Конец" + Строка(Дней) +", Период ) КАК Расход | ИТОГИ СУММА(СуммаВзаиморасчетов) ПО ОБЩИЕ,Контрагент,ДоговорКонтрагента,День,Тип "; //Запрос.Параметры.Вставить("Начало", Начало); Запрос.Параметры.Вставить("Конец" + Строка(Дней), Начало+86399); //Запрос.Параметры.Вставить("КонецКасса" + Строка(Дней), Начало-345601); Запрос.Параметры.Вставить("Дней", Дней); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |