8.х Курс валют на дату документа, помогите модифицировать запрос.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Vladius, 29 сен 2014.

  1. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Перепробовал кучу вариантов никак не получается получить курс валюта на дату документа :(
    Сейчас у меня курс валюта вытягивается срез последних на дату окончания отчета. Есть Чек ККМ по дате этого чека надо получить курс, выручайте!!!

    Вот запрос.
    Код:
    "ВЫБРАТЬ
                            |    ЧекККМТовары.Ссылка.Склад КАК Склад,
                            |    ЧекККМТовары.Ссылка.Продавец КАК Продавец,
                            |    СУММА(ВЫБОР
                            |            КОГДА ЧекККМТовары.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Возврат)
                            |                ТОГДА ЧекККМТовары.Сумма * -1 / КурсыВалютСрезПоследних.Курс
                            |            ИНАЧЕ ЧекККМТовары.Сумма / КурсыВалютСрезПоследних.Курс
                            |        КОНЕЦ) КАК Факт,
                            |    ЧекККМТовары.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
                            |    СУММА(ЧекККМТовары.Количество) КАК Количество,
                            |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЧекККМТовары.Ссылка) КАК КоличествоЧеков,
                            |    СУММА(ЧекККМТовары.Цена / КурсыВалютСрезПоследних.Курс) КАК Цена,
                            |    КОНЕЦПЕРИОДА(ЧекККМТовары.Ссылка.Дата, ДЕНЬ) КАК Период,
                            |    КОНЕЦПЕРИОДА(ЧекККМТовары.Ссылка.Дата, МЕСЯЦ) КАК ПериодМесяц
                            |{ВЫБРАТЬ
                            |    Склад.*,
                            |    Продавец.*,
                            |    Факт,
                            |    ВидНоменклатуры.*,
                            |    Количество,
                            |    КоличествоЧеков.*,
                            |    Цена}
                            |ИЗ
                            |    Документ.ЧекККМ.Товары КАК ЧекККМТовары,
                            |    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКонца, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
                            |ГДЕ
                            |    ЧекККМТовары.Ссылка.Проведен
                            |    И ЧекККМТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
                            |    И ЧекККМТовары.Ссылка.ОтчетОРозничныхПродажах.Проведен
                            |{ГДЕ
                            |    ЧекККМТовары.Ссылка.Склад.*,
                            |    ЧекККМТовары.Ссылка.Продавец.*}
                            |
                            |СГРУППИРОВАТЬ ПО
                            |    ЧекККМТовары.Ссылка.Склад,
                            |    ЧекККМТовары.Ссылка.Продавец,
                            |    ЧекККМТовары.Номенклатура.ВидНоменклатуры,
                            |    КОНЕЦПЕРИОДА(ЧекККМТовары.Ссылка.Дата, ДЕНЬ),
                            |    КОНЕЦПЕРИОДА(ЧекККМТовары.Ссылка.Дата, МЕСЯЦ)
                            |
                            |ОБЪЕДИНИТЬ ВСЕ
                            |
                            |ВЫБРАТЬ
                            |    Склады.Ссылка,
                            |    NULL,
                            |    СУММА(ПродажиОбороты.СтоимостьОборот),
                            |    ПродажиОбороты.Номенклатура.ВидНоменклатуры,
                            |    СУММА(ПродажиОбороты.КоличествоОборот),
                            |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Регистратор),
                            |    СУММА(ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот),
                            |    КОНЕЦПЕРИОДА(ПродажиОбороты.Период, ДЕНЬ),
                            |    КОНЕЦПЕРИОДА(ПродажиОбороты.Период, МЕСЯЦ)
                            |ИЗ
                            |    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаКонца, Регистратор, ДоговорКонтрагента <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)) КАК ПродажиОбороты
                            |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
                            |        ПО ПродажиОбороты.Подразделение = Склады.Подразделение
                            |{ГДЕ
                            |    Склады.Ссылка.* КАК Склад}
                            |
                            |СГРУППИРОВАТЬ ПО
                            |    ПродажиОбороты.Номенклатура.ВидНоменклатуры,
                            |    Склады.Ссылка,
                            |    КОНЕЦПЕРИОДА(ПродажиОбороты.Период, ДЕНЬ),
                            |    КОНЕЦПЕРИОДА(ПродажиОбороты.Период, МЕСЯЦ)
                            |
                            |УПОРЯДОЧИТЬ ПО
                            |    Склад,
                            |    ПериодМесяц
                            |ИТОГИ
                            |    СУММА(Факт),
                            |    СУММА(Количество),
                            |    СУММА(КоличествоЧеков),
                            |    СУММА(Цена)
                            |ПО
                            |    Склад,
                            |    Продавец,
                            |    ПериодМесяц"
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Вот в помощь. http://infostart.ru/public/77568/
    Но лучше сделайте это в обычном цикле. Т.е. сначала перебирайте документы, затем в цикле получайте значение по дате.
  3. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Я хотел в запросе это сделать, просто использую построитель отчета...
  4. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    А разве так нельзя? Или я чего-то не понимаю...
    Тут вроде срез и не нужен как бы...курсы то каждый день загружаются...
    Код:
    ВЫБРАТЬ
    *
    ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО КурсыВалют.Период = НАЧАЛОПЕРИОДА(ЧекККМТовары.Ссылка.Дата, ДЕНЬ) И КурсыВалют.Валюта = &Валюта
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Срез нужен на дату дока, все правильно, иначе может бардак начать твориться.
  6. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Бардак уже произошел, прибыль на 2000$ меньше. Вот и ломаю голову как исправить.
  7. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
  8. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    А какой бардак то?
    Курсы валют - периодический в пределах дня; загружаются курсы каждый день, иначе быть не может.
    Тогда должно прокатывать
    Код:
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО КурсыВалют.Период = НАЧАЛОПЕРИОДА(ЧекККМТовары.Ссылка.Дата, ДЕНЬ) И КурсыВалют.Валюта = &Валюта
    К тому же, судя по коду, это не "настоящий" отчет по прибыли, а просто информативный.
  9. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Во вложении пример запроса. Под свои нужды только адаптировать нужно, есть комментарии, я думаю реально будет разобраться.

    Вложения:

  10. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Не прокатывает потому что у нас курсы валют в базе изменяются руками. И каждый день эти курсы не меняют.
  11. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    Не понял, у Вас курсы валют вручную вносят?)
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Вы этот все для чего делаете? если отчет построить и отчет на СКД, то все просто делается через 2 набора данных и свзять по параметру. Как получение остатка на каждую дату.
  13. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    прогрузите из инете просто курсы и всё
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    А если у них свой курс?
  15. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    у них свой, у их партнёров/клиентов у каждого свой, у центробанка свой
    и в итоге такая сборная солянка ассорти
  16. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Да.
  17. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
  18. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Этот пример уже много раз пробовал нифига не получилось, добавил в док. реквизит курс и заполнил его у всех документов, потом в запросе курс беру с документа, решил быстро проблему. :)
    Последнее редактирование модератором: 1 окт 2014

Поделиться этой страницей