Lifo в запросе (Очень интересно!)

  1. 3 мес. назад

    Всем салютики!

    Вот такой вопрос возник =

    нужно оранизаватаь выбор в запросе методом ЛИФО

    Но!

    как организавать выбор, например из таблицы документов, наоборот? Не сначала а с конца?

    Вот пример запроса ФИФО, а мне нужно чтобы выборка была наоборот)

        ВЫБРАТЬ
    	1 КАК ПолеГруппировкиДляИтогов,
    	ВложенныйЗапрос.Ссылка,
    	ВложенныйЗапрос.Контрагент КАК Контрагент,
    	ВложенныйЗапрос.СуммаДокумента КАК СуммаДокумента,
    	ВЫБОР
    		КОГДА ВложенныйЗапрос.НакапливаемыйИтог <= &Оплата
    			ТОГДА ВложенныйЗапрос.СуммаДокумента
    		ИНАЧЕ ВложенныйЗапрос.СуммаДокумента + &Оплата - ВложенныйЗапрос.НакапливаемыйИтог
    	КОНЕЦ КАК Оплата
    ИЗ
    	(ВЫБРАТЬ
    		РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    		РеализацияТоваровУслуг.Контрагент КАК Контрагент,
    		РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
    		СУММА(РеализацияТоваровУслугДляСуммирования.СуммаДокумента) КАК НакапливаемыйИтог
    	ИЗ
    		Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    			ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслугДляСуммирования
    			ПО РеализацияТоваровУслуг.МоментВремени >= РеализацияТоваровУслугДляСуммирования.МоментВремени
    	ГДЕ
    		РеализацияТоваровУслуг.Организация = &Организация
    		И РеализацияТоваровУслугДляСуммирования.Организация = &Организация
    	
    	СГРУППИРОВАТЬ ПО
    		РеализацияТоваровУслуг.Ссылка,
    		РеализацияТоваровУслуг.СуммаДокумента,
    		РеализацияТоваровУслуг.Контрагент) КАК ВложенныйЗапрос
    ГДЕ
    	ВложенныйЗапрос.НакапливаемыйИтог - ВложенныйЗапрос.СуммаДокумента < &Оплата
    
    УПОРЯДОЧИТЬ ПО
    	ВложенныйЗапрос.Ссылка.МоментВремени УБЫВ
    ИТОГИ
    	СУММА(СуммаДокумента),
    	СУММА(Оплата)
    ПО
    	Контрагент,
    	ПолеГруппировкиДляИтогов
    
    Ответы: (29) (30)
  2. УБЫВ

    Ответы: (2)
  3. MIK УБЫВ

    упорядовачивние потом после выборки накладывается же

    Ответы: (8)
  4. вообще есть обработина у кого нить по преобразованию т скюл в запрос 1с?
    или как напрямую запросы т скюл юзать?)

    Ответы: (4) (5)
  5. (3) мва-ха-ха!!!

  6. (3) так и юзаешь - напрямую [...]

  7. <=, блять

    Ответы: (7) (31) (32)
  8. jsmith82 <=, блять

    Так в т скюл есть метод обратного перебора а в йс перебирает тока в одном напрвлении, вот я и зочу узнасть какой метод соотетствует обратному перебору в т скюл

    Ответы: (9)
  9. NewTesla упорядовачивние потом после выборки накладывается же

    что ты понимаешь под выборкой? процесс перебора записей БД, или, таки, результат, выдаваемый запросом?
    на перебор ты можешь влиять только косвенно, упорядочение же применяется после перебора, но до выдачи результата aka выборка

    Ответы: (11)
  10. NewTesla есть метод обратного перебора

    да ну?


  11. Кокой песдетс.

  12. andrewks что ты понимаешь под выборкой? процесс перебора записей БД, или, таки, результат, выдаваемый запросом?
    на перебор ты можешь влиять только косвенно, упорядочение же применяется после перебора, но до выдачи результата aka выборка

    ну так перебор всех записей занимает время, потом сортиовка в обратном порядке = этож время)

    а начать перебор записей не с начала а с конца как в скюл? неужель нету такого?

    Ответы: (13)
  13. да уж...

  14. NewTesla а с конца как в скюл

    а как в скюл?

    Ответы: (14)
  15. andrewks а как в скюл?

    SELECT * FROM _AccRg10397 order by _Period DESC

    Ответы: (15) (16)
  16. (14) и что, по-твоему, order by как-то влияет на перебор записей?

    Ответы: (16)
  17. andrewks (14) и что, по-твоему, order by как-то влияет на перебор записей?

    т.е он их получает все, потом сортирует?

    А как во внутреннем запросе 1с промиере 0 тогда сделать такое упорядовачивание?

    тк упорядовачивание можн сделать только снаружи почему то

    Ответы: (17) (18)
  18. NewTesla А как во внутреннем запросе 1с

    нет никаких внутренних запросов 1с (если мы говорим про базы на sql, конечно)
    1с на основе текста запроса на внутреннем языке строит текст запроса на sql, и передаёт его на выполнение СУБД

  19. (16) решение о том, в каком порядке выбирать, на каком этапе упопядочить принимает движок бд на основании структуры бд и собранной статистике. Лезть в план выполнения запроса нет никакого смысла, кроме как оптимизировать структуру бд и индексов, что опять же не применимо в случае 1с. Так что расходимся

  20. Теслыч, надо тебе на курсы внедренца записаться.

    Ответы: (20) (22)
  21. (19) Тесла сам коучер

  22. что-ж сразу кучер, можно сказать красиво - гусар

  23. Hans Теслыч, надо тебе на курсы внедренца записаться.

    Так там оне такого не знают я бы с радостью)

    Ответы: (23)
  24. NewTesla Так там оне такого не знают я бы с радостью)

    Я тебе другой курс нашел.

    https://курсы-по-1с.рф/1c-v8/development-optimize-queries/

  25. Будешь профи по запросам.

    Ответы: (25)
  26. 14.03.2019 08:29:58 отредактировано NewTesla

    Hans Будешь профи по запросам.

    О спс!)

    Написал им на саппорт = мол напишите лифо в запросе запишусь к вам

    Ы

  27. Действительно Очень интересно!

  28. Лифо блдъ.. напиши им, как среднеквадратичное в запросе слепить, чего уж

  29. Написал Мтичкину и Хуитичкину

    Посмотрим если не смогут то надо будет кодом писать!

    Ура!!!!

  30. Чистов забухал чтоле

    к (0)

    советует

    Базы нет, так что чисто теоретически:

    ПО РеализацияТоваровУслуг.МоментВремени >= РеализацияТоваровУслугДляСуммирования.МоментВремени
    Знак надо поменять.

    Ответы: (30)
  31. NewTesla Чистов забухал чтоле

    к (0)

    советует

    Базы нет, так что чисто теоретически:

    ПО РеализацияТоваровУслуг.МоментВремени >= РеализацияТоваровУслугДляСуммирования.МоментВремени
    Знак надо поменять.

    [...]!

    А Чистов то прав оказался)

    Надо знак равенства поменять)

  32. Я тебе в (6) написал.

    Ответы: (32)
  33. jsmith82 Я тебе в (6) написал.

    я думал это ты куй нарисовал!

    Комменти плиз сообщения чутка!)

  34. 16.03.2019 11:20:00 отредактировано jsmith82

    Да я думал, что это очевидно и банально, и тебе нужно лишь одобрение.

  35. Все равно я никуя не понял как это работает

    Т.е у нас есть щаписи 01 02 03 04 января

    Он берет запись 01 смотрит какая щапись меньше по моменту времени(для фифо) и никуя не находит! Потому берет 01 поом берет запись 02 к ней присоединяет 01 и тд?

    Для ЛИФО:

    Берет запись 01 смотрит какая запись больше по периоду это 02 потом 03 берет и 04?

    Или он сразу берет 01 и сравнивает с 04?

  36. Получается колесная система ч оле?

    Если поменяем равенство то он в другую сторогу маслакает?

    Ответы: (39)
  37. Как хранятся данные в базе данных? Как понять? Ведь менеджер Скюл отображает тока то чо нам нада!

  38. Применим ли принцип колеса тама?

  39. А может мы все живем в одном большом колесе и чтобы увеличить количество оттраханных баб надо развернуться? Что думаете?

  40. NewTesla Получается колесная система ч оле?

    Закон сообщающихся сосудов. Просто меняешь знак силы тяжести..

  41. Запись левой таблицы тащит записи правой, которые ниже с ней, выше с ней по уровню (моменту времени).

    Ответы: (42)
  42. 16.03.2019 12:48:34 отредактировано jsmith82

    Работай на логическом уровне. Физика, как правило, совпадает с бытовыми представлениями.

  43. jsmith82 Запись левой таблицы тащит записи правой, которые ниже с ней, выше с ней по уровню (моменту времени).

    Да, но например нам надо для фифо к левой таблице присоединить записи выше по моменту времени=

    Исходная запись 01 янваоя а какие выше?

    Ответы: (44)
  44. Или какую запись он берет за исходную?

    Ответы: (46)
  45. NewTesla Да, но например нам надо для фифо к левой таблице присоединить записи выше по моменту времени=

    у тебя выше это меньше что ли? у меня наоборот почему-то. первые записи, которые меньше, они же и ниже
    в понятиях меньше / больше, по фифо тащит записи, которые меньше
    1 января тащит 1 января
    2 января тащит 1 и 2 января
    3 января тащит 1 и 2 и 3 января

    Ответы: (45)
  46. jsmith82 у тебя выше это меньше что ли? у меня наоборот почему-то. первые записи, которые меньше, они же и ниже
    в понятиях меньше / больше, по фифо тащит записи, которые меньше
    1 января тащит 1 января
    2 января тащит 1 и 2 января
    3 января тащит 1 и 2 и 3 января

    Ок а по лифо?

    Ответы: (48)
  47. NewTesla Или какую запись он берет за исходную?

    я же сказал, работай на логическом уровне

    Ответы: (47)
  48. jsmith82 я же сказал, работай на логическом уровне

    Ну так вот

    По ли фо должен тянуть то что больше

    1 января должен тянуть все остальное и тд

    И полусится опять фифо = 1,2,3,4,5 и тд

  49. NewTesla Ок а по лифо?

    1 января тащит 1 и 2 и 3 и 4.. января
    2 января тащит 2 и 3 и 4.. января
    3 января тащит 3 и 4.. января

    Ответы: (49) (50)
  50. jsmith82 1 января тащит 1 и 2 и 3 и 4.. января
    2 января тащит 2 и 3 и 4.. января
    3 января тащит 3 и 4.. января

    Ну вот если мы подтянем

    К 1 января 2 3 4 то этож фифо опять буде

  51. jsmith82 1 января тащит 1 и 2 и 3 и 4.. января
    2 января тащит 2 и 3 и 4.. января
    3 января тащит 3 и 4.. января

    ? Ну? Это ж опять Фифо! А он именно по лифо сортирует!

    Ответы: (51) (52)
  52. (50) Это лифо, [...]. Сила тяжести действует наверх к большим датам, формируя срез верхних.

    Ответы: (52)
  53. jsmith82 (50) Это лифо, [...]. Сила тяжести действует наверх к большим датам, формируя срез верхних.

    тыж сам написал чуто буде

    1
    2
    3
    4

    2
    3
    4

    3
    4

    Ответы: (53) (56)
  54. (52) Что такое лифо [...]? Ласт ин, фёрст аут, йопта.
    Нам нужен срез верхних документов (с большей датой), которые захватывают сумму к зачёту. Зачёт идёт от верхних документов к нижним по нарастающей.
    Чтобы получить срез верхних документов, мы используем равенство "левая дата <= правой". Т.е. для каждого документа в соединение войдут сам документ и все более поздние.

    Ответы: (56)
  55. Ты логику с физикой путаешь.

  56. 16.03.2019 18:16:22 отредактировано jsmith82

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

  57. jsmith82 (52) Что такое лифо [...]? Ласт ин, фёрст аут, йопта.
    Нам нужен срез верхних документов (с большей датой), которые захватывают сумму к зачёту. Зачёт идёт от верхних документов к нижним по нарастающей.
    Чтобы получить срез верхних документов, мы используем равенство "левая дата <= правой". Т.е. для каждого документа в соединение войдут сам документ и все более поздние.

    ну так сам документ и более поздние а нам нужна очередь сам документ и более ранние!

    неужель не понятно что я пишу! епта!

    Ответы: (57)
  58. NewTesla ну так сам документ и более поздние а нам нужна очередь сам документ и более ранние!

    Ну тогда фифо

    NewTesla неужель не понятно что я пишу! епта!

    Я уже запутался

  59. Все равно непонятно чтото

    даж если знак меняем то выборка какбудто всех доков идет всеравно,

    т.е мне нужно тока верхние 12 но по времени что верхние 12 что полностью все = одинаково!

    А как прервать когда мы получили данные?

    Ответы: (59)
  60. NewTesla А как прервать когда мы получили данные?

    никак

    Ответы: (60)
  61. jsmith82 никак

    да, ну тогда и фифо и лифо бесполезны же!

    Надо кодом!)

    Ответы: (61)
  62. (60) допёрло что ли? молодец..

  63. нарастающие итоги обычно в отчётах используют
    а объекты учёта списывают кодом (используя данные основного запроса)

    Ответы: (63)
  64. jsmith82 нарастающие итоги обычно в отчётах используют
    а объекты учёта списывают кодом (используя данные основного запроса)

    а если программный перебор документов запустить? так его можн прервать или там все равно будет выбор всей группы сразу сначала?

    Ответы: (64) (65)
  65. 16.03.2019 19:09:16 отредактировано jsmith82

    (63) сначала, конечно, получают всю группу, потом в цикле [...] по ней

    Ответы: (65)
  66. jsmith82 (63) сначала, конечно, получают всю группу, потом в цикле [...] по ней

    [...] а как время выплнения уменьшить!!!!!!!!!!!!!!!!!!!

    Ответы: (67)
  67. но для таких дел обычно используют остатки по нужным регистрам и счетам

  68. NewTesla [...] а как время выплнения уменьшить!!!!!!!!!!!!!!!!!!!

    а чо там? в чом затык?

    Ответы: (68)
  69. jsmith82 а чо там? в чом затык?

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

  70. я чёт [...] не понял

    Ответы: (70)
  71. jsmith82 я чёт [...] не понял

    Это отчет по поставщикам я егт выкладывал уже

    Ответы: (72)
  72. главное чтобы Тесле далее не понадобился отчет по покупателям. будет еще одна нудная ветка...

    Ответы: (73)
  73. NewTesla Это отчет по поставщикам я егт выкладывал уже

    ох, ебдъ

  74. Guk главное чтобы Тесле далее не понадобился отчет по покупателям. будет еще одна нудная ветка...

    Guk главное чтобы Тесле далее не понадобился отчет по покупателям. будет еще одна нудная ветка...

    Ветка иетересная на самом деле!!! Вот какое бы решение ты выбрал? Скажи а потом я дам правильный ответ!

    Ответы: (74)
  75. (73) я бы выбрал правильное решение ;)...

или зарегистрируйтесь чтобы ответить!