|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Jackman
11.10.11
✎
16:33
|
Вот кусок запроса, целью которого является вывод оборота по продажам и остатку заказов поставщику. Интересует первая запись по каждому товару в регистре заказы поставщику, но не получается ее получить.
|
|||
1
Jackman
11.10.11
✎
16:34
|
Выбрать первые 1 дают выбор только первой записи по одному товару, а мне нужно по каждому
|
|||
2
trambalda
11.10.11
✎
16:44
|
А что дает информация о первой записи по каждому товару из заказов? Смысл какой? Я что-то под вечер не догоняю уже.
|
|||
3
Jackman
11.10.11
✎
16:48
|
(2)Это кусок запроса. В полной версии выводится информация по реализации, остаткам, резерву товара, а также ближайшую дату и кол-во прихода товара. Нас штрафуют магазины, если у нас нет заказываемого товара, но мы может заблаговременно "закрывать" отдельные позиции для заказа. Для принятия решения нужно знать объем продаж, остатки, а также время и объем ближайшего поступления товара.
|
|||
4
Jackman
11.10.11
✎
16:51
|
Хотя кореектнее как-то получать запись в регистре с наиболее ранеей датой
|ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДатаПоступления |
|||
5
Jackman
11.10.11
✎
17:23
|
Апну
|
|||
6
wade25
11.10.11
✎
17:24
|
Выбрать первые 1?
|
|||
7
ssh2006
11.10.11
✎
17:26
|
(1) прими волевое решение - запрос в цикле
|
|||
8
Jackman
11.10.11
✎
17:27
|
(6) Тогда выводит первую запись по первому товару в списке
|
|||
9
Jackman
11.10.11
✎
17:27
|
(7) Только не это :)
|
|||
10
DrHiHi
11.10.11
✎
17:43
|
не догнал....
| ВЫБРАТЬ |ЗаказыПоставщикамОстатки.Номенклатура, |ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДатаПоступления, |0, |0, |ЗаказыПоставщикамОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонМес, Номенклатура В ИЕРАРХИИ (&ВыбТовар)) КАК ЗаказыПоставщикамОстатки в любом случае вернет одну строку по документу |
|||
11
mzelensky
11.10.11
✎
17:46
|
(10) +++ согласен.
(0) либо мы не догоняем чего ты хочешь |
|||
12
Jackman
11.10.11
✎
18:02
|
(10) и (11) По одной строке на каждый документ, а мне нужно только первый документ, чтобы знать сколько приедет в первом заказе. Т.е. в запрос попадают все записи в регистре ЗаказыПоставщикам по данному товару, а мне нужна только одна запись по каждому товару, хотя по итогам регистра может висеть 5 незыкрытых заказов поставщику.
Хочу видеть: Номенклатура-Колво реализ.-Сумма реализ-Заказ-Дата ближ. прихода Яблоки - 10шт - 500грн - 200 шт - 01/12/2011 |
|||
13
Jackman
11.10.11
✎
18:03
|
а получается:
Номенклатура-Колво реализ.-Сумма реализ-Заказ-Дата ближ. прихода Яблоки - 10шт - 500грн - 200 шт - 01/12/2011 Яблоки - 0 - 0 - 100шт - 10/12/2011 Яблоки - 0 - 0 - 800шт - 28/12/2011 |
|||
14
DrHiHi
11.10.11
✎
18:12
|
щас напишу
|
|||
15
DrHiHi
11.10.11
✎
18:20
|
держи ;))0
ВЫБРАТЬ ЗаказыПоставщикамОстатки.Номенклатура, ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДатаПоступления, 0 КАК Поле1, 0 КАК Поле2, ЗаказыПоставщикамОстатки.КоличествоОстаток ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонМес, Номенклатура В ИЕРАРХИИ (&ВыбТовар)) КАК ЗаказыПоставщикамОстатки ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗаказыПоставщикамОстатки.Номенклатура КАК Номенклатура, МИНИМУМ(ЗаказыПоставщикамОстатки.ЗаказПоставщику) КАК ЗаказПоставщику ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонМес, Номенклатура В ИЕРАРХИИ (&ВыбТовар)) КАК ЗаказыПоставщикамОстатки СГРУППИРОВАТЬ ПО ЗаказыПоставщикамОстатки.Номенклатура) КАК ВложенныйЗапрос ПО (ВложенныйЗапрос.ЗаказПоставщику = ЗаказыПоставщикамОстатки.ЗаказПоставщику) И (ВложенныйЗапрос.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура) |
|||
16
Jackman
11.10.11
✎
18:33
|
Спасибо, ща попробую :)
|
|||
17
ssh2006
11.10.11
✎
18:48
|
Подобное обсуждалось многократно на форуме. (15) не лучший вариант
|
|||
18
Jackman
11.10.11
✎
18:48
|
Спасибо, работает, но, чего-то, подтягивает не самый ранний заказ.
Например, по товару есть такие заказы: Заказ СрокПоставки Остаток Заказ поставщику 00000001729 от 19.01.2011 29.09.2011 2200,000 Заказ поставщику 00000002206 от 07.09.2011 17.02.2012 2500,000 а отчет возвращает 17.02.2012 2500,000 |
|||
19
DrHiHi
11.10.11
✎
18:55
|
(17) а какой наилучший??
(18) может быть заказ закрыт... или вместо "МИНИМУМ(ЗаказыПоставщикамОстатки.ЗаказПоставщику)" написал "МАКСИМУМ(ЗаказыПоставщикамОстатки.ЗаказПоставщику)" |
|||
20
Jackman
11.10.11
✎
19:06
|
(19) Нет, проверил на нескольких товарах, что-то не так. Написал МИНИМУМ, проверяю через консоль.
|
|||
21
DrHiHi
11.10.11
✎
19:11
|
(20) покажи, что у тебя написано
|
|||
22
Jackman
11.10.11
✎
19:16
|
) |
|||
23
Jackman
11.10.11
✎
19:19
|
Мыльница
Заказ поставщику 00000002108 от 18.07.2011 15.12.2011 1200,000 Заказ поставщику 00000002196 от 05.09.2011 23.03.2012 1200,000 отчет выводит нижнюю строку: 23.03.2012 1200,000 |
|||
24
Jackman
11.10.11
✎
19:21
|
Непонятно, что он считает минимум для поля, типа Документ.ЗаказПоставщику
|
|||
25
ssh2006
11.10.11
✎
19:23
|
Максимум(ссылка) не даст тебе последний документ. Если будет актуально, позже напишу запрос
|
|||
26
ssh2006
11.10.11
✎
19:24
|
Ну или минимум первый.
|
|||
27
DrHiHi
11.10.11
✎
19:25
|
просмотри правильно ли выводит:
ВЫБРАТЬ ЗаказыПоставщикамОстатки.Номенклатура КАК Номенклатура, МИНИМУМ(ЗаказыПоставщикамОстатки.ЗаказПоставщику) КАК ЗаказПоставщику ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонМес, Номенклатура В ИЕРАРХИИ (&ВыбТовар)) КАК ЗаказыПоставщикамОстатки СГРУППИРОВАТЬ ПО ЗаказыПоставщикамОстатки.Номенклатура по какой-то номенклатуры, просмотри без группировки, что выводит (24) попробуй использовать Документ.ЗаказПоставщику.МоментВремени |
|||
28
DrHiHi
11.10.11
✎
19:41
|
можно попробовать по дате, но могут быть документы с одинаковыми датами
|
|||
29
Jackman
11.10.11
✎
19:46
|
Заказ поставщику 00000002196 от 05.09.2011 18:01:07
|
|||
30
ssh2006
11.10.11
✎
19:46
|
(28) Для таких и применить минимум(ссылка). Тут уже как повезет
|
|||
31
Jackman
11.10.11
✎
19:47
|
МИНИМУМ(ЗаказыПоставщикамОстатки.ЗаказПоставщику.МоментВремени) КАК ЗаказПоставщику
Дает ошибку |
|||
32
байт
11.10.11
✎
20:12
|
(31) какую?
|
|||
33
Jackman
11.10.11
✎
20:19
|
Неверные параметры МИНИМУМ
|
|||
34
wade25
11.10.11
✎
20:26
|
Эмм по дороге домой пришло. А если через временные таблицы по отбору товара первые выбирать? =)
зы. эт так, гипотетически =) |
|||
35
Jackman
11.10.11
✎
20:29
|
Реквизит ЗаказыПоставщикамОстатки.ЗаказПоставщику может быть объектом двух видов: Документ.ЗаказПоставщику и Документ.ЗаказПокупателя.
Но ЗаказыПоставщикамОстатки.ЗаказПоставщику.ЗаказПоставщику.МоментВремени тоже выдает ошибку |
|||
36
Jackman
11.10.11
✎
20:32
|
Ладно, прийдется результат запроса прогонять через цикл и отдельно считать то, что на заказе.
|
|||
37
байт
11.10.11
✎
20:33
|
дату дока попробуй засунуть (31)
|
|||
38
байт
11.10.11
✎
20:34
|
(36) не оптимально пили запрос.
|
|||
39
DrHiHi
11.10.11
✎
20:39
|
сейчас напишу 100% вариант
|
|||
40
Jackman
11.10.11
✎
20:49
|
Кажись заработало
|
|||
41
ssh2006
11.10.11
✎
20:50
|
ВЫБРАТЬ
ЗаказыПоставщикамОстатки.Номенклатура, ЗаказыПоставщикамОстатки.ЗаказПоставщику, ЗаказыПоставщикамОстатки.КоличествоОстаток, ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата КАК ДатаЗаказа ПОМЕСТИТЬ ОстаткиЗаказов ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонМес, Номенклатура В ИЕРАРХИИ (&ВыбТовар)) КАК ЗаказыПоставщикамОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиЗаказов.Номенклатура, МИНИМУМ(ОстаткиЗаказов.ЗаказПоставщику) КАК ЗаказПоставщику ПОМЕСТИТЬ ПервыеЗаказы ИЗ ОстаткиЗаказов КАК ОстаткиЗаказов ГДЕ ОстаткиЗаказов.ЗаказПоставщику.Дата В (ВЫБРАТЬ МИНИМУМ(ВТОстаткиЗаказов.ДатаЗаказа) КАК ДатаЗаказа ИЗ ОстаткиЗаказов КАК ВТОстаткиЗаказов ГДЕ ВТОстаткиЗаказов.Номенклатура = ОстаткиЗаказов.Номенклатура СГРУППИРОВАТЬ ПО ВТОстаткиЗаказов.Номенклатура) СГРУППИРОВАТЬ ПО ОстаткиЗаказов.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПервыеЗаказы.Номенклатура, ПервыеЗаказы.ЗаказПоставщику, ОстаткиЗаказов.КоличествоОстаток ИЗ ОстаткиЗаказов КАК ОстаткиЗаказов ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПервыеЗаказы КАК ПервыеЗаказы ПО ОстаткиЗаказов.Номенклатура = ПервыеЗаказы.Номенклатура И ОстаткиЗаказов.ЗаказПоставщику = ПервыеЗаказы.ЗаказПоставщику |
|||
42
Jackman
11.10.11
✎
20:53
|
(41) Ого. Буду разбираться
|
|||
43
DrHiHi
11.10.11
✎
20:54
|
не успел %))
ВЫБРАТЬ ЗаказыПоставщикамОстатки.Номенклатура КАК Номенклатура, ЗаказыПоставщикамОстатки.ЗаказПоставщику КАК ЗаказПоставщику, ЗаказыПоставщикамОстатки.КоличествоОстаток ПОМЕСТИТЬ ВТОстатки ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(, Номенклатура = &Номенклатура) КАК ЗаказыПоставщикамОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТОстатки.Номенклатура, ВТОстатки.ЗаказПоставщику, ВТОстатки.КоличествоОстаток ИЗ ВТОстатки КАК ВТОстатки ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВТОстатки.Номенклатура КАК Номенклатура, МИНИМУМ(ВТОстатки.ЗаказПоставщику) КАК ЗаказПоставщику ИЗ (ВЫБРАТЬ ВТОстатки.Номенклатура КАК Номенклатура, МИНИМУМ(ВТОстатки.ЗаказПоставщику.Дата) КАК ЗаказПоставщикуДата ИЗ ВТОстатки КАК ВТОстатки СГРУППИРОВАТЬ ПО ВТОстатки.Номенклатура) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстатки ПО ВложенныйЗапрос.Номенклатура = ВТОстатки.Номенклатура И ВложенныйЗапрос.ЗаказПоставщикуДата = ВТОстатки.ЗаказПоставщику.Дата СГРУППИРОВАТЬ ПО ВТОстатки.Номенклатура) КАК ВложенныйЗапрос ПО ВТОстатки.Номенклатура = ВложенныйЗапрос.Номенклатура И ВТОстатки.ЗаказПоставщику = ВложенныйЗапрос.ЗаказПоставщику |
|||
44
Jackman
11.10.11
✎
21:01
|
Всем спасибо, вроде работает. Ща прикручу к основному запросу
|
|||
45
Jackman
11.10.11
✎
21:02
|
еще ни разу не использовал ПОМЕСТИТЬ, как раз хороший пример
|
|||
46
DrHiHi
11.10.11
✎
21:06
|
(45) пора начинать работать со временными таблицами
|
|||
47
Jackman
11.10.11
✎
21:16
|
(46) А как увязать временную таблицу с основным запросом в (0) ? Там ОБЪЕДИНИТЬ есть
|
|||
48
Jackman
11.10.11
✎
21:25
|
Разобрался, еще раз спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |