Имя: Пароль:
1C
1C 7.7
v7: Временные таблицы и 1С++
0 woha
 
10.04.13
08:52
Доброго утра! Подскажите, пожалуйста, есть возможность в 1С++ сделать из таблицы значений 1С сделать временную таблицу SQL и если есть то как?
Спасибо.
1 ДенисЧ
 
10.04.13
08:53
Есть.
ВыполнитьИзТЗ() - вроде так метод называется.
пишешь запрос на create table и insert, и вызываешь.
Примеров не дам - ищи на 1cpp.ru
2 woha
 
10.04.13
08:54
(1) Спасибо.
3 woha
 
10.04.13
09:01
(1) insert делать обязательно?
4 ДенисЧ
 
10.04.13
09:02
(3) А как ты данные в таблицу положишь? :-)
5 woha
 
10.04.13
09:08
(4)думал, что ВыполнитьИзТЗ() сам их туда положит. :)
6 woha
 
10.04.13
09:09
(4)Выходит таблицу построчно надо перебрать, чтобы она стала временной?
7 ДенисЧ
 
10.04.13
09:10
(6) Это за тебя сделает ВыполнитьИзТЗ(). Но чтобы она смогла это сделать, ей нужно сказать, что делать...
8 ДенисЧ
 
10.04.13
09:12
Вот нашёл пример
http://www.1cpp.ru/forum/YaBB.pl?num=1162025223
9 woha
 
10.04.13
09:17
(8) Странный пример. Чтобы получить временную таблицу кроме інсерт надо еще и селектом пройтись по справочнику.
10 ДенисЧ
 
10.04.13
09:18
(9) Селект там для примера получения из временной.
А тебе что надо?
Создание вт и вставка в неё данных - есть.
11 woha
 
10.04.13
09:20
Еще один пример. Похоже на танцы с бубном.

rc = СоздатьОбъект("ODBCRecordSet");
   rc.Execute("DELETE FROM [TestSQL].[dbo].[MyTable]");        
   rc.Close();
   
   rc.Prepare("INSERT INTO MyTable (NAME, AGE, SALARY, DATEOFBIRTH) VALUES(?, ?, ?, ?)");
   тз = СоздатьОбъект("ТаблицаЗначений");
   
   тз.НоваяКолонка("NAME","Строка",,,,,,0);
   тз.НоваяКолонка("AGE","Число",4,,,,,);    
   тз.НоваяКолонка("SALARY","Число",18,2,,,,0);
   тз.НоваяКолонка("DATEOFBIRTH","Дата",,,,,,0);
   
   for i = 1 to 10 do
   тз.НоваяСтрока();
       тз.NAME        = "Панферов Вартан";
       тз.AGE         = 28;
       тз.SALARY      = 1453.12;
       тз.DATEOFBIRTH = '17.11.1974';
       тз.НоваяСтрока();
       тз.NAME        = "Гусев Дмитрий";
       тз.AGE         = 23;
       тз.SALARY      = 1233.99;
       тз.DATEOFBIRTH = '09.03.1980';
   enddo;        
   rc.ExeSQL_FromTV(тз);
12 woha
 
10.04.13
09:22
(10) Спасибо за помощь. Думаю уже разберусь. Тяжеловато используя сначала одну компоненту для прямых запросов, перейти на другую.
13 КонецЦикла
 
10.04.13
09:30
А что тут тяжелого? TSQL остался таким же...

select a into #t
from b

или

insert into #t
select a
from b
14 woha
 
10.04.13
09:34
(13) есть альтернатива, попроще, но платная.
ToyTemp=Query.CreateTemp();
ToyTemp.ВыгрузитьТаблицу("#TTOV",Ттов)

и все танцы.
15 art_id
 
10.04.13
09:35
недавно курил тему с ВТ, вот
http://www.forum.mista.ru/topic.php?upd&id=659638
16 woha
 
10.04.13
10:13
(15) спасибо.