Имя: Пароль:
1C
 
Как сделать выборку номенклатурных групп с максимальными моментами времени?
0 PR третий
 
09.10.15
11:59
1. Решение такое... 0% (0)
2. Решение невозможно 0% (0)
Всего мнений: 0

Есть регистр бухгалтерии.
Есть 20 счет с субконто "Номенклатурные группы".
Как выбрать запросом таблицу, в которой будет два поля, "Номенклатурная группа" и "Максимальный момент времени, на который остаток по этой номенклатурной группе был равен нулю"?
1 mikecool
 
09.10.15
12:00
стыдно такое спрашивать
2 PR третий
 
09.10.15
12:00
(1) Есть решение?
3 mikecool
 
09.10.15
12:01
(2) нет
4 PR третий
 
09.10.15
12:01
+(2) Нормальное по скорости, то есть без всяких соединений всех записей со всеми.
5 mikecool
 
09.10.15
12:02
нужно последний момент, когда в производстве не было ном группы?
6 PR третий
 
09.10.15
12:02
(3) Тогда что стыдно? Стыдно спрашивать то, про что каждый знает, что это невозможно? Или что?
7 PR третий
 
09.10.15
12:02
(5) Нужно последний момент, когда на 20 счете по этой НГ был остаток 0.
8 Сторно абсурда
 
09.10.15
12:04
(6) Почему именно момент времени? 20 счет закрывается помесячно.
9 PR третий
 
09.10.15
12:05
(8) Будем считать эту вводную чёрным ящиком :)) Типа вот так есть и всё :))
10 PR третий
 
09.10.15
12:05
+(9) Кроме того, тогда задача становится банальной и неинтересной :))
11 mikecool
 
09.10.15
12:05
(4) не вижу решения без соединения всех со всеми
12 Stim
 
09.10.15
12:06
можно сделать на SQL прямыми запросами
13 PR третий
 
09.10.15
12:07
(12) Не надо
14 Гёдза
 
09.10.15
12:07
Сколько платишь? )))
15 el-gamberro
 
09.10.15
12:08
Решается просто. По каждой НГ надо собрать интервалы, каждый раз когда меняется остаток. И это с ключом регистратор.
Затем для всех интервалов взять остаток = 0 и МАКСИМУМ(регистратор.Период)
16 PR третий
 
09.10.15
12:09
(14) Нисколько :))
Считай это пятничной задачкой, разминкой для ума :))
Я для себя решение уже нашел, правда не скажу, что красивое :))
17 el-gamberro
 
09.10.15
12:09
Вот такое надо

НАЧАЛО_интервала; КОНЕЦ_интервала; Остаток_интервала; Регистратор_инициировалИнтервал;
18 PR третий
 
09.10.15
12:09
(15) У регистратора нет периода, есть момент времени
19 el-gamberro
 
09.10.15
12:10
КРОСС Джоин можно использовать, но можно и обойтись ПОЛНОЕ СОЕДИНЕНИЕ несколько раз
20 el-gamberro
 
09.10.15
12:11
(18) К моменту времени нельзя применить агрегацию
21 el-gamberro
 
09.10.15
12:12
+ (18) Но это уже тонкости, они решаются
22 PR третий
 
09.10.15
12:13
(20) Логично :))
А период записи может включать 100500 регистраторов :))
23 itlikbez
 
09.10.15
12:15
(0) Хороший пример извращенческой задачи.
Убираешь слово "запросом" и задача превращается в элементарную.
24 PR третий
 
09.10.15
12:15
(21) И как же решается тонкость невозможности взятия максимума по моменту времени регистратора? :))
25 Гёдза
 
09.10.15
12:15
(16) Ты этому у гения научился?
-Посоны, угадайте решения!!!
26 el-gamberro
 
09.10.15
12:16
(24) соединив таблицу саму с собой по периоду и взяв МАКСИМУМ(Ссылка)
27 PR третий
 
09.10.15
12:16
(23) Логично :))
Но это не самостоятельная задача. Это вспомогательная таблица для другого запроса :))
28 itlikbez
 
09.10.15
12:18
(27) И что? Вспомогательная таблица для запроса обязательно должна быть сделана запросом?
29 PR третий
 
09.10.15
12:19
(25) Да не, в моем решении все просто.
Выбираем максимальные периоды по НГ, потом все регистраторы с таким периодом, потом соединение всех со всеми по НГ и сравнением по моменту времени.
30 PR третий
 
09.10.15
12:20
(26) Максимум ссылки не равен максимуму момента времени
31 PR третий
 
09.10.15
12:21
(28) Очень желательно
32 el-gamberro
 
09.10.15
12:21
(29) откуда максимальные периоды по НГ ты взял?
33 PR третий
 
09.10.15
12:23
(32) Выбрал запросом записи, где остаток равен нулю и взял максимум по периоду
34 el-gamberro
 
09.10.15
12:23
(30) Период+Ссылка равен. А не знает, иди поучи язык 1С.
Поэтому выбираем МАКСИМУМ(Период) и соединяем с МАКСИМУМ(Регистратор). Это нужно когда в один период могут быть несколько регистраторов.
35 el-gamberro
 
09.10.15
12:24
(33) из какой это ты вирт. таблицы такое выбрал?
36 PR третий
 
09.10.15
12:25
(34) Максимум по ссылке при одинаковом периоде даст максимальный момент времени?
37 el-gamberro
 
09.10.15
12:25
(36) Да, даст.
38 PR третий
 
09.10.15
12:26
(35) Остатки и обороты по регистраторам
39 PR третий
 
09.10.15
12:26
(37) Не знал. Спасибо.
40 Ненавижу 1С
 
гуру
09.10.15
12:28
Рома как всегда не знал мат.части
41 PR третий
 
09.10.15
12:28
Хех. Пятничной ветки не получилось. Получилась вполне себе такая техническая ветка :))
42 PR третий
 
09.10.15
12:30
(40) Я знал, что момент времени = дата + ссылка.
Не знал (36).
43 Гёдза
 
09.10.15
12:32
Не совсем Момент = Дата + Гуид ссылки.
А просто ссылка - это Тип + Вид
44 Гёдза
 
09.10.15
12:32
*Тип+Гуид
45 PR третий
 
09.10.15
14:44
Странно, но вроде как так и есть Как переместить документ в конец дня?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн