Имя: Пароль:
1C
 
Кто-нибудь интересовался как в SQL реализована виртуальная таблица СрезПоследних?
0 nbIx
 
24.12.08
20:14
Кто-нить смотрел профайлером или имеет инфу по этой теме?
1 vde69
 
24.12.08
20:18
она-же виртуальная :)

ее или совсем нету, или это временная, хотя я думаю, что ее вообще нету
2 H A D G E H O G s
 
24.12.08
20:19
3 H A D G E H O G s
 
24.12.08
20:20
(1) Виртуальная, шмиртуальная.. Ни о чем не говорит.. Виртуальная таблица остатков - отдельная табличка..
4 vde69
 
24.12.08
20:22
(3) не надо путать... там регист физически состоит из нескольких таблиц.

я думаю, что они реализованы в виде ХП, а вот внутри них чего ?
5 Ненавижу 1С
 
гуру
24.12.08
20:24
но точно не так как тут
http://sql.ru/forum/actualthread.aspx?tid=620607
а зря
6 nbIx
 
24.12.08
20:24
(2) Это я и сам так делал:)) Однако уверен, что на SQL делается не такой запрос.

Так как если представить, что записей по одному набору значений измерений очень много, то этот запрос будет работать уж очень медленно.
7 H A D G E H O G s
 
24.12.08
20:29
(6)

SELECT
#V8TblAli1_Q_000_T_001._Fld54RRef AS f_1,
#V8TblAli1_Q_000_T_001._Fld55 AS f_2
FROM
(
SELECT
_InfoReg53_IR2._Fld54RRef AS _Fld54RRef,
_InfoReg53_IR2._Fld55 AS _Fld55
FROM
(
SELECT
_InfoReg53._Fld54RRef AS _Fld54RRef,
MAX(_InfoReg53._Period) AS _MAXPERIOD
FROM
_InfoReg53 WITH(NOLOCK)
GROUP BY
_InfoReg53._Fld54RRef
) #V8TblAli1_IR1
INNER JOIN _InfoReg53 _InfoReg53_IR2 WITH(NOLOCK)
ON #V8TblAli1_IR1._Fld54RRef = _InfoReg53_IR2._Fld54RRef AND #V8TblAli1_IR1._MAXPERIOD = _InfoReg53_IR2._Period
) #V8TblAli1_Q_000_T_001
8 H A D G E H O G s
 
24.12.08
20:29
(6) Плохо
9 vde69
 
24.12.08
20:30
(6) физически у регистра 2 таблици

1 - сам регист движений
2 - остатки на конец каждого месяца

получение среза последних - это 2 запроса
1 получение остатка на конец месяца (после требуемой даты), из второй таблицы
2 получение всех записей из первой таб за период с требуемой, по конец месяца

ну и вычитание

весь вопрос именно в оптимизации этого...
10 Ненавижу 1С
 
гуру
24.12.08
20:32
(9)ты регистр сведений с регистром накопления не путаешь?
11 nbIx
 
24.12.08
20:34
(7) Жесть, завтра проверю:))
12 vde69
 
24.12.08
20:34
(10) а какая разница? нету ее :)
13 Ненавижу 1С
 
гуру
24.12.08
20:35
(12) нах в регистре сведений "остатки на конец каждого месяца" и что это такое кстати?
14 H A D G E H O G s
 
24.12.08
20:36
(12) Малыш, ты меня волнуешь ©
:-)
15 nbIx
 
24.12.08
20:37
(13) Наверно он имеет в виду не остатки, а как раз таблица среза последних на конец месяца.
16 vde69
 
24.12.08
20:38
(13) ну кстати было-бы логично, хотя через max вроде то-же логично
(14) у меня скуля дома нету, проверить не начем :)
17 nbIx
 
24.12.08
20:38
(15) Хотя вряд ли есть такая таблица, иначе 1С каждый месяц предлагала посчитать.
18 Ненавижу 1С
 
гуру
24.12.08
20:39
(15) какой смысл в срезе последних именно на конец месяца, чем он лучше другой любой даты? или курсы валют или главбухи изменяются лучше в последний день месяца?
19 Ненавижу 1С
 
гуру
24.12.08
20:41
в (5) показана более простая реализация получения данных. минусы: избыточность данных, медленнее изменять данные.
Но так всегда: быстрота чтения данных достигается избыточностью и более медленным внесением изменений
20 H A D G E H O G s
 
24.12.08
20:42
(18) Вот прям ненавистью к 1С исходит..
P.S. Шутка
P.S.S. Не обращайте внимания, я радуюсь, меня разбанили!
21 nbIx
 
24.12.08
20:42
(18) А чтоб соединять уже с этой таблицей.
Запрос (6) так шустрее работать будет, так как будет меньше записей во вложенных запросах ИМХО.
22 Балабес
 
24.12.08
20:44
там три таблицы для одного регистра.
с отсутствием общего журнала просто жесть, там такие запросы получаются с перебором всех таблиц документов, что удаленно его скармливать не получается, скл путается в кейсах. приходиться заводить хранимки в базу скл и выгружать выборки в отдельную базу. а можно самому добавлять таблички в 1с базу? 1с плохо не станет?
как то сыкотно однако
23 H A D G E H O G s
 
24.12.08
20:45
Да ладно вам.. СрезПоследних и так шустро работает..

Лучше б про бухгалтерские регистры пофлудили..
24 Ненавижу 1С
 
гуру
24.12.08
20:46
(22) с общим журналом конечно было много лучше, особенно его реализацией 7.7
хочется геморою? заведи общий журнал
25 asady
 
24.12.08
20:48
SELECT
#V8TblAli1_Q_000_T_001._Period AS f_1,
#V8TblAli1_Q_000_T_001._Fld10068RRef AS f_2,
#V8TblAli1_Q_000_T_001._Fld10069 AS f_3,
#V8TblAli1_Q_000_T_001._Fld10070 AS f_4
FROM
(
SELECT
_InfoReg10067_IR2._Period AS _Period,
_InfoReg10067_IR2._Fld10068RRef AS _Fld10068RRef,
_InfoReg10067_IR2._Fld10069 AS _Fld10069,
_InfoReg10067_IR2._Fld10070 AS _Fld10070
FROM
(
SELECT
_InfoReg10067._Fld10068RRef AS _Fld10068RRef,
MAX(_InfoReg10067._Period) AS _MAXPERIOD
FROM
_InfoReg10067 WITH(NOLOCK)
GROUP BY
_InfoReg10067._Fld10068RRef
) #V8TblAli1_IR1
INNER JOIN _InfoReg10067 _InfoReg10067_IR2 WITH(NOLOCK)
ON #V8TblAli1_IR1._Fld10068RRef = _InfoReg10067_IR2._Fld10068RRef AND #V8TblAli1_IR1._MAXPERIOD = _InfoReg10067_IR2._Period
) #V8TblAli1_Q_000_T_001



_InfoReg10067 - регистр сведений КурсыВалют
26 Балабес
 
24.12.08
20:50
(24) да я седня нагемороился без общего журнала, такую жопу соорудил, но зато работает. С другого сервера запускаю хр процедуру в 1с базе, эта процедура заполняет таблицу в соседнюю базу, потом эту таблицу переношу на другой сервер.
27 Балабес
 
24.12.08
20:53
я бы вывесил эту простыню по сбору доков сделавших движения сюда, но боюсь меня потом тут забанят
28 H A D G E H O G s
 
24.12.08
21:06
(27) 25 см..
29 Балабес
 
24.12.08
21:58
(28) смотрю не теряешься, с линейкой на чеку, меришь чужие ....?
Основная теорема систематики: Новые системы плодят новые проблемы.