Имя: Пароль:
1C
1С v8
Как написать такой же запрос на SQL?
,
0 Ivan_495
 
10.01.12
10:31
Как написать такой же запрос на SQL
ВЫБРАТЬ
   ХозрасчетныйОстатки.Счет,
   ВЫБОР
       КОГДА ХозрасчетныйОстатки.Субконто1 ССЫЛКА Справочник.Номенклатура
           ТОГДА ХозрасчетныйОстатки.Субконто1
       ИНАЧЕ NULL
   КОНЕЦ КАК Номенклатура,

ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&Дт, , , ) КАК ХозрасчетныйОстатки
1 sbabay
 
10.01.12
10:33
Открыть SQL Profiler и скопировать запрос, который отдает сервер 1С серверу БД
2 sbabay
 
10.01.12
10:33
Хотя так просто все случаи не получишь.
3 Ivan_495
 
10.01.12
10:35
(1)  смотрел запрос 700 строк, хотелось бы поменьше
4 SnarkHunter
 
10.01.12
10:36
(3)Удали разделители строк
5 sbabay
 
10.01.12
10:38
+ и алиасы таблиц покороче ))

А вообще длина запроса в данном случае не самая страшная проблема
6 Ivan_495
 
10.01.12
10:38
нужен аналог команды ХозрасчетныйОстатки.Субконто1 ССЫЛКА Справочник.Номенклатура на уровне SQL
7 Ненавижу 1С
 
гуру
10.01.12
10:40
ну тип субконто по-моему там отдельное поле
сама сложность создать виртуальную таблицу
8 Maxus43
 
10.01.12
10:42
(7) всмысле создать вирт таблицу? на скуле она как физическая лежит же
9 DmitryPavlik
 
10.01.12
10:44
Метода "Остатки" в скл нет, тебе надо делать группировку с условием по дате.
Ссылка - это обычный идэшник.
10 Ненавижу 1С
 
гуру
10.01.12
10:45
(8) ну да - тут проще - границы нет
11 Aleks555
 
10.01.12
11:00
(9) я бы сказал, что ссылка это просто GUID
12 DmitryPavlik
 
10.01.12
11:02
(11) итого - ID ))
13 Aleks555
 
10.01.12
11:10
те же яйца, только в профиль)
14 rs_trade
 
10.01.12
11:14
(6) сколько платишь?
15 rsv
 
10.01.12
11:15
(0) Ну воспроизводить портянку что генерит Остатки(&Дт, , , ) смысла нет .
   Вам нужно две таблички - таблица проводок и таблица аналитики в этих проводках. Правда оперировать при расчете остатков будете не суммой остатка , а суммой проводки.
16 Maxus43
 
10.01.12
11:18
(6) чтоб аналог этой команды узнать - запрос к обычной таблице хозрасчетного сделай, в профайлере на скуле уже не будет 700 строк
17 hidden1C
 
10.01.12
11:31
Запрос некорректный, как минимум нужно условие на Вид Субконто наложить, может у тебя Субконто2 Номенклатура(это сейчас в запросе не прописано)
18 rs_trade
 
10.01.12
11:46
(8) откуда у вас такие сведения?
19 Aleks555
 
10.01.12
11:49
(18) наверное он имел ввиду, что на скуле виртуальных таблиц нет
20 Maxus43
 
10.01.12
11:56
я имел ввиду что на скуле вирт таблицы регистров имеют вид обычных таблиц, например AccumRegTotals, виртуальных таблиц там есно нет
21 rs_trade
 
10.01.12
12:04
(20) вирт. таблица <> таблица итогов. вирт. таблица есть запрос.
22 Ivan_495
 
10.01.12
12:07
(21)+ согласен
причем запрос не к одной таблице , а к нескольким
23 Maxus43
 
10.01.12
12:10
дада, поправили. согласен)
24 igork1966
 
10.01.12
12:15
(0) непонятна цель этого действа

ЗЫ. Особенно если учесть... что на разных базах с одной и той же конфой... имена соответсвующих таблиц SQL могут отличаться...
25 Ivan_495
 
10.01.12
12:17
непонятно как выгрузить кубы по проводкам и бух итогам из 1с
26 Ivan_495
 
10.01.12
12:32
вернее из 1с средствами 1с понятно и даже сделали, но медленно работает, а вот на уровне SQL выгрузить сальдо и проводки ???
27 rs_trade
 
10.01.12
12:35
(26) не туда вас понесло. курите лучше свой запрос на оптимальность, ну и конечно же индексы.
28 Ivan_495
 
10.01.12
12:41
(27) да запрос то работает быстро, тормоза на INSERTах, когда данные в SQL таблицу выгружаем
29 rs_trade
 
10.01.12
13:41
(28) а зачем его тогда переписывать на прямой??
30 Ivan_495
 
10.01.12
13:54
(29) а как можно таблицу одним Insertom из 1c sql перенести без прямых запросов?
31 acsent
 
10.01.12
13:58
(30) кури bulk load
32 rs_trade
 
10.01.12
14:15
(30) выгрузить результат запроса в текстовый файл, а дальше bulk insert
33 rs_trade
 
10.01.12
14:17
(32) bulk insert запускать из 1С через АДО. После формирования txt файла.
34 Ivan_495
 
10.01.12
14:17
(31) я попробовал сильная команда
CREATE TABLE #T (T VARCHAR(MAX))

--BULK INSERT #T FROM 'F:\TEMP\FILE.TXT'
BULK INSERT #T FROM 'D:\1\222.txt'
  WITH
    (
 --     ROWTERMINATOR = '\R\N',
      CODEPAGE = 1251
     )
SELECT * FROM #T

DROP TABLE #T
35 rs_trade
 
10.01.12
14:19
Проверить таблицу получатель на наличие бесполезных индексов. Я так понимаю эта таблица внешняя по отношению к 1С?