|
Помогите написать запрос | ☑ | ||
---|---|---|---|---|
0
Обфускация
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].цена конецесли; конеццикла; |
|||
3
Segate
18.04.18
✎
15:38
|
А в чем проблема? берете остатки на дату, к ним левым соединением цену и ШК связи по номенклатуре и единице измерения (характеристике, серии и тд, если надо)
На выходе одна таблица |
|||
4
Михаил Козлов
18.04.18
✎
15:39
|
(2) Попробуйте сначала запросом получить последнюю цену из документов по каждой номенклатуре. Если получится - соедините с остатками.
Поищите что-то вроде "Остатки на каждый день". Здесь были примеры таких запросов. |
|||
5
Обфускация
18.04.18
✎
15:40
|
(3)
нарисуйте плиз у меня сложно с запросами |
|||
6
Tatitutu
18.04.18
✎
15:44
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена,0)Как Цена, | ЕстьNULL(Штрихкоды.Штрихкод,"""") Как Штрихкод |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды | ПО ТоварыНаСкладахОстатки.Номенклатура = Штрихкоды.Владелец | И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = Штрихкоды.ХарактеристикаНоменклатуры |ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток > 0"; //Параметры запроса Запрос.УстановитьПараметр("ТипЦен",ТВОЙ ТИП ЦЕН);// Типы цен номенклатуры Результат = Запрос.Выполнить(); |
|||
7
Обфускация
18.04.18
✎
15:46
|
(6)
ого, спасибо щас попробую |
|||
8
lEvGl
гуру
18.04.18
✎
15:47
|
(4) что то остатки на каждый день и цена последнего прихода не совсем одно и тоже
|
|||
9
Обфускация
18.04.18
✎
16:09
|
(6)
все правильно, большое спасибо |
|||
10
kennetmccormick
18.04.18
✎
16:32
|
вот так люди проходят собеседование...
|
|||
11
Михаил Козлов
18.04.18
✎
16:34
|
(6) Неявно предполагается, что цена в регистре совпадает с ценой в документе прихода.
|
|||
12
Buster007
18.04.18
✎
16:44
|
(11) а может туда выводятся цены продажи? откуда взялась такая связь запроса с какой-то ценой прихода?
|
|||
13
Михаил Козлов
18.04.18
✎
16:46
|
(12) Я не знаю, какие цены нужны ТС. В (2) вроде как из документов.
|
|||
14
lEvGl
гуру
18.04.18
✎
16:48
|
ну это все вилами по воде, потому что надо знать базу и что в ней есть - тут же еще партии есть, для шк актуально однозначно
|
|||
15
Сияющий в темноте
18.04.18
✎
19:46
|
Когда мы делаем запрос с левым соединением к таблице штрихкодов,а у товара их несколько,то мы получаем несколько строк с данными товара,нужно или выбирать один штрихкод или пытаться записать их в строку,но это придется делать обработкой результата запроса
|
|||
16
Tateossian
18.04.18
✎
20:55
|
(6) Кстати, вот такой запрос быстрее работает
ВЫБРАТЬ ВЗ.Номенклатура КАК Номенклатура, ВЗ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, СУММА(ВЗ.КоличествоОстаток) КАК КоличествоОстаток, СУММА(ВЗ.Цена) КАК Цена, МАКСИМУМ(ВЗ.ШК) КАК ШК ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, 0 КАК Цена, "" КАК ШК ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры, 0, ЦеныНоменклатурыСрезПоследних.Цена, "" ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Штрихкоды.Владелец, Штрихкоды.ХарактеристикаНоменклатуры, 0, 0, МАКСИМУМ(Штрихкоды.Штрихкод) ИЗ РегистрСведений.Штрихкоды КАК Штрихкоды СГРУППИРОВАТЬ ПО Штрихкоды.Владелец, Штрихкоды.ХарактеристикаНоменклатуры) КАК ВЗ СГРУППИРОВАТЬ ПО ВЗ.Номенклатура, ВЗ.ХарактеристикаНоменклатуры ИМЕЮЩИЕ СУММА(ВЗ.КоличествоОстаток) > 0 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |