Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Помогите разобраться с запросом в скд

Помогите разобраться с запросом в скд
Я
   maxim-sychov
 
09.11.16 - 12:55
Имеем:
Справочник - Дисконтные карты
Документ - продажа
Регистр - накопление по картам (если в док.продажа указана карта то делаем запись)


Нужно:
по каждой карте получить ОДИН ПОСЛЕДНИЙ документ выполнивший двидение по регистру.

выбрать ПЕРВЫЕ 1 (с упорядочиванием по дате) выбирает всего 1 документ. А нужно 1 по каждой карте!(если есть)


всю голову сломал (((
   Живой Ископаемый
1 - 09.11.16 - 13:01
В СКД возможны пакеты.
   DrShad
 
2 - 09.11.16 - 13:04
выбирай где дата максимум
   maxim-sychov
 
3 - 09.11.16 - 13:04
Я знаю.

И что в эти пакеты пихать?

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

результат - ОДИН документ. а не один по каждой карте...
   Живой Ископаемый
4 - 09.11.16 - 13:24
Короче, я делал (в том числе) и так: Я готовил СКД программно, и по ходу, перед выполнением  запроса СКД выполнял еще и другой запрос, в результате которого я получал для последний документ для нужной мне группировки. Помещал в фиксированное соответствие.
В основной СКД имел вычисляемое поле, в функцию которого передавал или айди или ссылку - значение группировки, и возвращал из фиксированного соответствия последний документ.
Ну то есть такой себе кэш подготавливал.
   НЕА123
 
5 - 09.11.16 - 13:30
   maxim-sychov
 
6 - 09.11.16 - 13:40
(4) Мне тогда непонятна идея "Выбрать первые N"

Наверняка просто не правильно использую...
   Потрошитель Запросов
 
7 - 09.11.16 - 13:42
Выбрать
Максимум(ДокументПродажи.Дата) КАК Дата,
ДокументПродажи.ДисконтнаяКарта
ПОМЕСТИТЬ ВТ
ИЗ
Документ.ДокументыПродажи КАК ДокументПродажи
ГДЕ 
ДокументПродажи.Проведен
СГРУППИРОВАТЬ ПО
ДокументПродажи.ДисконтнаяКарта
;
////////////////

Выбрать
ДокументПродажи.Ссылка,
ВТ.ДисконтнаяКарта
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДокументыПродажи КАК ДокументПродажи
ПО ВТ.Дата = ДокументПродажи.Дата
И ДокументПродажи.Проведен


Так?
   Живой Ископаемый
8 - 09.11.16 - 13:55
2(6) да, он тут вообще не годится
   maxim-sychov
 
9 - 09.11.16 - 14:25
(7) Похоже на правду. НО выбирает всеравно все документы

в результате:

карта1 - Док 3
карта1 - Док 2
карта1 - Док 1

карта2 - Док 1

карта3 - Док 1
   maxim-sychov
 
10 - 09.11.16 - 14:27
Стоп...
   maxim-sychov
 
11 - 09.11.16 - 15:19
(7)
В таком варианте работает...
Но запуская в копии с малым количеством доков  -все отображает мгновенно, а там где много документов.... зависает (
   aleks_default
 
12 - 09.11.16 - 16:29
(7) бред
   bootini
 
13 - 09.11.16 - 16:34
(12) почему же бред, вот в соседней теме жалуются на долгую работу аналогичной конструкции
Долгое открытие формы в клиент-серверном режиме
и там только цены номенклатуры, а тут дисконтные карты, которых может быть сотня тысяч, а уж продаж по ним у-у...
   Windyhead
 
14 - 09.11.16 - 16:40
в (7) соединять надо не только по дате , но и по диск. карте, а то при совпадении дат у документов фигню получите
   aleks_default
 
15 - 09.11.16 - 16:53
|Выбрать
|Док.Ссылка,
|Док.ДисконтнаяКарта
|ИЗ                 
|Документ.ДокументыПродажи КАК Док
|ГДЕ Док.Дата в (Выбрать Максимум(Док1.Дата) ИЗ Документ.ДокументыПродажи КАК Док1 ГДЕ Док.ДисконтнаяКарта = Док1.ДисконтнаяКарта)
   Потрошитель Запросов
 
16 - 10.11.16 - 05:35
(14) действительно, мой косяк
(15) разве вложенный в условие запрос отработает быстрее пакета?
   DmVl76
 
17 - 10.11.16 - 06:12
</CODE>
ВЫБРАТЬ
    ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта,
    МАКСИМУМ(ПродажиПоДисконтнымКартамОбороты.Период) КАК Период
ПОМЕСТИТЬ втКартыСМаксПериодомПродажи
ИЗ
    РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(, , Регистратор, ) КАК ПродажиПоДисконтнымКартамОбороты

СГРУППИРОВАТЬ ПО
    ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    втКартыСМаксПериодомПродажи.ДисконтнаяКарта,
    ПродажиПоДисконтнымКартамОбороты.Регистратор
ИЗ
    втКартыСМаксПериодомПродажи КАК втКартыСМаксПериодомПродажи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(, , Регистратор, ) КАК ПродажиПоДисконтнымКартамОбороты
        ПО втКартыСМаксПериодомПродажи.ДисконтнаяКарта = ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта
            И втКартыСМаксПериодомПродажи.Период = ПродажиПоДисконтнымКартамОбороты.Период
</CODE>
   Windyhead
 
18 - 10.11.16 - 10:25
(15) временные таблицы для слабаков )))

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.