Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Предыдущие курсы валют , как получить?          
I_Stranger Подменю пользователя
сообщение 06.08.11, 12:50
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Нужно получить предыдущие курсы всех валют (когда либо внесенных в регистр сведений). У кого есть идеи как это сделать?


Signature
Платформа 8.2.19
УТП 8.2

volodya1122 Подменю пользователя
сообщение 06.08.11, 13:03
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

Цитата(I_Stranger @ 06.08.11, 13:50) *
Нужно получить предыдущие курсы всех валют (когда либо внесенных в регистр сведений). У кого есть идеи как это сделать?

Задавайте внятно вопрос, если хотите получить ответ, но прежде прочтите правила....

I_Stranger Подменю пользователя
сообщение 06.08.11, 13:12
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Попытаюсь исправиться - версия 8.2. Нужно получить на ДатуОтчета не текущий курс валюты, а предыдущий (мне нужна будет их разница).
У меня получилось сделать для одной валюты, но нужно для всех.
ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1
    КурсыВалют.Период КАК Период,
    КурсыВалют.Курс,
    КурсыВалют.Валюта
ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            КурсыВалютСрезПоследних.Курс КАК Период,
            КурсыВалютСрезПоследних.Период КАК Курс,
            КурсыВалютСрезПоследних.Валюта КАК Валюта
        ИЗ
            РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОтчета, Валюта = &Валюта) КАК КурсыВалютСрезПоследних) КАК ВложенныйЗапрос
        ПО КурсыВалют.Период <> ВложенныйЗапрос.Период
ГДЕ
    КурсыВалют.Период < &ДатаОтчета
    И КурсыВалют.Валюта = &Валюта

УПОРЯДОЧИТЬ ПО
    Период УБЫВ


Signature
Платформа 8.2.19
УТП 8.2

Vofka Подменю пользователя
сообщение 07.08.11, 18:52
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Что за бред? Если дата отчета 7.08.2011 - выбираем срез последних на (7.08.2011) - 1, т.е. на 6.07.2011 вот и всё.

kivals Подменю пользователя
сообщение 10.08.11, 16:45
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Цитата(Vofka @ 07.08.11, 19:52) *
Что за бред? Если дата отчета 7.08.2011 - выбираем срез последних на (7.08.2011) - 1, т.е. на 6.07.2011 вот и всё.

Уважаемый! Если вы не разобрались в вопросе - не нужно оскорблять вопрошающего!
Во-первых - не "(7.08.2011) - 1", а "(7.08.2011) - 24*60*60*1", т.к. Дата в 8.Х это ДатаВремя, и 1 - это 1 секунда
Во-вторых - если дата отчета припадает на Пн то дата изменения курса будет на 3 дня раньше (в Пт) (я уже молчу про валюты, которые меняются реже чем раз в день) и построенный по Вашему варианту запрос вернет одинаковый результат

По существу вопроса: у меня это получается через пакет (чтобы вложенный запрос ПоследнийКурс не дублировать дважды):

ВЫБРАТЬ
           КурсыВалютСрезПоследних.Период КАК Период,
           КурсыВалютСрезПоследних.Валюта КАК Валюта,
           КурсыВалютСрезПоследних.Курс КАК Курс
       ПОМЕСТИТЬ ПоследнийКурс
       ИЗ
           РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
       ГДЕ
           КурсыВалютСрезПоследних.Период < &ДатаОтчета
           И КурсыВалютСрезПоследних.Валюта В(&СписокВалют)
      ;
      
       ////////////////////////////////////////////////////////////////////////////////
       ВЫБРАТЬ
           КурсыВалют.Валюта,
           КурсыВалют.Период КАК ПредпоследнийПериод,
           КурсыВалют.Курс КАК ПредпоследнийКурс,
           ПоследнийКурс.Период КАК ПоследнийПериод,
           ПоследнийКурс.Курс КАК ПоследнийКурс
       ИЗ
           РегистрСведений.КурсыВалют КАК КурсыВалют
               ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   КурсыВалют.Валюта КАК Валюта,
                   МАКСИМУМ(КурсыВалют.Период) КАК Период
               ИЗ
                   РегистрСведений.КурсыВалют КАК КурсыВалют
                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследнийКурс КАК ВложенныйЗапрос
                       ПО КурсыВалют.Период < ВложенныйЗапрос.Период
                           И КурсыВалют.Валюта = ВложенныйЗапрос.Валюта
              
               СГРУППИРОВАТЬ ПО
                   КурсыВалют.Валюта) КАК ПредпоследнийПериод
               ПО (ПредпоследнийПериод.Валюта = КурсыВалют.Валюта)
                   И (ПредпоследнийПериод.Период = КурсыВалют.Период)
               ЛЕВОЕ СОЕДИНЕНИЕ ПоследнийКурс КАК ПоследнийКурс
               ПО (ПоследнийКурс.Валюта = КурсыВалют.Валюта)

Спасибо сказали: digesha, I_Stranger, MATEVI, Vofka,

Vofka Подменю пользователя
сообщение 10.08.11, 17:44
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата
Если вы не разобрались в вопросе - не нужно оскорблять вопрошающего!

Во-первых, данное обращение было не к вам.
Во-вторых, фраза "что за бред?" - это оскарбление?
В-третьих "(7.08.2011) - 1, т.е. на 6.07.2011" - я думаю доступно понятно, что надо на день меньше. На день. Это техническая опечатка.
В-четвертых: да, не разобрался в вопросе изначально, признаю вину. 20000000.gif

I_Stranger, если моя фраза "что за бред?" вас обидела - прошу прощения.

ЗЫ. kivals, зато согласитесь, как эффектно вы выступили на фоне моего "оскарбления" icon_buba.gif

kivals Подменю пользователя
сообщение 10.08.11, 18:20
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Vofka, просто недавно решал подобную задачу smile.gif

I_Stranger Подменю пользователя
сообщение 11.08.11, 11:43
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

На самом деле, действительно, ДатаОтчета-1день не подходит, по причине высказанной kivals.
kivals Запрос, хорош, да, но как я уже указывала мне нужны все курсы валют, а не один. Кроме как соединить 3 запроса в один, ничего умного в голову не приходи.

Vofka, Вы меня не обидели ни в коем случае. Лишь заставили задуматься - может я не правильно сформулировала вопрос smile.gif


Signature
Платформа 8.2.19
УТП 8.2

Vofka Подменю пользователя
сообщение 11.08.11, 11:56
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата
Лишь заставили задуматься - может я не правильно сформулировала вопрос

Ну я там действительно не разобравшись ляпнул. Может быть немного грубовато получилось и, на самом деле оказалось, что бред у меня в сообщении. Но обидеть не хотел.

I_Stranger Подменю пользователя
сообщение 11.08.11, 12:03
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Тогда мир, дружба, жвачка friends.gif

по теме:
Как все таки, выбрать все курсы валют (в моем случае три) на ПредпоследнийПериод не объединяя три запроса/пакета запросов? Хочется оптимальности, что-ли


Signature
Платформа 8.2.19
УТП 8.2

kivals Подменю пользователя
сообщение 11.08.11, 17:20
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Теперь я не понимаю задачи:
нужны все курсы валют или курсы всех валют?

Мой запрос возвращает для всех валют (заданных параметром СписокВалют) последенее значение курса и предыдущее (а также даты их установки). Для задачи "мне нужна будет их разница" этого вроде как достаточно.

Теперь подумаем теоретически: чтобы узнать предыдущий курс нам нужно узнать дату установки последнего курса - имеем первый запрос, который возвращает по заданным валютам даты установки курса.
После этого нам нужно получить предыдущие даты - второй запрос, который из всех дат выбирает максимальную, но меньше заданной (полученной в первом вопросе).
Ну и третий - по заданной дате (результат второго запроса) получить установленный курс.

У меня меньше не получается smile.gif Может как-то и можно второй и третий запрос свести в один, но я не придумал

Спасибо сказали: I_Stranger,

I_Stranger Подменю пользователя
сообщение 12.08.11, 10:33
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Прошу прощение, за мою невнимательность. Я не правильно использовала список, каюсь. Все работает, все правильно. Спасибо за помощь!


Signature
Платформа 8.2.19
УТП 8.2

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 26.04.24, 17:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!