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


Помогите написать запрос

Помогите написать запрос
Я
   Обфускация
 
18.04.18 - 15:25
Надо взять остатки номенклатуры на текущую дату, подставить последнюю цену и добавить штрихкод. Вот такая таблица должна быть на выходе. У меня база Далион, но подойдет код для УТ или розницы.
 
 
   Гипервизор
 
1 - 18.04.18 - 15:32
Что именно не получается? Покажите ваш вариант. Или решили даже не пытаться?
   Обфускация
 
2 - 18.04.18 - 15:36
я запрос в цикле делаю. по идее можно одним запросом.

ЗапросНом = новый запрос;
ЗапросНом.Текст= "ВЫБРАТЬ
                 |    ОстаткиНоменклатурыОстатки.Номенклатура,
                 |    ОстаткиНоменклатурыОстатки.ХарактеристикаНоменклатуры,
                 |    ОстаткиНоменклатурыОстатки.Склад,
                 |    ОстаткиНоменклатурыОстатки.Склад КАК Склад1,
                 |    ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Остаток,
                 |    ОстаткиНоменклатурыОстатки.Номенклатура.асОсновнойПоставщик КАК Поставщик
                 |ИЗ
                 |    РегистрНакопления.ОстаткиНоменклатуры.Остатки(&период1, ) КАК ОстаткиНоменклатурыОстатки
                 |ГДЕ
                 |    ОстаткиНоменклатурыОстатки.КоличествоОстаток > 0";
ЗапросНом.УстановитьПараметр("период1",текущаядата());                 
ИтогНом=запросном.Выполнить().Выгрузить();            
объект.Список1.Загрузить(ИтогНом);

для каждого стр из объект.Список1 цикл
    запросцен=новый запрос;
    запросцен="ВЫБРАТЬ ПЕРВЫЕ 1
              |    ПриходнаяНакладнаяТовары.Цена,
              |    ПриходнаяНакладнаяТовары.Ссылка.Дата
              |ИЗ
              |    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
              |ГДЕ
              |    ПриходнаяНакладнаяТовары.Номенклатура = &Номенклатура
              |    И ПриходнаяНакладнаяТовары.Ссылка.Проведен = ИСТИНА
              |
              |УПОРЯДОЧИТЬ ПО
              |    ПриходнаяНакладнаяТовары.Ссылка.Дата УБЫВ";
    Запросцен.УстановитьПараметр("Номенклатура",стр.Номенклатура);                 
Итогцен=запросцен.Выполнить().Выгрузить();    
если итогцен.количество()>0 тогда
    стр.цена=итогцен[0].цена
конецесли;    
конеццикла;
   Segate
 
3 - 18.04.18 - 15:38
А в чем проблема? берете остатки на дату, к ним левым соединением цену и ШК связи по номенклатуре и единице измерения (характеристике, серии и тд, если надо)

На выходе одна таблица
   Михаил Козлов
 
4 - 18.04.18 - 15:39
(2) Попробуйте сначала запросом получить последнюю цену из документов по каждой номенклатуре. Если получится - соедините с остатками.
Поищите что-то вроде "Остатки на каждый день". Здесь были примеры таких запросов.
   Обфускация
 
5 - 18.04.18 - 15:40
(3)
нарисуйте плиз у меня сложно с запросами
   Tatitutu
 
6 - 18.04.18 - 15:44
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Номенклатура,
    |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
    |    ТоварыНаСкладахОстатки.КоличествоОстаток,
    |    ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена,0)Как Цена,
    |    ЕстьNULL(Штрихкоды.Штрихкод,"""") Как Штрихкод
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |            И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
    |        ПО ТоварыНаСкладахОстатки.Номенклатура = Штрихкоды.Владелец
    |            И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = Штрихкоды.ХарактеристикаНоменклатуры
    |ГДЕ
    |    ТоварыНаСкладахОстатки.КоличествоОстаток > 0";
    //Параметры запроса

    Запрос.УстановитьПараметр("ТипЦен",ТВОЙ ТИП ЦЕН)// Типы цен номенклатуры

    Результат = Запрос.Выполнить();
   Обфускация
 
7 - 18.04.18 - 15:46
(6)
ого, спасибо щас попробую
   lEvGl
 
8 - 18.04.18 - 15:47
(4) что то остатки на каждый день и цена последнего прихода не совсем одно и тоже
   Обфускация
 
9 - 18.04.18 - 16:09
(6)
все правильно, большое спасибо
   kennetmccormick
 
10 - 18.04.18 - 16:32
вот так люди проходят собеседование...
 
 Рекламное место пустует
   Михаил Козлов
 
11 - 18.04.18 - 16:34
(6) Неявно предполагается, что цена в регистре совпадает с ценой в документе прихода.
   Buster007
 
12 - 18.04.18 - 16:44
(11) а может туда выводятся цены продажи? откуда взялась такая связь запроса с какой-то ценой прихода?
   Михаил Козлов
 
13 - 18.04.18 - 16:46
(12) Я не знаю, какие цены нужны ТС. В (2) вроде как из документов.
   lEvGl
 
14 - 18.04.18 - 16:48
ну это все вилами по воде, потому что надо знать базу и что в ней есть - тут же еще партии есть, для шк актуально однозначно
   Сияющий в темноте
 
15 - 18.04.18 - 19:46
Когда мы делаем запрос с левым соединением к таблице штрихкодов,а у товара их несколько,то мы получаем несколько строк с данными товара,нужно или выбирать один штрихкод или пытаться записать их в строку,но это придется делать обработкой результата запроса
   Tateossian
 
16 - 18.04.18 - 20:55
(6) Кстати, вот такой запрос быстрее работает

ВЫБРАТЬ
    ВЗ.Номенклатура КАК Номенклатура,
    ВЗ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    СУММА(ВЗ.КоличествоОстаток) КАК КоличествоОстаток,
    СУММА(ВЗ.Цена) КАК Цена,
    МАКСИМУМ(ВЗ.ШК) КАК ШК
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
        0 КАК Цена,
        "" КАК ШК
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ГДЕ
        ТоварыНаСкладахОстатки.КоличествоОстаток > 0
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Номенклатура,
        ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры,
        0,
        ЦеныНоменклатурыСрезПоследних.Цена,
        ""
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        Штрихкоды.Владелец,
        Штрихкоды.ХарактеристикаНоменклатуры,
        0,
        0,
        МАКСИМУМ(Штрихкоды.Штрихкод)
    ИЗ
        РегистрСведений.Штрихкоды КАК Штрихкоды
    
    СГРУППИРОВАТЬ ПО
        Штрихкоды.Владелец,
        Штрихкоды.ХарактеристикаНоменклатуры) КАК ВЗ

СГРУППИРОВАТЬ ПО
    ВЗ.Номенклатура,
    ВЗ.ХарактеристикаНоменклатуры

ИМЕЮЩИЕ
    СУММА(ВЗ.КоличествоОстаток) > 0

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