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

Хранилище

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

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



> Срез последних на каждую дату в запросе , Непосредственно в запросе          
Vofka Подменю пользователя
сообщение 19.02.12, 22:08
Сообщение #1

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

Способ подходит практически для любой ситуации, и поэтому наиболее универсален. Единственный, пожалуй, минус этого способа - если в отчете пользователю не требуется курс, то запрос быдет выбирать избыточные данные.

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

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


В 8.х. вместо обращения к курсам валют удобнее и надежнее использовать временную таблицу с нужными датами, потому что не во всех организациях ведут курсы валют ежедневно. ;-)

Для общего развития:
Что есть срез последних в платформе?

ВЫБРАТЬ
  Рег.Период,
  Рег.Измерение,
  Рег.Ресурс
ИЗ
  РегситрСведений.ПериодическийРегистр.СрезПоследних(&Дата) КАК Рег


В зависимости от периодичности регистра (по времени, по позизии регистратора) ВТ разворачивается в следующий запрос:
1. По времени (год, месяц, ... секунда)

ВЫБРАТЬ
Таблица3.Ресурс,
Таблица3.Измерение,
Таблица3.Период
ИЗ
(ВЫБРАТЬ
  Таблица1.Измерение КАК Измерение,
  МАКСИМУМ(Таблица1.Период) КАК Период
ИЗ
  РегистрСведений.ПериодическийРегистр КАК Таблица1
ГДЕ
  Таблица1.Период <= &Дата
СГРУППИРОВАТЬ ПО
  Таблица1.Измерение) КАК Таблица2
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПериодическийРегистр КАК Таблица3
  ПО Таблица2.Измерение= Таблица3.Измерение
   И Таблица2.Период = Таблица3.Период


2. По позиции регистратора
В данном случае нужно еще раз обернуть выборку

ВЫБРАТЬ
Таблица5.Ресурс,
Таблица5.Измерение,
Таблица5.Период,
Таблица5.Регистратор
ИЗ
(ВЫБРАТЬ
МАКСИМУМ(Таблица3.Регистратор) КАК Регистратор,
Таблица3.Измерение
ИЗ
(ВЫБРАТЬ
  Таблица1.Измерение КАК Измерение,
  МАКСИМУМ(Таблица1.Период) КАК Период
ИЗ
  РегистрСведений.ПериодическийРегистр КАК Таблица1
ГДЕ
  Таблица1.Период <= &Дата
СГРУППИРОВАТЬ ПО
  Таблица1.Измерение) КАК Таблица2
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПериодическийРегистр КАК Таблица3
  ПО Таблица2.Измерение= Таблица3.Измерение
   И Таблица2.Период = Таблица3.Период
СГРУППИРОВАТЬ ПО
  Таблица3.Измерение) КАК Таблица4
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПериодическийРегистр КАК Таблица5
  ПО Таблица4.Измерение = Таблица5.Измерение
   И Таблица4.Регистратор = Таблица5.Регистратор
   И Таблица4.Период= Таблица5.Период // Если документ делает два и более движения в разных периодах!


Все это можно увидеть посмотрев технологический журнал с включенным режимом протоколирования запросов

Ещё один способ с использованием запроса

И пара способов сделать это с помощью системы компоновки данных:
[необходимо зарегистрироваться для просмотра ссылки]
[необходимо зарегистрироваться для просмотра ссылки]

[необходимо зарегистрироваться для просмотра ссылки]

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

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


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

 

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