| 
    
        
     
     | 
    
  | 
Как в запросе СКД получить 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 
 | 
         
        Сделал. Через соединение в СКД с таблицей начала интересующих меня месяцев. Как ни странно - работает.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |