Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Запрос по нескольким типам цен

Запрос по нескольким типам цен
Я
   prozex
 
02.11.18 - 20:37
Здравствуйте, уважаемые форумчане.
Прошу помочь советом.
Нужно получить список элементов номенклатуры, у которых цена "Розничная" ниже цены "Закупочная". Хочется сделать это грамотно, одним запросом к базе. В базе несколько десятков тысяч товаров, и использовать запросы в цикле не очень хочется, ввиду того, что скорость работы алгоритма при условии доступа к файлу БД по сети в таком случае будет низкой.
Я понимаю, что мне можно посоветовать поучить матчасть. Но на это нужно время, а его как всегда нет.
Как добиться желаемого одним запросом?
 
 
   anton-rom86
 
1 - 02.11.18 - 20:52
(0) в запросе, из которого достаешь закупочную цену, создаешь  вложенный запрос, в котором находишь цену розничную, связываешь их по номенклатуре и цене с условием, где ЦенаРозничная<ЦенаЗакупочная. Понятно, или подробнее?
   prozex
 
2 - 02.11.18 - 20:53
(1), признаться, нет, не понятно...
   anton-rom86
 
3 - 02.11.18 - 21:01
(2)
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаЗакупочная,
    ВложенныйЗапрос.ЦенаРозничная
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Закупочная) КАК ЦеныНоменклатурыСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
            ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРозничная
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Розничная) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
        ПО (ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура)
            И ЦеныНоменклатурыСрезПоследних.Цена > ВложенныйЗапрос.ЦенаРозничная
   osa1C
 
4 - 02.11.18 - 21:02
(0) а ты прав, читай матчасть, иначе у тебя завтра возникнет другая проблема и ты опять на форумах решения искать будешь. Тебе в (1) всё уже разжевали. Что не понятно?
   osa1C
 
5 - 02.11.18 - 21:04
(3) сломал систему :)))
   prozex
 
6 - 02.11.18 - 21:04
(3), спасибо, сейчас буду пробовать.
   prozex
 
7 - 02.11.18 - 21:06
(4), любой вопрос можно решить, читая матчасть. Тогда и форумы были бы незачем. Вопрос во времени. Когда нужно решить проблему быстро, тогда и приходится обращаться за помощью более опытных.
   osa1C
 
8 - 02.11.18 - 21:10
(7) надо для этого что-то делать самому. ЗА тебя писать код никто не будет. Если есть проблема, то покажи как ты её начал решать, хоть и с ошибками, вот тогда тебе форум поможет.... Сейчас тебе просто повезло. Но это не будет каждый день, поверь.
   VKS
 
9 - 02.11.18 - 21:15
Сейчас с пакетами запросов столько можно наворотить
   osa1C
 
10 - 02.11.18 - 21:17
(9) вопрос только в какую сторону наворотить
 
 Рекламное место пустует
   osa1C
 
11 - 02.11.18 - 21:21
(7) "Когда нужно решить проблему быстро" .... Если будешь вот так вот "быстро" решать не читая матчасть, то за тобой придется много что переделывать. Потому что это заплатки и костыли, которые быстро рвутся и ломаются
   Fram
 
12 - 02.11.18 - 21:21
(7) интересная позиция
   Fram
 
13 - 02.11.18 - 21:23
(11) эксплуатировать таких как (3) тоже надо уметь )
   osa1C
 
14 - 02.11.18 - 21:24
(13) нашелся тут эксплуататор :)))))
   Fram
 
15 - 02.11.18 - 21:27
(14) ну а че! нафига что либо делать, если можно просто попросить кого то сделать это за тебя, и тот кто то еще будет просто доволен тем фактом, что его знания и умения кому то пригодились.
   prozex
 
16 - 02.11.18 - 21:29
(11), да читал я Ваши комментарии и темы. Когда помощь самому нужна - риторика разговора совсем иная. В (3) человек четко дал направление, куда искать. Все остальное - пока флуд, разливаемый для самоутверждения.
Я хорошо разбираюсь в Web. Тема 1С мне чужда. И я хорошо знаю, что толковый специалист либо молчит, либо четко отвечает на вопрос, если хочет. А дилетанты на то и дилетанты, чтобы воздух в пустую сотрясать.
   Fram
 
17 - 02.11.18 - 21:32
(16) sql подобные языки веб разработчикам чужды?
   Fram
 
18 - 02.11.18 - 21:34
(16) и не надо подменять понятия. направление вам дали в (1), а в (3) готовое решение. есть ведь разница?
   osa1C
 
19 - 02.11.18 - 22:48
(16) ты никто! человек просящий помощи на форуме показывает какие действия предпринимал он, для решения проблемы... ты же только киксуешь, что мол Web разработчик. Так покажи парочку своих работающих проектов? ...
   prozex
 
20 - 02.11.18 - 23:01
(19), это ты никто, Сашка.
В (3) человек мне дал нормальную подсказку. И я уже почти разобрался что да как. Ты же гораздо больше времени потратил на жмаканье по клавишам, строча ядовитые посты, прячась за монитором.
   palsergeich
 
21 - 02.11.18 - 23:11
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаЗакупочная,
    ВложенныйЗапрос.ЦенаРозничная
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Закупочная) КАК ЦеныНоменклатурыСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
            ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРозничная
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Розничная) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
        ПО (ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура)
            И ЦеныНоменклатурыСрезПоследних.Цена > ВложенныйЗапрос.ЦенаРозничная

Я бы так сделал.
Но ни (3) ни мой запрос не оптимальны, план запроса по факту получился один и тот же там по хорошему если этим запросом будут пользоваться часто надо ВидЦены проиндексировать. Если не будут то и пес с ним.
   palsergeich
 
22 - 02.11.18 - 23:12
Ой не тот запрос вставил 
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследнихЗакупка.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследнихЗакупка.Цена КАК ЦенаЗакупочная
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Закупочная) КАК ЦеныНоменклатурыСрезПоследнихЗакупка
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Розничная) КАК ЦеныНоменклатурыСрезПоследнихРозница
        ПО (ЦеныНоменклатурыСрезПоследнихРозница.Номенклатура = ЦеныНоменклатурыСрезПоследнихЗакупка.Номенклатура
                И ЦеныНоменклатурыСрезПоследнихЗакупка.Цена > ЦеныНоменклатурыСрезПоследнихРозница.Цена)
   prozex
 
23 - 02.11.18 - 23:14
(21), я понял, спасибо большое. Сейчас еще пытаюсь совместить это с проверкой количества искомого товара на конкретном складе. Думаю, получится все.
А пользоваться будут не часто. 2-4 раза в месяц всего...
   palsergeich
 
24 - 02.11.18 - 23:16
(23) Если 2-4 раза в месяц то пофиг
   palsergeich
 
25 - 02.11.18 - 23:17
(23) Тогда не делай индекс по этому полю, выигрыш того не стоит
   prozex
 
26 - 02.11.18 - 23:18
(25), и не буду. Даже если сделать, тут все равно никто не оценит))


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует