По теме из базы знаний
- Загрузка номенклатуры в УТ11, КА 2, ERP 2, Розница 2 из Excel. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки
- Регистры сведений 1С. Как это устроено.
- Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)
- Редактор регистров сведений для управляемых форм 8.3
- Регистры сведений 1С для "чайников"
Найденные решения
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ВалютыСрезПоследних.Период, ДЕНЬ) КАК Период
ПОМЕСТИТЬ Масс
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК ВалютыСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
Валюты.Валюта,
Валюты.Курс,
Валюты.Период КАК Период
ИЗ
РегистрСведений.КурсыВалют КАК Валюты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Масс КАК Масс
ПО Валюты.Период < Масс.Период
ГДЕ
Валюты.Валюта = &Валюта
УПОРЯДОЧИТЬ ПО
Период УБЫВ
Показать
(15) Можно и так:
Этот запрос будет чуть быстрее.
ВЫБРАТЬ
Валюты.Период КАК Период,
Валюты.Валюта,
Валюты.Курс КАК Курс
ИЗ
РегистрСведений.Валюты.СрезПоследних КАК ВалютыСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Валюты КАК Валюты
ПО (Валюты.Валюта = ВалютыСрезПоследних.Валюта
И ВалютыСрезПоследних.Период <> Валюты.Период)
СГРУППИРОВАТЬ ПО
Валюты.Валюта,
Валюты.Период,
Валюты.Курс
ПоказатьЭтот запрос будет чуть быстрее.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Добрый день. Есть ещё вот такой вариант решения:
ВЫБРАТЬ ПЕРВЫЕ 1
КурсыВалют.Период,
КурсыВалют.Валюта,
КурсыВалют.Курс
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
МАКСИМУМ(КурсыВалют.Период) КАК Период,
&ВалютаСсылка КАК Валюта
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Валюта = &ВалютаСсылка) КАК МаксПериодКурсаВалюты
ПО (МаксПериодКурсаВалюты.Период > КурсыВалют.Период)
И (МаксПериодКурсаВалюты.Валюта = КурсыВалют.Валюта)
УПОРЯДОЧИТЬ ПО
КурсыВалют.Период УБЫВ
Показать
Подскажите, а где можно в запрос вписать Функцию(Новый граница.ВидГраницы.Включая)?. Конец дня у меня получается, но мне надо границу вместо КонецДня
Вот Запрос;
ВЫБРАТЬ
ВалютыСрезПоследних.Валюта,
ВалютыСрезПоследних.Курс,
Период
ИЗ
РегистрСведений.Валюты.СрезПоследних(&Период, Валюта = &Валюта) КАК ВалютыСрезПоследних
Вот Запрос;
ВЫБРАТЬ
ВалютыСрезПоследних.Валюта,
ВалютыСрезПоследних.Курс,
Период
ИЗ
РегистрСведений.Валюты.СрезПоследних(&Период, Валюта = &Валюта) КАК ВалютыСрезПоследних
Сасибо за ответ!
Подскажите, в функции РазностьДат написал следующее РазностьДат(&Период, 1, День) система ругается говорит неверный параметр, подскажите что не так могу делать?
ВЫБРАТЬ
ВалютыСрезПоследних.Валюта,
ВалютыСрезПоследних.Курс,
Период
ИЗ
РегистрСведений.Валюты.СрезПоследних(РазностьДат(&Период, 1, День), Валюта = &Валюта) КАК ВалютыСрезПоследних
Подскажите, в функции РазностьДат написал следующее РазностьДат(&Период, 1, День) система ругается говорит неверный параметр, подскажите что не так могу делать?
ВЫБРАТЬ
ВалютыСрезПоследних.Валюта,
ВалютыСрезПоследних.Курс,
Период
ИЗ
РегистрСведений.Валюты.СрезПоследних(РазностьДат(&Период, 1, День), Валюта = &Валюта) КАК ВалютыСрезПоследних
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ВалютыСрезПоследних.Период, ДЕНЬ) КАК Период
ПОМЕСТИТЬ Масс
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК ВалютыСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
Валюты.Валюта,
Валюты.Курс,
Валюты.Период КАК Период
ИЗ
РегистрСведений.КурсыВалют КАК Валюты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Масс КАК Масс
ПО Валюты.Период < Масс.Период
ГДЕ
Валюты.Валюта = &Валюта
УПОРЯДОЧИТЬ ПО
Период УБЫВ
Показать
Спасибо вам за ваше решение, вы бы не могли мне прокоментировать эти две строчки:
1.ПО Валюты.Период < Масс.Период, т е правильно ли я понял что поле Валюты.Период должно быть меньше Масс.Период и таким образом происходит отнимание одного дня?
2. Почему вы взяли функцию НачалоПериода?
1.ПО Валюты.Период < Масс.Период, т е правильно ли я понял что поле Валюты.Период должно быть меньше Масс.Период и таким образом происходит отнимание одного дня?
2. Почему вы взяли функцию НачалоПериода?
Добрый день! Подскажите как правильно выбрать все предыдущие курсы валют, кроме актуальных, подскажите что не так делаю, вот код:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ВалютыСрезПоследних.Период, ДЕНЬ) КАК Период,
Валюты.Валюта,
Валюты.Курс КАК Курс
ИЗ
РегистрСведений.Валюты.СрезПоследних КАК ВалютыСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Валюты КАК Валюты
ПО ВалютыСрезПоследних.Период <> Валюты.Период
СГРУППИРОВАТЬ ПО
Валюты.Валюта,
НАЧАЛОПЕРИОДА(ВалютыСрезПоследних.Период, ДЕНЬ),
Валюты.Курс
Показать
(15) Переделал запрос:
ВЫБРАТЬ
Валюты.Период КАК Период,
Валюты.Валюта КАК Валюта,
Валюты.Курс КАК Курс
ИЗ
РегистрСведений.Валюты КАК Валюты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Валюты.СрезПоследних КАК ВалютыСрезПоследних
ПО (Валюты.Валюта = ВалютыСрезПоследних.Валюта
И Валюты.Период = ВалютыСрезПоследних.Период)
ГДЕ
ВалютыСрезПоследних.Период ЕСТЬ NULL
СГРУППИРОВАТЬ ПО
Валюты.Валюта,
Валюты.Курс,
Валюты.Период
Показать
(17)(18) Проверил в консоли, запросы дают не то, что нужно. И вообще, соединять реальную таблицу с виртуальной в одном запросе не рекомендуется.
Для одной заданной валюты я бы еще предложил такой вариант
Для одной заданной валюты я бы еще предложил такой вариант
ВЫБРАТЬ ПЕРВЫЕ 1
ВЗ.Период КАК Период,
ВЗ.Курс КАК Курс
ИЗ
(ВЫБРАТЬ ПЕРВЫЕ 2
КурсыВалют.Период КАК Период,
КурсыВалют.Курс КАК Курс
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Валюта = &Валюта
УПОРЯДОЧИТЬ ПО
Период УБЫВ) КАК ВЗ
УПОРЯДОЧИТЬ ПО
Период
Показать
(25)
виртуальную надо помещать во временную
- да, желательно
с индексацией по объединяемым полям
- не обязательно, затраты на индексацию часто бывают больше выигрыша
или еще почему-то?
- меньше риск, что планировщик выполнения запроса выберет неправильный план, приводящий к большим затратам времени на выполнение запроса, поскольку виртуальный регистр это фактически сложный вложенный запрос, при обработке которого может быть выбран не оптимальный порядок соединения.
(15) Можно и так:
Этот запрос будет чуть быстрее.
ВЫБРАТЬ
Валюты.Период КАК Период,
Валюты.Валюта,
Валюты.Курс КАК Курс
ИЗ
РегистрСведений.Валюты.СрезПоследних КАК ВалютыСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Валюты КАК Валюты
ПО (Валюты.Валюта = ВалютыСрезПоследних.Валюта
И ВалютыСрезПоследних.Период <> Валюты.Период)
СГРУППИРОВАТЬ ПО
Валюты.Валюта,
Валюты.Период,
Валюты.Курс
ПоказатьЭтот запрос будет чуть быстрее.
(18)Спасибо вам за ваше решение вы очень помогли! Вы не могли бы прокомментировать немного вот эти строки кода, мне просто не до конца понятно как работает данное условие при ГДЕ ВалютыСрезПоследних.Период ЕСТЬ NULL
ПО (Валюты.Валюта = ВалютыСрезПоследних.Валюта
И Валюты.Период = ВалютыСрезПоследних.Период)
ГДЕ
ВалютыСрезПоследних.Период ЕСТЬ NULL
Заранее спасибо!
ПО (Валюты.Валюта = ВалютыСрезПоследних.Валюта
И Валюты.Период = ВалютыСрезПоследних.Период)
ГДЕ
ВалютыСрезПоследних.Период ЕСТЬ NULL
Заранее спасибо!
(19)
Предварительно соберется таблица Валюты с левым соединением присоединятся записи из виртуальной таблицы среза последних (что в свою очередь часть записей той же таблицы). Те записи, которых нет в срезе последних, будут иметь в поле ВалютыСрезПоследних.Период значения NULL. Вот по ним и накладываем фильтр. В итоге отсекутся все записи, которые сопоставились из обеих таблиц.
ГДЕ ВалютыСрезПоследних.Период ЕСТЬ NULL
Предварительно соберется таблица Валюты с левым соединением присоединятся записи из виртуальной таблицы среза последних (что в свою очередь часть записей той же таблицы). Те записи, которых нет в срезе последних, будут иметь в поле ВалютыСрезПоследних.Период значения NULL. Вот по ним и накладываем фильтр. В итоге отсекутся все записи, которые сопоставились из обеих таблиц.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот