powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
12 сообщений из 12, страница 1 из 1
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36292885
1C ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите разобраться, пожалуйста!!!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    Стрим = Новый COMОбъект("ADODB.Stream");  
     Стрим.Type = Тип("ДвоичныеДанные");    
     Стрим.Open();
     Стрим.LoadFromFile(ФайлШаблон);
     Стрим.Position =  0 ;  
   
     Команда = Новый COMОбъект("ADODB.Command");
     Команда.ActiveConnection = Соединение;
     
     //Команда.Properties.SPPrmsLOB = True;  // - ругаетсо!!!
     Команда.CommandText = "{CALL LOOK_NEW.UPP_REQUEST_ATTACH(?, ?, ?)}";
     //Команда.CommandType = Тип("Текст"); // - ругаетсо!!!
     
     // 1  - й параметр
     par1 = Команда.CreateParameter("parameter1"); // при попытки дописать два других вх. параметра - вылетает!!!
     par1.Value = СтрИД;
     Команда.Parameters.Append(par1); // - вылетает!!!
     // .......


Где косяки - описано в комментах кода. Что я делаю не так? И есть ли в 1С тип "параметр" или нечто подобное (входящий/исходящий параметр)?
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36292994
слоненок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1C ник, если не секрет, какова цель скрещивания ужа с ежом?
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36292997
Dolter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поробуй так:
Код: plaintext
Команда.Properties("SPPrmsLOB") = Истина;
и не параметры создавать, а значения в строку комманды вставлять:
Код: plaintext
Команда.CommandText = "{CALL LOOK_NEW.UPP_REQUEST_ATTACH('" + СтрИД + "', " + ... + ", " + ... + ")}";
вдруг да поможет :-)
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36293106
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не использовать параметры - это дурной тон.
Лучше использовать следующий вариант:
Команда.CommandType = 4; //adCmdStoredProc
Команда.CommandText = "LOOK_NEW.UPP_REQUEST_ATTACH";

ado_p1 = Команда.CreateParameter("var",200,1,50);
Команда.Parameters.Append(ado_p1);
ado_p1.value = "12345";

или

obj_ADOComm.Parameters.Append(obj_ADOComm.CreateParameter("var", 200, 1, 50, "12345"));

Соответственно, 200 - это тип параметра, 1 - это входной или выходной параметр, 50 длина.

"LOOK_NEW.UPP_REQUEST_ATTACH" - это функция, возвращающая курсор?
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36293925
1C ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2semyons:
Спасибо, буду пробовать так.
semyons"LOOK_NEW.UPP_REQUEST_ATTACH" - это функция, возвращающая курсор?
Приаттачивание файла (третий параметр тут - blob).

Dolter поробуй так:

Команда.Properties("SPPrmsLOB") = Истина;

и не параметры создавать, а значения в строку комманды вставлять
Пробовал - не помогает. В строку - не вариант, файл двоичных данных в строке не передашь.

слоненок1C ник, если не секрет, какова цель скрещивания ужа с ежом?
Прихоть заказчика. Чтобы помимо обычной выгрузки данных из 1С в Ораклю (в таблицы). Приаттачивать макеты документа, чтобы пользователи в оракле по кнопке видели привычный макет (суть печатную форму) 1с-овского документа. (ИМХО, извращение, но что поделать)
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36293939
1C ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semyonsobj_ADOComm.Parameters.Append(obj_ADOComm.CreateParameter("var", 200, 1, 50, "12345"));

Соответственно, 200 - это тип параметра, 1 - это входной или выходной параметр, 50 длина.

А вслучае blob-а, что в параметрах метода CreateParameter() писать? CreateParameter("blob", 'filename', 1, fileData) ?? (filename - имя файла, filedata - собственно сам файл двоичных данных)
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36294124
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в CreateParameter() первый параметр - имя параметра, второй - тип, третий - (входной/выходной), четвертый длина поля, пятый - значение.
Значение, которое нужно передавать для типа параметра blob я не нашел.
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36294982
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стрим.Type = Тип("ДвоичныеДанные");
Бред какой-то. Откуда ADODB знает про типы 1цэ?
Надо так:
Код: plaintext
Стрим.Type =  1 ;// т.е. adTypeBinary

Команда.Properties("SPPrmsLOB") = Истина;
С точки зрения 1цэ это неправильный синтаксис, надо так:
Код: plaintext
Команда.Properties("SPPrmsLOB").Value = Истина; // после выполнения команды нужно установить в Ложь

BLOB параметр передаётся так (будет работать только с OraOLEDB провайдером!):
Код: plaintext
1.
2.
parBlob = Команда.CreateParameter("parBlob",  205 ,  1 , Стрим.Size);
cmdSQL.Parameters.Append(parBlob);
parBlob.Value = Стрим.Read();
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36297648
1С ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
//{ Загрузка двоичных данных...  					
					Стрим = Новый COMОбъект("ADODB.Stream");  
					Стрим.Type =  1 ;    
					Стрим.Open();
					Стрим.LoadFromFile(ФайлШаблон);
					Стрим.Position =  0 ;  
					//cnnOracle.Open "DBConnString" 
					Команда = Новый COMОбъект("ADODB.Command");
					Команда.ActiveConnection = Соединение;
					
					//Команда.Properties("SPPrmsLOB").Value = Истина; //для передачи двоичных данных в параметр !!! косячит			
					Команда.CommandText = "{CALL LOOK_NEW.UPP_REQUEST_ATTACH(?, ?, ?)}";
					//Команда.CommandType = Тип("Текст");
					
					// 1  - Ид заявки
					par1 = Команда.CreateParameter("par1", 139  , 1 , 50 );
					Команда.Parameters.Append(par1);
					par1.Value = СтрИД;
					

					
					// 2  - название файла
					par2 = Команда.CreateParameter("par2",  200 , 1 , 50 );
					Команда.Parameters.Append(par2);
					par2.Value = "OtchetTO.xls";
					
					// 3  - сам файл   					
					parBlob = Команда.CreateParameter("parBlob",  205 ,  1 , Стрим.Size);
					Команда.Parameters.Append(parBlob);
					parBlob.Value = Стрим.Read();
					
					Команда.Execute(); ///вылетает!!!!
					
					//Команда.Properties("SPPrmsLOB").Value = False;

Команда.Properties("SPPrmsLOB") - не находит по "SPPrmsLOB", закомментил, стало сыпаться на execute. Текст ошибки следующий:
Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36298341
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПроизошла исключительная ситуация ( Microsoft OLE DB Provider for ODBC Drivers )
Уважаемый, я ведь не зря написал, что "будет работать только с OraOLEDB провайдером"...
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36302438
1С ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Соединение = Новый COMОбъект("ADODB.Connection");
    СтруктураДляОтбора = Новый Структура;
    СтруктураДляОтбора.Вставить("База","traf");
    ДСН = "***";
	УИД = "******";
	ПВД = "*****";
    Соединение.Provider = "MSDAORA.1";
    Соединение.ConnectionString = "DSN=" + ДСН + ";UID=" + УИД + ";PWD=" + ПВД;   
    Соединение.ConnectionTimeout =  15 ;
    Соединение. CursorLocation=  3 ;
    Соединение.Open();

При провайдере MSDASQL коннектит нормально. При попытке установить провайдер MSDAORA (как показано в листинге) вылетает в следующую ошибку:

Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): Произошла ошибка Oracle, для которой невозможно загрузить сообщение из Oracle.

С чем это может быть связано? Ораклисты клянуться, что все, что нужно чтобы жить дружно установлено и проблем никаких быть не должно....
...
Рейтинг: 0 / 0
Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
    #36302697
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Ошибка при перегрузке данных (1С 8.1 -/ ADO/ - Oracle)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]