Вход | Регистрация
 

СКД - Расчет среднего

СКД - Расчет среднего
Я
   serg999
 
23.02.21 - 18:57
Добрый день, вопрос расчета среднего значения

================
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК Остаток,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
    ТоварыНаСкладахОстаткиИОбороты.ПериодМесяц КАК Период
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
================

Настройка:
https://www.screencast.com/t/eqajUT7b9p3
https://www.screencast.com/t/Xam9XO9QK2m5

Результат "Средний остаток", считает не правильно .. Может какая галочка в СКД волшебная есть ?
https://www.screencast.com/t/DUXaVpOg38
 
 Партнерская программа EFSOL Oblako
   ДенисЧ
 
1 - 23.02.21 - 19:11
В декабре у тебя NULL, вот и.
   Ненавижу 1С
 
2 - 23.02.21 - 19:14
(0) сделайте в запросе периодичность МЕСЯЦ
в ресурсе проще сделать так: Сумма(Остаток)/(РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ)+1)
   serg999
 
3 - 23.02.21 - 19:20
(2) Сумма получается 1 897, вместо положенной ~7 489
   Ненавижу 1С
 
4 - 23.02.21 - 19:30
(3) у вас в таблице данные на первый, последний и месяцы движения, отсюда и такой результат
(699+699+474+0)/4 = 474,25
чтобы остатки "работали", надо выводить начальные и конечные и устанавливать соответствующие роли
   toypaul
 
5 - 23.02.21 - 19:51
Тут скорее всего проблема в том как работает метод дополнения и как считает функция "Среднее". "Среднее" считает по исходным данным - до того как срабатывает дополнение. Поэтому остаток на каждую дату оно не видит.

Решить проблему можно только таким образом чтобы в исходном наборе которые возвращает запрос были данные по остаткам на каждую дату.
   toypaul
 
6 - 23.02.21 - 19:54
СКД не понимает что вы хотите посчитать среднее по всем датам периода. Сумма(Остаток) / "Количество периодов" тоже не сработает. По той же причине что и в (5).
   serg999
 
7 - 23.02.21 - 20:11
(5) Да нашел запрос, который выводи список месяцев по периоду, кончено можно, ну как совсем резервный вариант.
(4) Насчет настройки ролей, мне показалось то, что надо ... но я никогда этим не пользовался, сижу разбираюсь, но пока ни фига понять не могу ..
(6) Он и сумму корректно не считает .
   serg999
 
8 - 23.02.21 - 20:40
Блин вроде и задача плевая, а не получается :(
   Ненавижу 1С
 
9 - 23.02.21 - 20:57
(6) да, ты прав, красиво не вышло



ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДанныеПроизводственногоКалендаря.Дата КАК Дата
ПОМЕСТИТЬ Календарь
ИЗ
    РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
    ДанныеПроизводственногоКалендаря.Дата МЕЖДУ &НачПериода И &КонПериода
    И ДанныеПроизводственногоКалендаря.Дата = НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ)
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Период КАК Период,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток
ПОМЕСТИТЬ ТЗ
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты({(&НачПериода)}, {(&КонПериода)}, Месяц, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Календарь.Дата КАК Дата,
    МАКСИМУМ(ТЗ.Период) КАК Период
ПОМЕСТИТЬ Периоды
ИЗ
    Календарь КАК Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
        ПО Календарь.Дата >= ТЗ.Период

СГРУППИРОВАТЬ ПО
    Календарь.Дата
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Периоды.Дата КАК Месяц,
    ТЗ.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
    ТЗ.ВНаличииПриход КАК ВНаличииПриход,
    ТЗ.ВНаличииРасход КАК ВНаличииРасход,
    ТЗ.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
    ЕСТЬNULL(ТЗОстатки.ВНаличииКонечныйОстаток,0) КАК СреднийОстаток
ИЗ
    Периоды КАК Периоды
        ЛЕВОЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
        ПО Периоды.Дата = ТЗ.Период
        ЛЕВОЕ СОЕДИНЕНИЕ ТЗ КАК ТЗОстатки
        ПО Периоды.Период = ТЗОстатки.Период

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.