Имя: Пароль:
1C
1С v8
выбрать в запросе
0 ic-kat
 
30.03.13
20:06
помогите, не соображу, как сделать...
есть регистр накопления, у регистра есть измерение накладная и куча регистраторов типа накладная, перестановка, возврат груза, списание и пр, которые делают по нему движения.
нужно за заданный период выбрать самое позднее движение по каждой накладной.
если бы на дату, тогда понятно, в а период... вроде элементарно, но что-то застопорилось
1 Ork
 
30.03.13
20:11
(0) Что значит "самое позднее" движение?
2 unkairosed
 
30.03.13
20:12
"выбрать самое позднее движение по каждой накладной" - как это понимать? накладная формирует записи по этому регистру с разными значениями поля "Период"?
3 ic-kat
 
30.03.13
20:14
накладная тут и как измерение и как один из регистраторов
4 unkairosed
 
30.03.13
20:17
(3) Спасибо за комментарий. Уже успел еще раз перечитать - вопросы отпали.
5 ic-kat
 
30.03.13
20:19
например
период   регистратор       накладная     количество
01.03     накладная№1      накладная№1      4
02.03     перестановка№1   накладная№1      4
03.03     накладная№2      накладная№2      1
04.03     возврат№1        накладная№7      2
05.03     перестановка№2   накладная№7      2

в период с 1 по 5 нужно чтобы в выборку попали:
02.03     перестановка№1   накладная№1      4
03.03     накладная№2      накладная№2      1
05.03     перестановка№2   накладная№7      2
6 vs7719
 
30.03.13
20:23
Вряд ли получится решить задачу в таком виде: могут быть "последние" документы одной датой и временем. Меняй постановку задачи. Скорее всего, на текущий момент она у вас неправильная.
7 ic-kat
 
30.03.13
20:25
задача найти текущее расположение накладной. ячейку т.е.
значит нужно искать последний регистратор по этой накладной в периоде.
как по-другому, пока не вижу
8 mistеr
 
30.03.13
20:26
максимум(период)
сгруппировать по накладная

В чем проблема?
9 ic-kat
 
30.03.13
20:30
видать, просто вечер ночер сказывается. сейчас попробую
10 ic-kat
 
30.03.13
22:05
(8) выводит все записи по накладной
что не так делаю? может не так поняла?

"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    МАКСИМУМ(ГрузВЯчейках.Период) КАК Период,
|    ГрузВЯчейках.Регистратор,
|    ГрузВЯчейках.Накладная КАК Накладная,
|    ГрузВЯчейках.Ячейка.АдресПолный КАК Ячейка
|ИЗ
|    РегистрНакопления.ГрузВЯчейках КАК ГрузВЯчейках
|ГДЕ
|    ГрузВЯчейках.Склад В(&СписокСкладов)
|    И ГрузВЯчейках.Период Между &НачПериода  И &КонПериода
|СГРУППИРОВАТЬ ПО
|    ГрузВЯчейках.Накладная,
|    ГрузВЯчейках.Регистратор,
|    ГрузВЯчейках.Ячейка.АдресПолный
| ";
11 mistеr
 
30.03.13
22:27
(10) Конечно. Я написал одно, у тебя другое.

Нужно получить ВТ (Накладная, Период) как я написал. Потом снова соединить с регистром, чтобы получить полностью записи.
12 ic-kat
 
30.03.13
22:36
(11) спасибо, так получилось
13 ic-kat
 
30.03.13
22:43
только странно, как только пытаюсь вывести поле регистратора, то опять все записи выводятся
14 ic-kat
 
30.03.13
23:02
(11)
выводит запись самую позднюю, даже если она не попадает в диапазон, условия на период ничего не дают
15 unkairosed
 
31.03.13
02:56
(14) Дайте нам последнюю сборку текста запроса.
16 ic-kat
 
31.03.13
08:07
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|ГрузВЯчейках.Период,
|ГрузВЯчейках.Регистратор,
|ГрузВЯчейках.Накладная КАК Накладная,
|ГрузВЯчейках.Ячейка.АдресПолный КАК Ячейка
|Поместить ВтДанные
|ИЗ
|РегистрНакопления.ГрузВЯчейках КАК ГрузВЯчейках
|ГДЕ
|ГрузВЯчейках.Склад В(&СписокСкладов)
|И ГрузВЯчейках.Период Между &НачПериода  И &КонПериода
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|ГрузВЯчейках.Склад КАК Склад,
|ГрузВЯчейках.Накладная КАК Накладная,
|МАКСИМУМ(ГрузВЯчейках.Период) КАК ПоследнееИзменение
|ИЗ
|РегистрНакопления.ГрузВЯчейках КАК ГрузВЯчейках
|ГДЕ
|ГрузВЯчейках.Склад В(&СписокСкладов)
|И ГрузВЯчейках.Период Между &НачПериода  И &КонПериода
|И ГрузВЯчейках.Накладная В
|(ВЫБРАТЬ РАЗЛИЧНЫЕ
|Данные.Накладная
|ИЗ
|ВтДанные
|
|СГРУППИРОВАТЬ ПО
|ГрузВЯчейках.Накладная,
|ГрузВЯчейках.Склад";
17 Мимохожий Однако
 
31.03.13
08:19
Попробуй выбрать первые записи накладных и регистраторов с сортировкой на убывание.
18 ic-kat
 
31.03.13
08:21
что даст?
19 Мимохожий Однако
 
31.03.13
08:23
Даст последние регистраторы, а от этих регистраторов можно будет получить движения
20 Мимохожий Однако
 
31.03.13
08:25
Для начала только два поля
ГрузВЯчейках.Регистратор,
ГрузВЯчейках.Накладная КАК Накладная,
21 unkairosed
 
31.03.13
14:16
"ВЫБРАТЬ
|    МАКСИМУМ(ГрузВЯчейках.Период) КАК Период,
|    ГрузВЯчейках.Накладная,
|    ГрузВЯчейках.Склад,
|    ГрузВЯчейках.Ячейка
|ПОМЕСТИТЬ ВТДанные
|ИЗ
|    РегистрНакопления.ГрузВЯчейках КАК ГрузВЯчейках
|ГДЕ
|    ГрузВЯчейках.Период МЕЖДУ &НачПериода И &КонПериода
|    И ГрузВЯчейках.Склад В(&СписокСкладов)
|
|СГРУППИРОВАТЬ ПО
|    ГрузВЯчейках.Накладная,
|    ГрузВЯчейках.Ячейка,
|    ГрузВЯчейках.Склад
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ГрузВЯчейках.Регистратор,
|    ГрузВЯчейках.Накладная,
|    ГрузВЯчейках.Склад,
|    ГрузВЯчейках.Ячейка,
|    ГрузВЯчейках.Период КАК ПоследнееИзменение
|ИЗ
|    РегистрНакопления.ГрузВЯчейках КАК ГрузВЯчейках
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДанные КАК ВТДанные
|        ПО ГрузВЯчейках.Период = ВТДанные.Период
|            И ГрузВЯчейках.Накладная = ВТДанные.Накладная
|            И ГрузВЯчейках.Склад = ВТДанные.Склад
|            И ГрузВЯчейках.Ячейка = ВТДанные.Ячейка"
22 ic-kat
 
31.03.13
15:37
(17) ничего не дало
(21) а так все движения по накладной выбирает
23 unkairosed
 
31.03.13
18:27
(22) Не может такого быть. Убедитесь, что соединение "ВНУТРЕННЕЕ" (или "ПРАВОЕ") и условия соединения настроены правильно, см. (21)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой