| 
    
        
     
     | 
    
  | 
Получить срез последних 2 записей. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Kamich    
     25.05.20 
            ✎
    20:21 
 | 
         
        Подскажите плиз...
 
        Задача такая, необходимо ЗАПРОСОМ получить последние 2 записи по регистру сведений с одним измерений. Должно получиться что-то вроде этого: Товар | Класс предпоследний | Класс последний  | 
|||
| 
    1
    
        RomanYS    
     25.05.20 
            ✎
    20:28 
 | 
         
        (0) А  класс предпоследний и последний могут совпадать?     
         | 
|||
| 
    2
    
        Kamich    
     25.05.20 
            ✎
    20:30 
 | 
         
        (1) Да     
         | 
|||
| 
    3
    
        Kamich    
     25.05.20 
            ✎
    20:31 
 | 
         
        (2) Хотя по логике, может и не совпадать. Но кто его знает кто будет "завтра трогать код".     
         | 
|||
| 
    4
    
        RomanYS    
     25.05.20 
            ✎
    20:38 
 | 
         
        может не оптимально, но работает
 
        ВЫБРАТЬ СрезПоследних.ФизЛицо, СрезПоследних.Фамилия, СрезПредПоследних.Фамилия КАК ФамилияПред ИЗ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК СрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних( , НЕ (ФизЛицо, Период) В (ВЫБРАТЬ СрезПоследних.ФизЛицо, СрезПоследних.Период ИЗ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК СрезПоследних)) КАК СрезПредПоследних ПО СрезПоследних.ФизЛицо = СрезПредПоследних.ФизЛицо  | 
|||
| 
    5
    
        Kamich    
     25.05.20 
            ✎
    20:41 
 | 
         
        (4) Вариант интересный, но каково будет если имеется более 10 000 товаров...     
         | 
|||
| 
    6
    
        RomanYS    
     25.05.20 
            ✎
    20:53 
 | 
         
        (5) попробуй. Не факт, что коррелированный запрос или двойное соединение с живой таблицей по максимум(период) будет оптимальнее     
         | 
|||
| 
    7
    
        Kamich    
     25.05.20 
            ✎
    21:09 
 | 
         
        (6) Попробовал, но выдаёт одинаковую информацию( т.е. выдаёт в двух случаях последние данные)     
         | 
|||
| 
    8
    
        Kamich    
     25.05.20 
            ✎
    21:13 
 | 
         
        (4) Выполнил запрос, но не сработало...     
         | 
|||
| 
    9
    
        Kamich    
     25.05.20 
            ✎
    21:22 
 | 
         
        Есть варианты?     
         | 
|||
| 
    10
    
        Ненавижу 1С    
     гуру 
    25.05.20 
            ✎
    21:31 
 | 
         
        Вот тут написано как модифицировать регистр чтобы легко получать любые срезы
 
        https://naf2000.blogspot.com/2013/09/1-8_11.html?m=1  | 
|||
| 
    11
    
        Ботаник Гарден Меран    
     25.05.20 
            ✎
    21:48 
 | 
         
        На партнерке давно было года три назад. Использую.
 
        // срез последних двух ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют Курсы ГДЕ Курсы.Период < &Дата и Курсы.Период в ( ВЫБРАТЬ ПЕРВЫЕ 2 К.Период ИЗ РегистрСведений.КурсыВалют К ГДЕ К.Период < &Дата и К.Валюта = Курсы.Валюта УПОРЯДОЧИТЬ ПО К.Период УБЫВ )  | 
|||
| 
    12
    
        RomanYS    
     25.05.20 
            ✎
    21:50 
 | 
         
        (7) Значит последнее значение совпадает с предпоследним     
         | 
|||
| 
    13
    
        RomanYS    
     25.05.20 
            ✎
    21:51 
 | 
         
        +(12) или запрос адаптировал неправильно. "НЕ" не потерял?     
         | 
|||
| 
    14
    
        RomanYS    
     25.05.20 
            ✎
    21:52 
 | 
         
        (11) Вот он - коррелированный запрос     
         | 
|||
| 
    15
    
        Kamich    
     25.05.20 
            ✎
    22:00 
 | 
         
        (12) Значения разные...
 
        (13) "НЕ" не потерял...  | 
|||
| 
    16
    
        RomanYS    
     25.05.20 
            ✎
    22:01 
 | 
         
        (15) запрос покажи и результат желательно     
         | 
|||
| 
    17
    
        Kamich    
     25.05.20 
            ✎
    22:08 
 | 
         
        (16) 
 
        ВЫБРАТЬ ПоследниеПоказатели.Товар КАК Товар, ПоследниеПоказатели.Период КАК ПоследнийПериод, ПоследниеПоказатели.КлассТовара КАК ПоследнийКлассТовара, ПредПоследниеПоказатели.Период КАК ПредПоследнийПериод, ПредПоследниеПоказатели.КлассТовара КАК ПредПоследнийКлассТовара ИЗ РегистрСведений.ПериодическиеПараметрыТовара.СрезПоследних КАК ПоследниеПоказатели ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодическиеПараметрыТовара.СрезПоследних( , НЕ (Период, Товар) В (ВЫБРАТЬ ПериодическиеПараметрыТовара.Товар, ПериодическиеПараметрыТовара.Период ИЗ РегистрСведений.ПериодическиеПараметрыТовара.СрезПоследних КАК ПериодическиеПараметрыТовара)) КАК ПредПоследниеПоказатели ПО ПоследниеПоказатели.Товар = ПредПоследниеПоказатели.Товар  | 
|||
| 
    18
    
        Kamich    
     25.05.20 
            ✎
    22:11 
 | 
         
        (16) 
 
        Результат https://priscree.ru/img/92cf20f4d925e6.jpg  | 
|||
| 
    19
    
        RomanYS    
     25.05.20 
            ✎
    22:12 
 | 
         
        (17) (Период, Товар) идут в другом порядке в условии     
         | 
|||
| 
    20
    
        Kamich    
     25.05.20 
            ✎
    22:13 
 | 
         
        (19) ааааа....жесть)))     
         | 
|||
| 
    21
    
        Kamich    
     25.05.20 
            ✎
    22:13 
 | 
         
        Спасибо большое! (19)     
         | 
|||
| 
    22
    
        RomanYS    
     25.05.20 
            ✎
    22:14 
 | 
         
        (21) по скорости то норм?     
         | 
|||
| 
    23
    
        Kamich    
     25.05.20 
            ✎
    22:15 
 | 
         
        (22) 16 000 строк за 0,8 секунд.     
         | 
|||
| 
    24
    
        RomanYS    
     25.05.20 
            ✎
    22:17 
 | 
         
        (23) норм, а (11) не пробовал?     
         | 
|||
| 
    25
    
        Kamich    
     25.05.20 
            ✎
    22:17 
 | 
         
        (19) С чем связанно этот порядок? Раз е тут не соблюдается условие "И" ?     
         | 
|||
| 
    26
    
        RomanYS    
     25.05.20 
            ✎
    22:18 
 | 
         
        (25) Проверяется совпадение пары (набора). Порядок конечно важен     
         | 
|||
| 
    27
    
        Kamich    
     25.05.20 
            ✎
    22:19 
 | 
         
        (26) Буду иметь ввиду.     
         | 
|||
| 
    28
    
        Kamich    
     25.05.20 
            ✎
    22:20 
 | 
         
        (24) Попробовал отбирает действительно 2 последних от даты запроса.     
         | 
|||
| 
    29
    
        Kamich    
     25.05.20 
            ✎
    22:21 
 | 
         
        но скажем так мне желательно получить это одной строкой а двум записям. Дабы исключить дальнейшую дообработку.     
         | 
|||
| 
    30
    
        RomanYS    
     25.05.20 
            ✎
    22:22 
 | 
         
        (28) это понятно:) Вопрос про время выполнения, интересно насколько коррелированные запросы могут применяться на реальных задачах     
         | 
|||
| 
    31
    
        Kamich    
     25.05.20 
            ✎
    22:23 
 | 
         
        (30) Разница тем и этим в 1,6 секунд. Первый вариант быстрее.     
         | 
|||
| 
    32
    
        RomanYS    
     25.05.20 
            ✎
    22:28 
 | 
         
        (31) Спасибо. Медленнее заметно. Но если нужно будет, например 5 последних, то вариант уже будет вероятно оптимальным.     
         | 
|||
| 
    33
    
        Kamich    
     25.05.20 
            ✎
    22:32 
 | 
         
        (32) Согласен. 
 
        и ещё если. Если в первый запрос, добавить дата запроса, то всё, не работает корректно.  | 
|||
| 
    34
    
        RomanYS    
     25.05.20 
            ✎
    22:35 
 | 
         
        (33) >> Если в первый запрос, добавить дата запроса
 
        Должно работать, параметр нужно в 3х местах прописать  | 
|||
| 
    35
    
        Kamich    
     26.05.20 
            ✎
    07:24 
 | 
         
        (34) Соррян, указал в двух местах(
 
        "Засыпал") Огромное спасибо!  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |