|
УТ запрос средний остаток | ☑ | ||
---|---|---|---|---|
0
programer_
1c_nn15 18.01.12
✎
12:34
|
День добрый , нужен запрос чтобы выводил остатки помесячно, чтобы за каждый месяц выводился средний остаток в утешке, если несложно короткий пример
|
|||
1
GLazNik
18.01.12
✎
12:37
|
что значит средний остаток? это как средняя температура по палате?
|
|||
2
programer_
1c_nn15 18.01.12
✎
12:38
|
ну вобщем да,надо уточнить что конкретно имеет ввиду нач. отдела поставок
|
|||
3
nazi
18.01.12
✎
12:38
|
(остаток на начало месяц + остаток на конец месяц) / 2 ?
|
|||
4
programer_
1c_nn15 18.01.12
✎
12:43
|
Наврят ли на конец и начало месяца может быть нулевой, а вот в в остальные месяца какой угодно) постановщик задачи позже отпишет, может быть с оборотом как то связать
|
|||
5
programer_
1c_nn15 18.01.12
✎
12:46
|
Вобщем есть вариант взять остаток на конец каждого дня суммировать и поделить на конец месяца, я изначально подумал что может какая то функция есть в языке запросов, чтобы формулу не прописывать
|
|||
6
GLazNik
18.01.12
✎
12:48
|
(5) делить наверное надо не на конец месяца, а на количество дней в месяце.
|
|||
7
programer_
1c_nn15 18.01.12
✎
12:49
|
ну да,так и хотел написать спутал слова
|
|||
8
shuhard
18.01.12
✎
12:51
|
(4) сделай так, если заказчик тупой, то требуй фориулу расчета среднего
ВЫБРАТЬ НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, МЕСЯЦ) КАК Период1, ТоварыНаСкладахОстаткиИОбороты.Номенклатура, СРЕДНЕЕ(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, МЕСЯЦ), ТоварыНаСкладахОстаткиИОбороты.Номенклатура |
|||
9
AAlexandra
18.01.12
✎
13:00
|
если по логике, то интересен остаток на каждый РАБОЧИЙ день месяца, а не просто каждый день..
З.Ы. а у меня, например, коллега-программист считает, что "среднее" из пяти значений - это третье по счету, если их отсортировать по возрастанию.. Так что лучше уточнить у заказчика, что он понимает под "средним". |
|||
10
Ненавижу 1С
гуру
18.01.12
✎
13:02
|
(9) это называется медиана
|
|||
11
Михаил Козлов
18.01.12
✎
13:10
|
(0) Если в отчете по оборачиваемости поставить периодичность день, то средний остаток в отчтет, вроде как, должен давать средний остаток по дням.
|
|||
12
ProProg
18.01.12
✎
13:16
|
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ | Интервалы.НачалоИнтервала КАК Период |ПОМЕСТИТЬ Периоды |ИЗ | &Интервалы КАК Интервалы |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВложенныйЗапрос.Период КАК Период, | ВложенныйЗапрос.КоличествоОборот КАК КоличествоОборот, | ВложенныйЗапрос.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ВложенныйЗапрос.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток |ИЗ | Периоды КАК Периоды | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВложенныйЗапрос.Период КАК Период, | СУММА(ВложенныйЗапрос.КоличествоОборот) КАК КоличествоОборот, | СУММА(ВложенныйЗапрос.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток, | СУММА(ВложенныйЗапрос.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток | ИЗ | (ВЫБРАТЬ | ТоварыНаСкладах.Период КАК Период, | 0 КАК КоличествоОборот, | ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , Номенклатура = &УсловиеОтбора) КАК ТоварыНаСкладах | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ТоварыВРознице.Период, | 0, | ТоварыВРознице.КоличествоНачальныйОстаток, | ТоварыВРознице.КоличествоКонечныйОстаток | ИЗ | РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , Номенклатура = &УсловиеОтбора) КАК ТоварыВРознице | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ПродажиОбороты.Период, | ПродажиОбороты.КоличествоОборот, | 0, | 0 | ИЗ | РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, ДЕНЬ, Номенклатура = &УсловиеОтбора) КАК ПродажиОбороты) КАК ВложенныйЗапрос | | СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Период) КАК ВложенныйЗапрос | ПО Периоды.Период = ВложенныйЗапрос.Период |ИТОГИ | СУММА(КоличествоОборот), | СУММА(КоличествоНачальныйОстаток), | СУММА(КоличествоКонечныйОстаток) |ПО | Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНач, &ДатаКон) |АВТОУПОРЯДОЧИВАНИЕ"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"День",ПериодичностьДляЗапроса); ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"ДЕНЬ",ПериодичностьДляЗапроса); //Интервалы.ВыбратьСтроку(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("УсловиеОтбора", ТекущиеДанные.Номенклатура); Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)); Запрос.УстановитьПараметр("Интервалы", Интервалы); Запрос.Текст = ТекстЗапроса; (с) http://subsystems.ru/ |
|||
13
ProProg
18.01.12
✎
13:22
|
Вот еще.
С параметрами по календарю МассивДней = Новый Массив; Если РабочаяНеделя = 5 Тогда МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий); ИначеЕсли РабочаяНеделя = 6 Тогда МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий); МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный); МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота); ИначеЕсли РабочаяНеделя = 7 Тогда МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий); МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный); МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота); МассивДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье); КонецЕсли; ПараметрыПостроителя.Вставить("ПереченьРабочихДней",МассивДней); | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НоменклатураСКолДней.Номенклатура, | НоменклатураСКолДней.ХарактеристикаНоменклатуры, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | СУММА(НоменклатураСКолДней.КоличествоДнейВПродаже), | 0, | 0, | 0 | ИЗ | (ВЫБРАТЬ | РабочиеДниНоменклатуры.Номенклатура КАК Номенклатура, | РабочиеДниНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | СУММА(ВЫБОР | КОГДА ИсторияОстатков.КоличествоКонечныйОстаток > 0 | ИЛИ КОНЕЦПЕРИОДА(РабочиеДниНоменклатуры.ДатаКалендаря, ДЕНЬ) = КОНЕЦПЕРИОДА(ИсторияОстатков.Период, ДЕНЬ) | И ИсторияОстатков.КоличествоКонечныйОстаток <= ИсторияОстатков.КоличествоРасход | И (НЕ ИсторияОстатков.КоличествоРасход = 0) | И ИсторияОстатков.КоличествоНачальныйОстаток > 0 | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК КоличествоДнейВПродаже | ИЗ | (ВЫБРАТЬ | ДниКалендаря.ДатаКалендаря КАК ДатаКалендаря, | МАКСИМУМ(ИсторияОстатков.Период) КАК Период, | ИсторияОстатков.Номенклатура КАК Номенклатура, | ИсторияОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры | ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК ДниКалендаря | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ИсторияОстатков.Период КАК Период, | ИсторияОстатков.Номенклатура КАК Номенклатура, | ИсторияОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | СУММА(ИсторияОстатков.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток, | СУММА(ИсторияОстатков.КоличествоРасход) КАК КоличествоРасход, | СУММА(ИсторияОстатков.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток | ИЗ | (ВЫБРАТЬ | ТоварыНаСкладах.Период КАК Период, | ТоварыНаСкладах.Номенклатура КАК Номенклатура, | ТоварыНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ТоварыНаСкладах.КоличествоРасход КАК КоличествоРасход, | ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыНаСкладах | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ТоварыВРознице.Период, | ТоварыВРознице.Номенклатура, | ТоварыВРознице.ХарактеристикаНоменклатуры, | ТоварыВРознице.КоличествоНачальныйОстаток, | ТоварыВРознице.КоличествоРасход, | ТоварыВРознице.КоличествоКонечныйОстаток | ИЗ | РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыВРознице) КАК ИсторияОстатков | | СГРУППИРОВАТЬ ПО | ИсторияОстатков.Период, | ИсторияОстатков.Номенклатура, | ИсторияОстатков.ХарактеристикаНоменклатуры) КАК ИсторияОстатков | ПО (НАЧАЛОПЕРИОДА(ДниКалендаря.ДатаКалендаря, ДЕНЬ) >= НАЧАЛОПЕРИОДА(ИсторияОстатков.Период, ДЕНЬ)) | ГДЕ | ДниКалендаря.ДатаКалендаря <= &ДатаКон | И ДниКалендаря.ДатаКалендаря >= &ДатаНач | И ДниКалендаря.ВидДня В(&ПереченьРабочихДней) | | СГРУППИРОВАТЬ ПО | ДниКалендаря.ДатаКалендаря, | ИсторияОстатков.Номенклатура, | ИсторияОстатков.ХарактеристикаНоменклатуры) КАК РабочиеДниНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ИсторияОстатков.Период КАК Период, | ИсторияОстатков.Номенклатура КАК Номенклатура, | ИсторияОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | СУММА(ИсторияОстатков.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток, | СУММА(ИсторияОстатков.КоличествоРасход) КАК КоличествоРасход, | СУММА(ИсторияОстатков.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток | ИЗ | (ВЫБРАТЬ | ТоварыНаСкладах.Период КАК Период, | ТоварыНаСкладах.Номенклатура КАК Номенклатура, | ТоварыНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ТоварыНаСкладах.КоличествоРасход КАК КоличествоРасход, | ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыНаСкладах | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ТоварыВРознице.Период, | ТоварыВРознице.Номенклатура, | ТоварыВРознице.ХарактеристикаНоменклатуры, | ТоварыВРознице.КоличествоНачальныйОстаток, | ТоварыВРознице.КоличествоРасход, | ТоварыВРознице.КоличествоКонечныйОстаток | ИЗ | РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыВРознице) КАК ИсторияОстатков | | СГРУППИРОВАТЬ ПО | ИсторияОстатков.Период, | ИсторияОстатков.Номенклатура, | ИсторияОстатков.ХарактеристикаНоменклатуры) КАК ИсторияОстатков | ПО РабочиеДниНоменклатуры.Период = ИсторияОстатков.Период | И РабочиеДниНоменклатуры.Номенклатура = ИсторияОстатков.Номенклатура | И РабочиеДниНоменклатуры.ХарактеристикаНоменклатуры = ИсторияОстатков.ХарактеристикаНоменклатуры | | СГРУППИРОВАТЬ ПО | РабочиеДниНоменклатуры.Номенклатура, | РабочиеДниНоменклатуры.ХарактеристикаНоменклатуры) КАК НоменклатураСКолДней | | СГРУППИРОВАТЬ ПО | НоменклатураСКолДней.Номенклатура, | НоменклатураСКолДней.ХарактеристикаНоменклатуры |
|||
14
programer_
1c_nn15 18.01.12
✎
14:03
|
(9) вобщем то заказчик сказал как написано в (5) тоесть взять конечный остаток на каждый день, а за месяц взять средний
|
|||
15
programer_
1c_nn15 18.01.12
✎
14:16
|
где можно про функцию из языка запросов прочитать "Среднее"? в синтаксис помошнике нет
|
|||
16
programer_
1c_nn15 18.01.12
✎
14:55
|
*
|
|||
17
Zombi
18.01.12
✎
14:58
|
(15) А какие с этой функцией у вас непонятки?
|
|||
18
Ненавижу 1С
гуру
18.01.12
✎
14:59
|
СРЕДНЕЕ брать неправильно
|
|||
19
programer_
1c_nn15 18.01.12
✎
15:06
|
Да поподробней пр неё прочитать хотел
|
|||
20
programer_
1c_nn15 18.01.12
✎
15:06
|
)
|
|||
21
Ненавижу 1С
гуру
18.01.12
✎
15:08
|
если у вас на 1 января остаток =1, на 5-е равен 30, а остальные дни без остатка, то "среднее" даст (30+1)/2=15.5, хотя среднее за месяц равно 1
|
|||
22
programer_
1c_nn15 18.01.12
✎
15:10
|
если так работает до действительно не подходит, спасибо хотя по идее должна бы на количество дней в месяце делить
|
|||
23
Ненавижу 1С
гуру
18.01.12
✎
15:11
|
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура, СРЕДНЕЕ(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)) КАК СреднееКоличество ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&Дата1, &Дата2, День, , Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = ТоварыНаСкладахОстаткиИОбороты.Период СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура |
|||
24
programer_
1c_nn15 18.01.12
✎
15:12
|
если я правильно понял если остатков на день нет то она за этот день ноль втыкает
|
|||
25
Ненавижу 1С
гуру
18.01.12
✎
15:13
|
(24) да
на самом деле достаточно написать: СРЕДНЕЕ(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК СреднееКоличество |
|||
26
programer_
1c_nn15 18.01.12
✎
15:14
|
ага, буду эксперементировать)
|
|||
27
programer_
1c_nn15 18.01.12
✎
15:15
|
в (8) вроде как такая же конструкция)
|
|||
28
programer_
1c_nn15 18.01.12
✎
15:18
|
Набросал пока такую заготовочку , пока без среднего, но выводит не каждый день а когда изменения в остатках есть
"ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Период КАК Период, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура, | ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстаткиИОбороты.Номенклатура), | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День, , Номенклатура = &номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты |ГДЕ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура = &номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Период, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура |ИТОГИ | СУММА(КоличествоКонечныйОстаток) |ПО | ОБЩИЕ, | Период"; |
|||
29
programer_
1c_nn15 18.01.12
✎
15:18
|
Хотел посмотреть остатки по дням
|
|||
30
Ненавижу 1С
гуру
18.01.12
✎
15:30
|
(27) не совсем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |