Имя: Пароль:
1C
1С v8
СКД определить средний курс за период (на каждую календарную дату) и пересчет по ней суммы
, , ,
0 Pchelinka
 
06.02.19
19:05
Добрый день, форумчане

требуется ваше внимание и помощь))

есть отчет в СКД, в которой нужно пересчитать суммы продажи ГРН в Дол по среднему курсу. Еще один момент, некоторые документы у нас в ГРН и их нужно переводить в Дол, а некоторые сразу в Дол. тогда их просто берем и плюсуем в пересчитанному). Сложность оказалась в том, что справочник валют заносят курс не каждый день, а только когда он меняется. И вот нужно определить курс на каждую календарную дату, а потом среднюю за указанный период. Далее сумму продажи в грн/ на полученный средний курс.
Опишу, что я сделала может есть другой вариант более оптимальный (надеюсь):
Для определения среднего курса добавила в СКД новый набор данных "Средний курс"
ВЫБРАТЬ
    СРЕДНЕЕ(ВЫРАЗИТЬ(КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс КАК ЧИСЛО(15, 2))) КАК СреднийКурс,
    КурсыВалютСрезПоследних.Валюта КАК ВалютаДол,
    &ДатаСрК КАК ДатаСрК,
    КурсыВалютСрезПоследних.Валюта.Наименование КАК ВалютаНаименование
{ВЫБРАТЬ
    ВалютаДол.*,
    СреднийКурс,
    ДатаСрК,
    ВалютаНаименование}
ИЗ
    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаСрК, ) КАК КурсыВалютСрезПоследних
ГДЕ
    КурсыВалютСрезПоследних.Валюта.Код = "980"
{ГДЕ
    (&ДатаСрК)}

СГРУППИРОВАТЬ ПО
    КурсыВалютСрезПоследних.Валюта,
    КурсыВалютСрезПоследних.Валюта.Наименование

УПОРЯДОЧИТЬ ПО
    ВалютаДол

И набор данных для получения всех дней в указанном периоде "Календарь":
ВЫБРАТЬ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &Дата1
    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &Дата2

Устанавливаю связь для расчета курса на каждую календарную дату:
Источник-Календарь, Приемник-СреднийКурс, ВыражениеИсточник-ДатаКалендаря, Выражение приемник- ДатаСрК, Параметр-ДатаСрК

Соединяю Наборы данных средний курс и продажи по наименованию валюты "ГРН" Для этого в продажах создала поле"ГРН" и соответственно  
Источник-Продажи, Приемник-СреднийКурс, ВыражениеИсточник-НазваниеВалюты, Выражение приемник- ВалютаНаименование

Вот расчет на каждую дату вычислила и хотелось бы получить одну цифру средний курс за период и разделить на него нашу продажу в грн, но тут проблема, тк запись выводится на каждый календарный день((((

Я в вычисляемых полях задаю:

ВЫБОР
            КОГДА ВидДокумента = "Реализация учредителю"
                ТОГДА ПродажаДол Иначе ВЫБОР
            КОГДА ВидДокумента = "Реализация товаров и услуг" и ВалютаДокумента.Наименование<>"ГРН"
                ТОГДА   ПродажаДол Иначе ПродажаГрн/(ВЫРАЗИТЬ(СреднийКурс , "Число(15,2)")) Конец  Конец

и тут получается, что выводит на каждую дату календарную,
функцию Среднее не могу тут применить ругается на меня 1С,

а если я вместо вычисляемых полей ввожу расчет непосредственно в Ресурсы, то не идет общий итог не все суммируется((
Для того, чтобы мне попадало значение Среднего курса округленное до 2 знаков, в вычисляемых полях устанавливаю Путь к данным= СрКалКурс и Выражение=ВЫРАЗИТЬ(СреднийКурс, "Число(15,2)")
Далее в Ресурсах:
ВЫБОР
    КОГДА ВидДокумента = "Реализация учредителю"
                ТОГДА
ВЫБОР
            КОГДА Сумма(ПродажаДол)*ВЫРАЗИТЬ(Среднее(СрКалКурс), "Число(15,2)")<>0 Тогда
Сумма(ПродажаДол)*ВЫРАЗИТЬ(СрКалКурс, "Число(15,2)")
Иначе 0 Конец
Иначе

ВЫБОР
    КОГДА ВидДокумента = "Реализация товаров и услуг" и ВалютаДокумента.Наименование<>"ГРН"
        ТОГДА
ВЫБОР
    КОГДА (Сумма(ПродажаДол)*ВЫРАЗИТЬ((СрКалКурс), "Число(15,2)") )<>0 Тогда
Сумма(ПродажаДол)*ВЫРАЗИТЬ((СрКалКурс), "Число(15,2)")
Иначе 0 Конец
Иначе

ВЫБОР КОГДА Сумма(ПродажаГрн)<>0 Тогда
Сумма(ПродажаГрн)
Иначе 0 Конец
Конец Конец


мне нужно как-то свернуть курс до одной цифры.. хочется соединить уже два отчета СКД))) средний курс и отчет по реализации) Что же делать, подскажите, кручусь уже на одном месте
1 Pchelinka
 
06.02.19
21:16
Ау)))
2 Pchelinka
 
07.02.19
12:30
Может сегодня, кто-то откликнется?)))
3 toypaul
 
гуру
07.02.19
12:59
закладка. будет время почитать и вникнуть, отвечу.
4 Pchelinka
 
07.02.19
13:07
Спасибо! Вся загвоздка в этом среднем курсе за период чтоб получить только единую цифру... или в Ресурсах (раз там можно усреднить этот показатель средний курс), сделать чтоб все еще и ссумировалось по выбоке... но это уже мое топтание на месте(
5 FIXXXL
 
07.02.19
13:10
(4) долго описывать, погугли "срез последних на каждую дату СКД"
там надо два набора соединить через параметр...
6 FIXXXL
 
07.02.19
13:11
(0) >потом среднюю за указанный период
а период этот кто и как-где задает?
7 Pchelinka
 
07.02.19
13:35
"Устанавливаю связь для расчета курса на каждую календарную дату:
Источник-Календарь, Приемник-СреднийКурс, ВыражениеИсточник-ДатаКалендаря, Выражение приемник- ДатаСрК, Параметр-ДатаСрК"

  FIXXXL, в этой части описания, я же указываю, что через параметр ДатаСрК передаю календарную дату для справочника КурсыВалютСрезПоследних для расчета на эту дату последнего подходящего курса по валюте ГРН (КурсыВалютСрезПоследних.Валюта.Код = "980")

Получается у меня три набора данных два увязанны по Дате: СреднийКурс и Календарь, и там где продажи- Соединяю Наборы данных средний курс и продажи по наименованию валюты "ГРН" Для этого в продажах создала поле"ГРН" и соответственно  
Источник-Продажи, Приемник-СреднийКурс, ВыражениеИсточник-НазваниеВалюты, Выражение приемник- ВалютаНаименование.


Но тк в наборе средний курс на каждую дату, мне на каждую дату и продажи начинает считать что мне не надо. Надо передать не по дням а одну цифру среднего курса за период.. но свернуть ее не получается из-за того что дата с другого ж набора передается на каждый день заданного периода..
8 aleks_default
 
07.02.19
13:35
Курс для вычисления среднего надо не срезом последних брать, а все записи за период. Срез последних всегда одну запись возвращать будет
9 runoff_runoff
 
07.02.19
13:37
лучше курс на момент каждого документа.. так будет точнее..
10 Pchelinka
 
07.02.19
13:37
Период задается на форме пользователем при построении отчета, период за который он хочет видеть продажи= периоду календаря с по.. и тут итого за этот период должна быть одна цифра средний курс за этот промежуток
11 Pchelinka
 
07.02.19
13:40
runoff_runoff, согласна такой вариант их не устроил, слишком точный.. выявляется курсовая разница...не стыкуется с други отчетами где они вбивают одну цифру средний курс и все им рассчитывается.. тут они вбивать не захотели, тк этим отчетом не один человек будет пользоваться а много бухгалтеров, чтобы не ошиблись в цифре сказали надо высчитывать(
12 Pchelinka
 
07.02.19
13:42
aleks_default, я пробовала не срезом последних, тогда получается выводится пусто по дате, когда в справочник валют ничего не вносили, приходится вычислять по срезу последних
13 aleks_default
 
07.02.19
14:05
Пробуйте курс получать подзапросом в основном наборе, а не отдельным набором. Связи между наборами данных предмет малоизученный и некоторым образом загадочный.
14 Pchelinka
 
07.02.19
14:15
aleks_default "Пробуйте курс получать подзапросом в основном наборе" я пыталась, но подзапросом не понимаю, как передать параметр календарную дату для определения среднего курса на каждую дату(( такую передачу даты, нашла только через увязку отдельных наборов
15 aleks_default
 
07.02.19
14:28
Все же просто. Вижу попытки действительно разобраться в вопросе поэтому подскажу немного. На мой взляд будет нечто вроде такого:

ВЫБРАТЬ        
        ДанныеПродаж.ДатаПродажи КАК ДатаПродажи,
        СРЕДНЕЕ(КурсыВалют.Кратность/КурсыВалют.Курс) КАК КК
    ИЗ
        РегистрСведений.КурсыВалют КАК КурсыВалют
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеПродаж КАК ДанныеПродаж
            ПО КурсыВалют.Период <= ДанныеПродаж.ДатаПродажи                
                И КурсыВалют.Период >= &НачалоПериода
                И (КурсыВалют.Валюта = ДанныеПродаж.ВалютаПродажи)
    
    СГРУППИРОВАТЬ ПО
        ДанныеПродаж.ДатаПродажи
16 Pchelinka
 
07.02.19
14:40
aleks_default, спасибо, только подобный вариант у меня в отчете присутствует и он не устроил, такой вариант слишком правильный)) для них нужно именно как они средний курс высчитывают -по справочнику валют на каждый день (например месяц)  определить курс и вычислить среднюю за месяц и эту цифру уже соотносить с продажами.. а в приведенном варианте с учетом того что валюта не заполняется каждый день, средняя определиться только по введенным дням и будет отличаться от той средний что они используют для подсчетов
17 aleks_default
 
07.02.19
14:42
А, то есть вам надо еще с календарем соединить?
18 Pchelinka
 
07.02.19
14:46
угу с календарем.. использую РегистрСведений.РегламентированныйПроизводственныйКалендарь
19 aleks_default
 
07.02.19
14:50
Ну сначала вот так

ВЫБРАТЬ
    КурсВалюты.Валюта КАК Валюта,    
    КурсВалюты.Курс КАК Курс,
    КурсВалюты.Кратность КАК Кратность,
    Вложенный.ДатаКалендаря КАК ДатаКалендаря
ПОМЕСТИТЬ КурсВалютыУпр
ИЗ
    (ВЫБРАТЬ
        КурсыВалют.Валюта КАК Валюта,        
        ПроизводственныйкалендарьКакойНибудь.Дата КАК ДатаКалендаря,
        МАКСИМУМ(КурсыВалют.Период) КАК Период
    ИЗ
        РегистрСведений.КурсыВалют КАК КурсыВалют
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПроизводственныйкалендарьКакойНибудь КАК ПроизводственныйкалендарьКакойНибудь
            ПО КурсыВалют.Период <= ПроизводственныйКалендарьКакойНибудь.Дата                
                И (КурсыВалют.Валюта = &Валюта)
    
    СГРУППИРОВАТЬ ПО
        ПроизводственныйкалендарьКакойНибудь.Дата,
        КурсыВалют.Валюта) КАК Вложенный
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсВалюты
        ПО Вложенный.Валюта = КурсВалюты.Валюта            
            И Вложенный.Период = КурсВалюты.Период
20 aleks_default
 
07.02.19
14:51
получите таблицу с курсом на каждую дату календаря, а дальше уже разберетесь
21 Pchelinka
 
07.02.19
15:02
aleks_default, я этого и хочу ж... где ее получить с приведенным примером моего получения через набор данных плохо? Можно ее получить как-то внутри запроса основного? у меня просто не получается кроме как передавать календарную дату параметром через набор данных((((
22 АНДР
 
07.02.19
15:10
Курс на каждую дату, если его нет - берем из предыдущей даты.

Select '20190101' D, 1 V into #t1  union Select '20190103', 3
Select '20190101' D into #t2  union Select '20190102' union Select '20190103' union Select '20190104' union Select '20181231'

Select * From #t1
Select * From #t2

Select vt2.D, Max(vt1.v) From #t2 vt2 Left Join #t1 vt1 On vt2.D >= vt1.D Group by vt2.D

P.S. 1Ски под рукой нет
23 gantonio
 
07.02.19
15:15
новое слово в учете ? Почему бы просто не переводить каждую продажу в доллары, а уже для нее считать среднее.
Потому как ваши действия имеют смыл лишь в пространстве ваших данных. Например меняем таблицу с курсами добавляя туда новый курс и все распалзается даже если в тот день не было продажи.
24 aleks_default
 
07.02.19
15:40
(21)Я вам уже половину задачи написал в (19). Вам еще и  переночевать негде?
25 Pchelinka
 
07.02.19
15:53
ООо...   aleks_default, спасибо, сейчас опробую Ваш метод! 19е сообщение как-то проморгала, сорьки))
26 FIXXXL
 
07.02.19
15:59
К чему эти "пляски", если
>Надо передать не по дням а одну цифру среднего курса за период.
и
>Период задается на форме пользователем при построении отчета, период за который он хочет видеть продажи= периоду календаря с по.. и тут итого за этот период должна быть одна цифра средний курс за этот промежуток

рассчитай тупо средний курс за период и программно установи в параметр СКД, а в запросах продаж пользуй этот самый параметр
27 FIXXXL
 
07.02.19
16:57
(26) + можешь этот средний курс посчитать в функции общего модуля и прописать эту функцию прямо в значении параметра
28 toypaul
 
гуру
08.02.19
13:16
все читать лень. напишу свои мысли

средний курс за период посчитать не проблема

все считается в одном пакетном запросе вместе с данными по продажам (коли курс нужен один за период)

1. считаем курс на дату начала
2. выбираем движения по регистру сведений за период
складываем 1 и 2 делим на кол-во записей (1 + записей из 2)

получаем средний курс. далее уже по ТЗ делим на него нужные суммы. тем вообще не про СКД
29 aleks_default
 
08.02.19
13:20
(28)Насколько я понял, тут нужен не общий курс за период а средний курс от начала периода до даты продажи. Какой смысл в курсе который был уже после продажи, зачем его включать в расчет среднего?
30 toypaul
 
гуру
08.02.19
13:27
(29) так оно. а кто его знает. пусть автор нам ответит (еще раз и еще много раз) - средний курс надо за весь период или с начала до даты документа. а кто его знает. может у них своя методика :)
31 Pchelinka
 
08.02.19
14:37
здравствуйте, я в печали.. запуталась в мыслях совершенно и туплю страшно, и манны не хватает для этих временных таблиц не все шишки набила(((( Средний курс нужен как одна сумма полученная за период построения отчета пользователем, например с 01.02.19 по 08.02.19 (заполняем курс на каждый день и делим на количество дней в заданном периоде (8) итого например 28,50 и на эти 28,50 делим нашу продажу в грн.) Я прикрутила в отчет механизм как написал aleks_default,  но счастья еще не наступило тк он не свернулся до одной суммы и когда я соединяю эту ВТ с основной частью в запросе он показывает кокой-то другой курс похоже что по датам движения документов а не неизменную одну вычисленныю сумму во ВТ... думаю может эту временную таблицу запихнуть в созданную Описание ВТ где задать два поля Валюта и средний курс и в него как-то передать одну цифру среднего курса из ВТ.. только я этого пока не умею ищу в нете как это и пока безуспешно.. вот(
32 Pchelinka
 
08.02.19
14:43
ВЫБРАТЬ
    КурсыВалют.Валюта КАК Валюта,
    КурсыВалют.Период КАК Период,
    СРЕДНЕЕ(КурсыВалют.Кратность / КурсыВалют.Курс) КАК СреднийКурсПериода,
    "" КАК Номенклатура
ПОМЕСТИТЬ СреднийГРНКурс
{ВЫБРАТЬ
    Валюта.*,
    Период,
    СреднийКурсПериода}
ИЗ
    (ВЫБРАТЬ
        КурсыВалют.Валюта КАК Валюта,
        РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря,
        МАКСИМУМ(КурсыВалют.Период) КАК Период
    {ВЫБРАТЬ
        Валюта.*,
        ДатаКалендаря,
        Период}
    ИЗ
        РегистрСведений.КурсыВалют КАК КурсыВалют
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
            ПО КурсыВалют.Период <= РегламентированныйПроизводственныйКалендарь.КалендарныеДни
    ГДЕ
        РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &Дата1
        И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &Дата2
        И КурсыВалют.Валюта.Наименование = "ГРН"
    
    СГРУППИРОВАТЬ ПО
        РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
        КурсыВалют.Валюта) КАК Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
        ПО Календарь.Период = КурсыВалют.Период
            И Календарь.Валюта = КурсыВалют.Валюта

СГРУППИРОВАТЬ ПО
    КурсыВалют.Валюта,
    КурсыВалют.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) КАК Себестоимость,
    СУММА(ПродажиОбороты.СтоимостьОборот) КАК ПродажаДол,
    
    СУММА(ВЫБОР
            КОГДА ТИПЗНАЧЕНИЯ(ПродажиОбороты.Регистратор) = ТИП(Документ.РеализацияУчредителю)
                ТОГДА РеалУчредитГрн.ПродажаУчрГрн * (ВЫРАЗИТЬ(СреднийГРНКурс.СреднийКурсПериода КАК ЧИСЛО(15, 2)))
            ИНАЧЕ ПродажиОбороты.СтоимостьВВалютеДокументаОборот
        КОНЕЦ) КАК ПродажаГРНпоСрКурсуПериода,
    ЕСТЬNULL(ПродажиОбороты.Регистратор.ВалютаДокумента, 0) КАК ВалДок
и тд..
ГДЕ
    (ТИПЗНАЧЕНИЯ(ПродажиОбороты.Регистратор) = ТИП(Документ.ОтчетОРозничныхПродажах)
            ИЛИ ТИПЗНАЧЕНИЯ(ПродажиОбороты.Регистратор) = ТИП(Документ.РеализацияУчредителю)
            ИЛИ ТИПЗНАЧЕНИЯ(ПродажиОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
                И ПродажиОбороты.Контрагент.Родитель.Код = "O00000557"
            ИЛИ ТИПЗНАЧЕНИЯ(ПродажиОбороты.Регистратор) = ТИП(Документ.ОтчетКомиссионераОПродажах)
                И ПродажиОбороты.Контрагент.Родитель.Код = "O00000294")
    И ПродажиОбороты.Номенклатура.ТорговыйБренд.Наименование <> "NO"

И по какому полю соединять я не знаю тк в регистре продажи, не во всех регистраторах есть поле заполненное Валюта документа увы.. Сочинила, что когда нет пустой номенклатуры
33 aleks_default
 
08.02.19
14:46
Значит я слишком все усложнил. Видимо только у меня такие замороченные задачи бывают, у людей все попроще:)
34 NaumS
 
08.02.19
14:49
такую задачу проще связанным решить подзапросом:
http://catalog.mista.ru/public/864434/

см пример в разделе "Курсы валют на конец месяца". Приведенный пример легко адаптировать под "средний курс"
35 Pchelinka
 
08.02.19
14:49
aleks_default, думаю что дело в моем еще малом опыте постижения таких вершин, но я должна победить)
36 toypaul
 
гуру
08.02.19
15:06
(34) какие подзапросы. написано же одна сумма за период

(31) в (28) написано решение

надо сначала его прочитать, потом понять. потом сделать.
37 aleks_default
 
08.02.19
15:07
1. Из первого запроса (самого верхнего уровня) уберите поле "Период". Группировка по периоду здесь уже не нужна
2. ПО КурсыВалют.Период <= РегламентированныйПроизводственныйКалендарь.КалендарныеДни вот это что? Здесь не должно быть ПО КурсыВалют.Период <= РегламентированныйПроизводственныйКалендарь.ДатаКалендаря?
38 aleks_default
 
08.02.19
15:09
(36) нужен средневзвешенный курс. по количеству дней в периоде, а курс заносился не каждый день
39 toypaul
 
гуру
08.02.19
15:34
средневзвешенный ... вон оно чо
40 NaumS
 
08.02.19
15:49
(36) похоже, усложнил - понял, что средневзвешенный "по дату операции" на каждую операцию с некоторой даты.
Если просто за период - то да, (39) "вон оно чо".
41 Pchelinka
 
08.02.19
16:25
aleks_default, спасибо за замечания, исправила! но у меня почему-то в отчет так же среднюю выводит не корректно( переношу эту часть в отдельный набор данных, соединяю по пустому значению с основной частью и вычисляю через Ресурсы вручную, благо тут уже одна цифрочка средний курс, за что Вам премного благодарна!!)), пока еще тружусь в этом направлении))
42 aleks_default
 
08.02.19
16:59
А в чем некорректность получается?
В отдельный набор выносить не надо. Соединяйте так
ОсновнаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ СреднийГРНКурс ПО Истина (так проще для понимания, или можно вообще через запятую)
43 Pchelinka
 
08.02.19
17:48
должен быть средний 23 а в отчет выводит и пересчитывает 18, хотя я отдельно вывела эту часть
ВЫБРАТЬ
    КурсыВалют.Валюта КАК Валюта,
    СРЕДНЕЕ(КурсыВалют.Кратность / КурсыВалют.Курс) КАК СреднийКурсПериода
ПОМЕСТИТЬ СреднийГРНКурс
{ВЫБРАТЬ
    Валюта.*,
    СреднийКурсПериода}
ИЗ
    (ВЫБРАТЬ
        КурсыВалют.Валюта КАК Валюта,
        РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря,
        МАКСИМУМ(КурсыВалют.Период) КАК Период
    {ВЫБРАТЬ
        Валюта.*,
        ДатаКалендаря,
        Период}
    ИЗ
        РегистрСведений.КурсыВалют КАК КурсыВалют
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
            ПО КурсыВалют.Период <= РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
    ГДЕ
        РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &Дата1
        И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &Дата2
        И КурсыВалют.Валюта.Наименование = "ГРН"
    
    СГРУППИРОВАТЬ ПО
        РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
        КурсыВалют.Валюта) КАК Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
        ПО Календарь.Период = КурсыВалют.Период
            И Календарь.Валюта = КурсыВалют.Валюта
{ГДЕ
    КурсыВалют.Валюта.*}

СГРУППИРОВАТЬ ПО
    КурсыВалют.Валюта
;
в отдельный отчет все правильно считает по среднему..
СРЕДНЕЕ(ВЫРАЗИТЬ(СреднийГРНКурс.СреднийКурсПериода КАК ЧИСЛО(15, 2))) КАК СрКурсНаКалДату,....
СГРУППИРОВАТЬ ПО
            ПродажиОбороты.Номенклатура,
            ПродажиОбороты.ХарактеристикаНоменклатуры,
            ПродажиОбороты.Регистратор,
                        ПродажиОбороты.СтоимостьВВалютеДокументаОборот) КАК РеалУчредитГрн
        ПО ПродажиОбороты.Регистратор = РеалУчредитГрн.Регистратор
            И ПродажиОбороты.Номенклатура = РеалУчредитГрн.Номенклатура
            И ПродажиОбороты.ХарактеристикаНоменклатуры = РеалУчредитГрн.ХарактеристикаНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО ПродажиОбороты.ХарактеристикаНоменклатуры = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.Сезон))
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СА_СезонныеГруппыНоменклатуры.СрезПоследних(&Дата2, ) КАК СА_СезонныеГруппыНоменклатурыСрезПоследних
        ПО ПродажиОбороты.Номенклатура = СА_СезонныеГруппыНоменклатурыСрезПоследних.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ СреднийГРНКурс КАК СреднийГРНКурс
        ПО (ИСТИНА)
44 aleks_default
 
08.02.19
17:54
А во втором запросе зачем же СРЕДНЕЕ(ВЫРАЗИТЬ(СреднийГРНКурс.СреднийКурсПериода КАК ЧИСЛО(15, 2))) КАК СрКурсНаКалДату,....?  Не надо так. Берите "Максимум(СреднийГРНКурс.СреднийКурсПериода)" если уж группировки делаете
45 aleks_default
 
08.02.19
17:55
Вы курс уже вычислили в первом запросе, а во втором опять среднее считаете по количеству дет. записей второго запроса.
46 Pchelinka
 
11.02.19
15:01
aleks_default, крутила вертела.. когда внутри запроса вероятно при взаимосвязи с оборотом, который возможно в какой-то день отсутствовал.. или может еще покой причине.. не могу понять, средний курс не полный.. было 18 поставила Максимум а не среднее..что-то еще покрутила.. может левое соединение по календарной дате, уж кучу всего там перепробовала)) получился курс 28,23 а должен быть 28,24
Через добавление отдельного набора по среднему курсу и вычисления в Вычисляемых полях, все получилось)) Огромнейшее Вам спасибо, что провели меня к победе над отчетом! Урра!!!)))
47 Pchelinka
 
12.02.19
17:39
aleks_default, это снова я))) видно отдохнув от отчета за выходные, у меня получилось получить корректный курс во вложенном запросе, как Вы предлагали)) Галку поставила не там и еще по валюте период ограничила с испуга)) надо иногда отдыхать от задачи, которая замучила))) и с новыми силами все получается
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс