|
Как в запросе СКД получить 2 результата запроса на разные даты | ☑ | ||
---|---|---|---|---|
0
tciban
28.02.23
✎
07:15
|
Уважаемые коллеги! Делаю на СКД отчет по оборачиваемости для 10.3 Ничего хитрого, но начальству нужно получить начало/приход/расход/оборачиваемость за квартал и за последний месяц квартала. Это фактически один и тот же запрос, только периоды и периодичность разные. И вот мне стало интересно - можно ли как то извернуться и не писать объединение 2-х одинаковых запросов, а как то так сделать, что бы был один запрос куда передается параметрами период и периодичность?
|
|||
1
НафНаф
28.02.23
✎
08:11
|
(0) Остатки обороты с периодичностью месяц и периодом квартал, поля придется сделать самому - ВЫБОР КОГДА ТОГДА
|
|||
2
tciban
28.02.23
✎
08:50
|
(1) Разве нельзя написать РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
НАЧАЛОПЕРИОДА(&НачалоПериода, &Периодичность), КОНЕЦПЕРИОДА(&КонецПериода, &Периодичность), &Периодичность, ДвиженияИГраницыПериода, {Склад, Номенклатура}) КАК ТоварыНаСкладахОстаткиИОбороты |
|||
3
tciban
28.02.23
✎
10:42
|
Ладно, фиг с ним, с одним запросом вместо двух одинаковых! Теперь другая проблема! Написал запрос, в консоли запросов проверил, все хорошо. Считает за Квартал и за последний месяц квартала. А вставил запрос в СКД - он стало мне выдавать еще и за первый и второй месяц квартала!!! Что делать - ума не приложу :(
|
|||
4
DJ Anthon
28.02.23
✎
10:45
|
параметры в запросе скд надо в фигурных скобочках писать, иначе он свои создает
|
|||
5
DJ Anthon
28.02.23
✎
10:46
|
воспользуйся консолью с перехватом запроса из скд, увидишь новые параметры
|
|||
6
vicof
28.02.23
✎
10:46
|
И автозаполнение отключать
|
|||
7
tciban
28.02.23
✎
10:50
|
Для параметров использовал стандартные имена НачалоПериода и КонецПериода. У периода роль выключил. Не помогает!
|
|||
8
tciban
28.02.23
✎
10:51
|
(5) это в ИР где то есть?
|
|||
9
PR
28.02.23
✎
10:55
|
(0) >>можно ли как то извернуться и не писать объединение 2-х одинаковых запросов...
Зачем? |
|||
10
tciban
28.02.23
✎
10:56
|
(9) потому что 2 совершенно одинаковых запроса. И если добавлять что то - менять оба, не слишком удобно
|
|||
11
Обработка
28.02.23
✎
11:00
|
(10) В чем неудобность?
В кодинге иногда повтор помогает не заморачиваясь на сложное решение. Что у вас запрос выполняется сутками что ли? Или код запроса километровый? |
|||
12
tciban
28.02.23
✎
11:08
|
(11) Честно говоря никакой сложности, чистое любопытство - можно ли сделать так, без повтора кода
|
|||
13
tciban
28.02.23
✎
11:09
|
(11) Просто когда нибудь может оказаться и запрос с километровым кодом на сутки выполнения... Вот тогда это знание и пригодится
|
|||
14
tciban
28.02.23
✎
11:10
|
Но сейчас у меня в полный рост другая проблема.
|
|||
15
PR
28.02.23
✎
11:11
|
(10) И что?
|
|||
16
PR
28.02.23
✎
11:13
|
(12) Лучше так не делать
И вряд ли так можно |
|||
17
PR
28.02.23
✎
11:13
|
(14) Сейчас у тебя одна проблема, слишком много свободного времени на всякую хрень
|
|||
18
Обработка
28.02.23
✎
11:21
|
(0)
1. Вытащи в первом запросе за период квартал но с периодичностью месяц. 2. Сделай с него ВТ 3. Дальше делай что хочешь. В результате то что ты хотел решаешь. 1. Запрс к данным 1 раз. 2. запрос не зависит от длины кода первичного запроса. |
|||
19
АгентБезопасной Нацио
28.02.23
✎
11:38
|
(8) есть и в ИР, есть (на ИТС) и штатный с селезневки.
|
|||
20
АгентБезопасной Нацио
28.02.23
✎
11:40
|
(18) из помесячной оборачиваемости за три месяца не получить оборачиваемость за квартал
|
|||
21
Обработка
28.02.23
✎
12:04
|
(20) Ой пардон не подумал. Да и внимательно не читал.
Но а если вытащить нужные цифры в Вт и там уже обработать вычислениями эти данные? |
|||
22
Галахад
гуру
28.02.23
✎
12:06
|
Посчитать в модуле. Передать в СКД таблицу значений.
|
|||
23
Обработка
28.02.23
✎
12:08
|
Вот формула оборачиваемости:
Обдн = Средний товарный запас за период × Количество дней / Товарооборот за период. Можно же это и по отдельности можно и в целом подсчитать? |
|||
24
tciban
28.02.23
✎
12:15
|
В общем посмотрел запрос. Коварная СКд заменила, там где у меня было написано
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&КонецПериода, МЕСЯЦ), КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ), МЕСЯЦ, ДвиженияИГраницыПериода, {(Склад), (Номенклатура)}) КАК ТоварыНаСкладахОстаткиИОбороты она заменила на: РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&П, &П2, МЕСЯЦ, ДвиженияИГраницыПериода, ((Склад) В(&П3)) И (Номенклатура) В ИЕРАРХИИ(&П4)) КАК ТоварыНаСкладахОстаткиИОбороты А в П и П2 засунула начало и конец квартала!!! Кто нибудь преодолевал такое поведение СКД? |
|||
25
НафНаф
28.02.23
✎
13:56
|
(24) параметры надо готовить на уровне СКД, а не на уровне запроса
|
|||
26
tciban
28.02.23
✎
14:51
|
(25) И все равно СКД подменит в ТоварыНаСкладах.ОстаткиИОбороты начальную и конечную дату на П и П2
|
|||
27
tciban
28.02.23
✎
14:52
|
Мне же нужно что бы в одном месте был один период (квартал) а в другом - другой (месяц)
|
|||
28
tciban
28.02.23
✎
14:52
|
впрочем заборол уже. Некрасиво заборол, через ГДЕ
|
|||
29
АгентБезопасной Нацио
28.02.23
✎
15:55
|
(23) Ну да, только надо отдельно показатели считать по каждому месяцу, а уже на их основании оборачиваемость.
(28) вариантов несколько. Например, у периода сделать номер, суммировать по нему, затем вычислять оборачиваемость. Длинновато, зато одним запросом. Или вычислять оборачиваемость в вычисляемых полях. Запрос простой, зато выражения длинные |
|||
30
tciban
01.03.23
✎
08:09
|
Коллеги! А вот такой вопрос по оборачиваемости: Оборачиваемость считаю как расход/средний остаток за период. Так вот - вы перемещения берете в расчет? Ну т.е. в расход включаете расход по перемещениям? или только продажи?
Ну и интересно кто как считает средний остаток. Я по простому пока посчитал (Остаток на начало+остаток на конец)/2, но как я понимаю самая точная формула среднего остатка - сумма остатков на каждый день/количество дней |
|||
31
НафНаф
01.03.23
✎
08:11
|
(26) нет
|
|||
32
АгентБезопасной Нацио
01.03.23
✎
08:27
|
(30) смотря какую оборачиваемость и для чего считаешь. Оборачиваемость товара на складе - это один показатель. Оборачиваемость товара в компании - совершенно другой.
твой расчет среднего остатка - сверхидиотский. Впрочем, к "сумме остатков за каждый день" тоже есть претензии |
|||
33
tciban
01.03.23
✎
09:57
|
Сумма остатков за каждый день это которая средняя хронологическая моментального ряда? Которая как сумма всех остатков на каждый день деленное на количество дней? А к нему то какие претензии? На утро брать остаток или на вечер каждого дня?
|
|||
34
АгентБезопасной Нацио
01.03.23
✎
10:54
|
(33) >>>А к нему то какие претензии? На утро брать остаток или на вечер каждого дня? - а вот именно такие.
Представь, что тебе, грузчику, зарплату начисляют по оборачиваемости склада. И утром машина приходит, ты ее разгружаешь. В течение дня загружаешь в уходящие машины. И на вечер, уставший, убеждаешься, что остаток - ноль. И так каждый день. Приходишь за зарплатой, а оборачиваемость у тебя - ноль! |
|||
35
tciban
01.03.23
✎
11:17
|
ну хорошо, а как вычисление среднего вот тут https://infostart.ru/public/92490/ и тут http://www.gilev.ru/остатки-на-каждый-день/ ?
|
|||
36
tciban
01.03.23
✎
11:19
|
Ну и насчет темы с грузчиком - для них помашинно думаю считают, а обсуждаемые способы расчета среднего - для других расчетов. Кстати, во всех статьях пишут что чем меньше оборачиваемость - тем лучше, значит 0 - это совсем хорошо? :)
|
|||
37
АгентБезопасной Нацио
01.03.23
✎
12:32
|
(35) Для некоторых целей - хорошо. Для некоторых - бесполезно.
(36)>>Rстати, во всех статьях пишут что чем меньше оборачиваемость - тем лучше - Значит, вы какие-то неправильные статьи читаете. А нужно просто подумать- каждый "оборот" (хоть товара, хоть денег) приносит некоторый положительный эффект, называемый прибылью. И вот подумайте, лучше один раз обернуть свои деньги с прибылью, или несколько? (хотя и тут "есть варианты".) |
|||
38
tciban
01.03.23
✎
12:47
|
(37) под оборачиваемостью я понимал скорость продаж, коэффициент оборачиваемости, т.е. я в (36) неясно выразился, виноват. Ну а чем выше скорость оборотов тем оно лучше (бизнесу) это да.
|
|||
39
АгентБезопасной Нацио
01.03.23
✎
12:53
|
(38) "под оборачиваемостью я понимал скорость продаж" - а надо понимать все-таки оборачиваемость. Ибо кроме продаж нужны еще и закупки. В общем, традиционно - "никогда не считайте разные коэффициенты, если не представляете, что с ними делать дальше"©
|
|||
40
tciban
09.03.23
✎
14:48
|
Уважаемые коллеги! В силу того, что ветку с моим вопросом сочли продолжением этой (ну да, это про тот же отчет, который я делаю дальше, но про другое!) и закрыли, напишу свой вопрос тут:
Делаю отчет на СКД. В нем получаю по некоей формуле средний остаток на складах за месяц, запрос нехитрый - временная таблица и потом из нее получаю нужное. Но дело даже не в том, что я там получаю, а в том, что нужны данные за за выбранный месяц плюс за аналогичный месяц прошлого года плюс за предыдущий месяц. Ну что бы сравнивать могли. Короче нужно им и все. А вообще отчет нужно за квартал по месяцам. Т.е. по сути надо один и тот же запрос повторить 7 раз с разными месяцами. Как это написать в рамках одного запроса для СКД? В голове как то не укладывается никак 7 раз одно и тоже через ОБЪЕДИНИТЬ ВСЕ. Это первое, что приходит в голову. И будет портянка. А если понадобиться извлечь еще какие нидуь данные - менять в 7 местах. Как то рука не поднимается такое делать. Это заложить себе проблем на будущее. Ищу способ сделать как нибудь иначе Сделать ТЗ и передать в СКД вместо использования запроса - то же не совсем красиво, теряю возможность нормального использования отборов (которые вроде как должны оптимизировать запрос) и прочих плюшек СКД. Может есть еще способ? |
|||
41
PR
09.03.23
✎
14:51
|
(40) И что же в твоем "новом" вопросе нового?
То, что теперь объединений не 2, а 7? Ну охренеть теперь, срочно начинаем обсуждать все заново |
|||
42
PR
09.03.23
✎
14:52
|
+(41) Начни с ответа на (15) что ли
|
|||
43
tciban
09.03.23
✎
14:55
|
(41) Нового в том, что первый вопрос у меня был в подмене параметров НачалоПериода и КонецПериода СКД на свои параметры. А второй совсем с этим не связан, второй вопрос у меня о том, как имея запрос скажем так средней сложности повторить для 7 различных периодов которые впрочем легко вычисляются из 1-го параметра. Как это сделать не повторяя 7 раз один и тот же текст запроса. Надеюсь я сумел понятно изложить разницу? И поскольку с моей точки зрения это совершенно не связанные проблемы, я открыл новую тему.
|
|||
44
PR
09.03.23
✎
14:58
|
(43) Либо через ОБЪЕДИНИТЬ либо через ВЫБОР во всех полях, зависящих от этого параметра (при условии, что объединения не пересекающиеся, иначе только ОБЪЕДИНИТЬ)
Что тут нового-то обсуждать? |
|||
45
tciban
09.03.23
✎
14:58
|
Кроме того ветка эта еще и отклонилась в обсуждение расчета оборачиваемости и способов ее расчета. Я считаю несколько непродуктивным обсуждать различные проблемы в одном месте, т.к. льщу себе надеждой, что ответ на мои вопросы будет интересен еще кому то, и ему будет проще и быстрее разобраться в обсуждении одной конкретной проблемы, а не 3-х
|
|||
46
tciban
09.03.23
✎
14:59
|
(44) А вот ро выбор - мысль интересная. Может что и смогу сваять.
|
|||
47
PR
09.03.23
✎
15:00
|
(45) Так не нужно заводить новую ветку, как только старую засрали
|
|||
48
PR
09.03.23
✎
15:00
|
(46) Тебе про него в (1) написали, прочти уже ветку
|
|||
49
tciban
09.03.23
✎
15:02
|
(48) Так мне уже не нужен квартал то. Все течет, все изменяется, в том числе и ТЗ
|
|||
50
Fish
09.03.23
✎
15:06
|
(43) " повторить для 7 различных периодов" - Имеется ввиду различных между собой по длине? Например, день, неделя, потом 15 дней да ещё и могущих пересекаться между собой? Или речь о 7 месяцах подряд, например?
|
|||
51
tciban
09.03.23
✎
15:07
|
Для итех, кому интересно выложу текст базового запроса, который надо рассчитать для кучи месяцев :)
ВЫБРАТЬ ПродажиОбороты.Период КАК Период, ПродажиОбороты.ДокументПродажи.Склад КАК Склад, ПродажиОбороты.Номенклатура КАК Номенклатура, СУММА(ПродажиОбороты.КоличествоОборот) КАК Продано ПОМЕСТИТЬ втПродажи ИЗ РегистрНакопления.Продажи.Обороты( НАЧАЛОПЕРИОДА(&КонецПериода, МЕСЯЦ), КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ), Месяц, Номенклатура В ИЕРАРХИИ (&Номенклатура) И ДокументПродажи.Склад В ИЕРАРХИИ (&Склады) {(ДокументПродажи.Склад), (Номенклатура)}) КАК ПродажиОбороты ГДЕ ПродажиОбороты.Период = НАЧАЛОПЕРИОДА(&КонецПериода, МЕСЯЦ) СГРУППИРОВАТЬ ПО ПродажиОбороты.Период, ПродажиОбороты.ДокументПродажи.Склад, ПродажиОбороты.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ &НачалоПериода КАК Месяц, ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад, ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, СУММА(ВЫБОР КОГДА ТоварыНаСкладахОстаткиИОбороты.Период = &НачалоПериода ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток ИНАЧЕ ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот КОНЕЦ * (РАЗНОСТЬДАТ(ТоварыНаСкладахОстаткиИОбороты.Период, &КонецПериода, ДЕНЬ) + 1)) КАК СреднийЗапас ПОМЕСТИТЬ втВсегоПоДням ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &НачалоПериода, &КонецПериода, День, , Номенклатура В ИЕРАРХИИ (&Номенклатура) И Склад В ИЕРАРХИИ (&Склады)) КАК ТоварыНаСкладахОстаткиИОбороты СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втВсегоПоДням.Месяц КАК Месяц, втВсегоПоДням.Склад КАК Склад, втВсегоПоДням.Номенклатура КАК Номенклатура, втВсегоПоДням.СреднийЗапас КАК срЗапас, ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НОстаток, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КОстаток, втВсегоПоДням.СреднийЗапас КАК ОстатокПоДням, РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) + 1 КАК КоличествоДней, втВсегоПоДням.СреднийЗапас - ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток + ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток / 2 + ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток / 2 КАК СрОстаток, (втВсегоПоДням.СреднийЗапас - ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток + ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток / 2 + ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток / 2) / (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) + 1) КАК Среднее, втПродажи.Продано КАК Продано ИЗ втВсегоПоДням КАК втВсегоПоДням ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &НачалоПериода, &КонецПериода, Месяц, , Номенклатура В ИЕРАРХИИ (&Номенклатура) И Склад В ИЕРАРХИИ (&Склады)) КАК ТоварыНаСкладахОстаткиИОбороты ПО втВсегоПоДням.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура И втВсегоПоДням.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад ЛЕВОЕ СОЕДИНЕНИЕ втПродажи КАК втПродажи ПО втВсегоПоДням.Склад = втПродажи.Склад И втВсегоПоДням.Номенклатура = втПродажи.Номенклатура Конфигурация - УТ 10.3. Есть конечно изменения, но тут типоые регистры и измерения вроде |
|||
52
Fish
09.03.23
✎
15:11
|
(50) А, всё, прочитал (40).
|
|||
53
PR
09.03.23
✎
15:17
|
(49) И что и что?
Совет-то общий, для любого поля для любого количества объединений |
|||
54
tciban
10.03.23
✎
06:46
|
И все? Больше ни у кого никаких интересных идей?
Печально. |
|||
55
Обработка
10.03.23
✎
07:09
|
(0) Не мучай всех вопросами.
1. Сделай отчет по месяцам и еще итог выведи. 2. Выбирай итог за кавартал. Вполне стандартный отчет и хотелки от руководства закрывает. |
|||
56
АгентБезопасной Нацио
10.03.23
✎
08:03
|
(43) Ну и строй свою портянку динамически на основании одного-единственного "базового" запроса. получай его из схемы, достраивай, и запихивай обратно...
|
|||
57
PR
10.03.23
✎
09:50
|
(54) Ой, идей еще целый вагон!
Например, можно все на внешних источниках данных забацать Или сделать справочник шаблонов частей запроса и формировать текст запроса по нему Или выборку делать одну, а потом быстренько все в ТЗ обработать Столько еще всякой хуйни в голове |
|||
58
tciban
10.03.23
✎
12:42
|
(55) Еще как идея соединение в СКД сделать
|
|||
59
PR
10.03.23
✎
12:43
|
(58) Прекрасная идея
|
|||
60
tciban
15.03.23
✎
14:51
|
Сделал. Через соединение в СКД с таблицей начала интересующих меня месяцев. Как ни странно - работает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |