Имя: Пароль:
1C
 
Ошибка при выгрузки из 1С в SQL Server(Перенос данных)
0 bura_limon
 
23.09.10
11:44
Выкидывает ошибку : Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed.
Понятно что ошибка в НаборЗаписей.Close();Я так понял что надо еще что то close.....ХЕЛП...

ВыборкаРез=Запрос.Выполнить().Выбрать();
Пока ВыборкаРез.Следующий()Цикл
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"','"
+ВыборкаРез.Контрагент+"',"  
+ВыборкаРез.Сумма+"',"
+ВыборкаРез.Итого+"',"
+ВыборкаРез.Получил+"',";

Команда.CommandText=ТекстЗапроса;
Попытка
НаборЗаписей=Команда.Execute();
Исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;

Попытка
НаборЗаписей.Close();
исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;    
   
исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;

       
     DataBaseConnection.Close();
1 bura_limon
 
23.09.10
12:39
Со скулом не кто не дружит?!
2 cobRA
 
23.09.10
12:47
Вроде бы все русским языком написано: "Operation is not allowed when the object is closed". Что непонятного-то?
3 bura_limon
 
23.09.10
13:02
(2)ну не прям русским языком,это понятно что Close не сработало,вот хочу узнать что я пропустил
4 cobRA
 
23.09.10
13:05
(3) Убери на...й Close
5 shuhard
 
23.09.10
13:05
(3) для тебе учить сиквел не надо,
достаточно отладчика в 1С
6 bura_limon
 
23.09.10
13:17
(4)очень смешно.......
7 bura_limon
 
23.09.10
13:29
Так погодите,вот полная ошибка:
Ошибка: {Форма.Форма(139)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near ',770401001'.
Ошибка: {Форма.Форма(139)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near ',770401001'.
и т.д..............
.....................
Ошибка: {Форма.Форма(147)}: Ошибка при вызове метода контекста (Close): Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed.


Это ошибка в скрипте:
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"','"
+ВыборкаРез.Контрагент+"',"  
+ВыборкаРез.Сумма+"',"
+ВыборкаРез.Итого+"',"
+ВыборкаРез.Получил+"',";
буду разбиратся
8 bura_limon
 
23.09.10
14:42
(3)интересно как ты собираешся отладчиком проверять?!Операторы Скуловские
9 shuhard
 
23.09.10
14:47
(8) хорошая трава
НаборЗаписей к сиквелу близко не лежит
10 bura_limon
 
23.09.10
14:50
(9)
СтрокаПодключения="Provider=SQLOLEDB.1;Password=111!;Persist Security Info=True;User ID=billing_daemon;Initial Catalog=ec_dem;Data Source=PORTServer";    
Попытка
DataBaseConnection = Новый COMObject("ADODB.Connection");
Кодировка = "windows-1251";
DataBaseConnection.ConnectionString =СтрокаПодключения ;
DataBaseConnection.Open();

Команда=Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection=DataBaseConnection;
RS = Новый COMОбъект("ADODB.Recordset");
НаборЗаписей=RS;
ВыборкаРез=Запрос.Выполнить().Выбрать();

Пока ВыборкаРез.Следующий()Цикл

а так не лежит?!:НаборЗаписей=RS;
11 bura_limon
 
23.09.10
14:53
в общем вот правельно :
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"','"
+ВыборкаРез.inn+"','"
+ВыборкаРез.kpp+"','"
+ВыборкаРез.type+"','"  
+ВыборкаРез.amount+"','"
+ВыборкаРез.Agent_name+"','"  
+ВыборкаРез.comment+"')"  ;
но все равно не работает,говорит что ошибка object agent_debt:

Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Invalid object name 'dbo.io_agent_debt'.

ну же Мистовцы помогите..........
12 ДенисЧ
 
23.09.10
14:55
"nvalid object name 'dbo.io_agent_debt'"

совершенно ни о чём не говрит?
13 sapphire
 
23.09.10
14:56
(11) Ну нет там такой таблицы.
Чего неясного?
14 sapphire
 
23.09.10
14:56
ТекстЗапроса="INSERT INTO io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"','"
+ВыборкаРез.inn+"','"
+ВыборкаРез.kpp+"','"
+ВыборкаРез.type+"','"  
+ВыборкаРез.amount+"','"
+ВыборкаРез.Agent_name+"','"  
+ВыборкаРез.comment+"')"  ;
15 sapphire
 
23.09.10
14:57
и вообще, так лучше не делать
16 bura_limon
 
23.09.10
15:00
(15)дык я из Запроса 1с в Скул и передаю,вообщем вот вся Процедура:
Процедура КнопкаВыполнитьНажатие()Экспорт
СтрокаПодключения="Provider=SQLOLEDB.1;Password=111!;Persist Security Info=True;User ID=billing_daemon;Initial Catalog=rt_dem;Data Source=PORTServer";
Попытка
DataBaseConnection = Новый COMObject("ADODB.Connection");
Кодировка = "windows-1251";
DataBaseConnection.ConnectionString =СтрокаПодключения ;
DataBaseConnection.Open();

Команда=Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection=DataBaseConnection;
RS = Новый COMОбъект("ADODB.Recordset");
НаборЗаписей=RS;

Счет = Новый Массив;
Счет.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками); //60 счет
Счет.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками); //76.05 счет

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаНачОстатки", '20091231');
Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода );
Запрос.УстановитьПараметр("КонецПериода",конецПериода );
Запрос.УстановитьПараметр("Счет", Счет);

Запрос.Текст=
"ВЫБРАТЬ
| ХозрасчетныйОбороты.Период КАК dt,
| 1 КАК type,
| ХозрасчетныйОбороты.Субконто1 КАК Agent_name,
| ХозрасчетныйОбороты.Субконто1.ИНН КАК inn,
| ХозрасчетныйОбороты.Субконто1.КПП КАК kpp,
| ХозрасчетныйОбороты.СуммаОборот КАК amount,
| ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Регистратор) КАК comment
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет В ИЕРАРХИИ (&Счет), , , , ) КАК ХозрасчетныйОбороты
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ),
| 2,
| ХозрасчетныйОстаткиИОбороты.Субконто1,
| ХозрасчетныйОстаткиИОбороты.Субконто1.ИНН,
| ХозрасчетныйОстаткиИОбороты.Субконто1.КПП,
| ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
| ""Остаток на дату ""
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНачОстатки, &КонецПериода, Месяц, ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
|
|УПОРЯДОЧИТЬ ПО
| agent_name";

;
ВыборкаРез=Запрос.Выполнить().Выбрать();

Пока ВыборкаРез.Следующий()Цикл
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"','"
+ВыборкаРез.inn+"','"
+ВыборкаРез.kpp+"','"
+ВыборкаРез.type+"','"
+ВыборкаРез.amount+"','"
+ВыборкаРез.Agent_name+"','"
+ВыборкаРез.comment+"')" ;

Команда.CommandText=ТекстЗапроса;
Попытка
НаборЗаписей=Команда.Execute();
Исключение
Сообщить("Ошибка: " + ОписаниеОшибки());

КонецПопытки;
КонецЦикла;

Попытка
НаборЗаписей.Close();
исключение
//Сообщить("Ошибка сбоя");

Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;

исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
Сообщить("Ошибка при передачи данных в SQL!",СтатусСообщения.Информация);

КонецПопытки;


DataBaseConnection.Close();

КонецПроцедуры
17 shuhard
 
23.09.10
15:02
(16) Сообщить(ТекстЗапроса);
и всё станет понятно
18 bura_limon
 
23.09.10
15:12
(16)
вообщем перечислел он все эти поля:
1)INSERT INTO dbo.io_agent_debt VALUES ('12/31/2009','6154100214','615401001','2','-87 500','Аварийно-восстановительная служба','Остаток на дату ')
Ошибка: {Форма.Форма(139)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Invalid object name 'dbo.io_agent_debt'.
2)INSERT INTO dbo.io_agent_debt VALUES ('01/18/2010','6164280911','616401001','1','3 917,5','Сетевые технологии ТД ООО','Платежное поручение исходящее ЭкД00000093 от 18.01.2010 15:30:50')
Ошибка: {Форма.Форма(139)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Invalid object name 'dbo.io_agent_debt'.
И так далее..........
я так понимаю в скуле надо создать эти поля в ТЧ.......
19 ДенисЧ
 
23.09.10
15:14
ну нету у тебя таблицы dbo.io_agent_debt. На что тебе скуль и намекает настолько открыто, что я прям не знаю как.
20 sapphire
 
23.09.10
15:17
(18) запрос
select name from sysobjects where xtype='U'
вернет все имена таблиц в БД
21 sapphire
 
23.09.10
15:18
(19) Надо намекнуть человеку, что в инвалидов данные не вставляют :D
22 shuhard
 
23.09.10
15:19
(18)[я так понимаю в скуле надо создать эти поля в ТЧ]
у сиквела нет ТЧ

сделай на сиквеле запрос
use  rt_dem
GO
select  * TOP 10 from io_agent_debt
GO
23 bura_limon
 
23.09.10
15:31
так надо сообразить как из cmd подключится к SQL Server,в другом городе SQL Server
24 bura_limon
 
23.09.10
15:36
(18)я так понял что я своей Процедуре не создал agent_debt?
25 bura_limon
 
23.09.10
15:37
нет щас доступа к Скулу блин,админ на том конце нет на месте
26 shuhard
 
23.09.10
15:45
(23) накуя тебе cmd
сделай select  * from io_agent_debt
в 1С
27 bura_limon
 
23.09.10
15:59
(23)так пожди,через консоль запросов 1С?
28 shuhard
 
23.09.10
16:01
(27) нет
не угадал
СтрокаПодключения="Provider=SQLOLEDB.1;Password=111!;Persist Security Info=True;User ID=billing_daemon;Initial Catalog=rt_dem;Data Source=PORTServer";
Попытка
DataBaseConnection = Новый COMObject("ADODB.Connection");
Кодировка = "windows-1251";
DataBaseConnection.ConnectionString =СтрокаПодключения ;
DataBaseConnection.Open();

Команда=Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection=DataBaseConnection;
MyRst = Новый COMОбъект("ADODB.Recordset");
НаборЗаписей=RS;
MyRst.Open ("select * from io_agent_debt ", MyCon, 3, 1);
29 bura_limon
 
23.09.10
16:08
MyCon это что за переменная,задавать её?
30 bura_limon
 
23.09.10
16:10
и вот это надо:
RS = Новый COMОбъект("ADODB.Recordset");
НаборЗаписей=RS;
либо набор записей должен быть:MyRst
31 bura_limon
 
23.09.10
17:27
в общем написал так для проверки на Скул:
Процедура КнопкаВыполнитьНажатие()Экспорт
СтрокаПодключения="Provider=SQLOLEDB.1;Password=ec78912309!;Persist Security Info=True;User ID=billing_daemon;Initial Catalog=ec_dem;Data Source=msk-1c8";
   
  DataBaseConnection = Новый COMObject("ADODB.Connection");
Кодировка = "windows-1251";
DataBaseConnection.ConnectionString =СтрокаПодключения ;
DataBaseConnection.Open();

Команда=Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection=DataBaseConnection;

Команда.CommandTimeout = 0;
Команда.CommandType = 1;
Команда.CommandText = "select * from io_agent_debt ";




Попытка
НаборЗаписей=Команда.Execute();
Исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
Возврат;
КонецПопытки;

Пока Не НаборЗаписей.EOF() Цикл

Сообщить(НаборЗаписей.Fields("ИмяПоляТаблицыSQL").VALUE);
НаборЗаписей.MoveNext();
КонецЦикла;

НаборЗаписей=Неопределено;
Команда=Неопределено;
DataBaseConnection=Неопределено;
КонецПроцедуры

Ошибка:Ошибка: {Форма.Форма(182)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Invalid object name 'io_agent_debt'.
32 ДенисЧ
 
23.09.10
17:29
ну он тебе уже не знает, как ещё намекнуть :-)
33 shuhard
 
23.09.10
17:30
(31) дык ты сам себе злобный Буратино
нет в ec_dem таблицы io_agent_debt или у billing_daemon нет на нее прав
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.