Имя: Пароль:
1C
1C 7.7
v7: "Пакетный" прямой запрос - как правильно?
0 mikecool
 
25.09.12
17:16
1с++
Взлетит такое:
"
CREATE TABLE TempTable Column тут далее по тексту
GO
INSERT INTO TempTable ...
GO"
или может есть способ проще, ибо надо загнать в виде параметра запроса список со строками длиной 17 символов?
1 Mikeware
 
25.09.12
17:17
ВыполнитьИзТЗ() ?
2 Ёпрст
 
гуру
25.09.12
17:18
взлетит
3 mikecool
 
25.09.12
17:19
(1) что то там строки более 15 символов вроде не обрабатываются
4 mikecool
 
25.09.12
17:19
(2) я к чему спросил, помню рисовал пакет для обрезки базы и он как то на первом GO завис ((
5 Mikeware
 
25.09.12
17:20
(3) хм. Это почему? у меня проблема была только с записью времени...
6 mikecool
 
25.09.12
17:24
(5) попробую, но читал в описании метода супер длинная строка - 15 символов
7 Mikeware
 
25.09.12
17:34
(6) это если ты используешь растипизацию объектов 1С. Если преобразование не делаешь - параметр преобразования не ставишь, и пишется в том же виде
8 mikecool
 
25.09.12
17:35
(7) ок, спасибо, но табличку все равно создать придется )
9 КонецЦикла
 
25.09.12
19:17
А кто мешает разделить батчи на 2 инструкции или писать так?

ТекстЗапроса = "
   |if exists (select * from tempdb..sysobjects where id = object_id('tempdb..#TempRA'))
   |drop table #TempRA
   |create table #TempRA (dt datetime, tov char(9), apt char(9), delta numeric(14,3), prod numeric(14,3) primary key clustered (dt, tov, apt))
   |
   |INSERT INTO #TempRA
   |SELECT CAST(LEFT(j.DATE_TIME_IDDOC,8) AS DATETIME) Dt
   |, r.SP18757 Tov
   |, r.SP18756 Apt
...
10 mikecool
 
26.09.12
09:09
(9) а такие запросы не будут выполняться одновременно?
11 mikecool
 
26.09.12
11:28
не робит чего то (
пишу
ТЗ.НоваяКолонка("Поле", "Строка", 17)
...
ОбъектРекордСет.ВыполнитьИнструкцию("CREATE TABLE tempdb..#ListTable (Pole Char(17))")
ОбъектРекордСет.Prepare("Insert into tempdb..#ListTable (Pole) values(?)")
ОбъектРекордСет.ВыполнитьSQL_ИЗТз(ТЗ)

получаю
Произошла ошибка при формировании автоматических параметров.
Необходимо выполнить подготовку запроса или проверить синтаксис!
Invalid descriptor index
12 mikecool
 
26.09.12
11:44
типа я как то не так подсовываю параметры, но как правильно - не понимаю (
13 mikecool
 
26.09.12
11:59
апну чтоли
а то щас перепишу формирование текста запроса на сборный )
14 Mikeware
 
26.09.12
12:09
(12)
попробуй все-таки не указывать базу (временные таблицы и так в темпдб создадутся)
ну, и попробуй добавить параметры в запрос (метод AddParam, или автоматически, BuildParam)
15 mikecool
 
26.09.12
12:22
(14) да как бы описание метода ВыполнитьSQL_ИЗТз не требует этого...
забил я на него, переписал на цикличный инсерт
16 val
 
26.09.12
12:44
(15) Кусок из рабочего кода:

   ТЗ2=СоздатьОбъект("ТаблицаЗначений");
   ТЗ.Выгрузить(ТЗ2,,,"Штрихкод,Размер");
   ТЗ2.УстановитьПараметрыКолонки("Штрихкод","Строка",14,,,,,);
   ТЗ2.УстановитьПараметрыКолонки("Размер","Строка",12,,,,,);
   лRecordSet = СоздатьОбъект("ODBCRecordSet");
   лRecordSet.Выполнить("CREATE TABLE #КодыПерекоды (val char(14),val2 char(12))");
   лRecordSet.ДобПараметр(1,14,14,0);
   лRecordSet.ДобПараметр(1,14,12,0);

   Если лRecordSet.Prepare("INSERT INTO #КодыПерекоды (val,val2) VALUES(?,?)") = 0 Тогда
       Сообщить("Ошибка"+лRecordSet.GetLastError(), "!");
       Возврат 0;
   КонецЕсли;
   лRecordSet.ВыполнитьSQL_ИзТЗ(ТЗ2,0);
17 mikecool
 
26.09.12
12:48
(16) а, блин, надо было параметры добавлять
щас попробую, спасибо
18 mikecool
 
26.09.12
12:56
имею
ДобПараметр(1, 14, 17, 0)
ВыполнитьSQL_ИзТЗ ...

получаю ошибку String data, right truncation
чего еще ему надо? )
19 val
 
26.09.12
13:01
(18) Обрати внимание в (16) на:
1) ТЗ2.УстановитьПараметрыКолонки("Штрихкод","Строка",14,,,,,);
2) CREATE TABLE #КодыПерекоды (val char(14),

Размеры и тип должны быть одинаковы и задаеы явно.
20 mikecool
 
26.09.12
13:05
(19) ну как бы

ТЗ.НоваяКолонка("Поле", "Строка", 17)
...
ОбъектРекордСет.ВыполнитьИнструкцию("CREATE TABLE tempdb..#ListTable (Pole Char(17))")

ОбъектРекордСет.Prepare("Insert into tempdb..#ListTable (Pole) values(?)")

ОбъектРекордСет.ВыполнитьSQL_ИЗТз(ТЗ)
21 mikecool
 
26.09.12
13:06
(19) щас попробую еще добавить УстановитьПараметрыКолонки
22 val
 
26.09.12
13:15
(20) В ТЗ колонка Поле - это единственная колонка?
23 mikecool
 
26.09.12
13:47
(22) да, одна, но я в нее выгружаю из другой тз, но там тож колонка строка(17)
24 mikecool
 
26.09.12
13:56
помогло после выгрузить установитьпараметрыколонки
спасибо за помощь
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший