|
|
|
Ошибка при выгрузки из 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 нет на нее прав |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |