powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Хранение файлов в PostgreSQL из 1с
13 сообщений из 13, страница 1 из 1
Хранение файлов в PostgreSQL из 1с
    #37914040
KV1s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: сделать файловое хранилище в базе PostgreSQL, клиент 1с v8

Мееться таблица
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE "FileTable"
(
  "FileID" character(36) NOT NULL,
  "Object" bytea,
)



Пытаюсь через ADODB.Command выполнить инсерт с параметрами, по аналогии с Как воспользоваться lo_import с клиента?


Код: 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.
    НаборЗаписей = Новый COMОбъект("ADODB.Recordset");
    КомандаSQL = Новый COMОбъект("ADODB.Command");
    КомандаSQL.ActiveConnection = СоединениеАДО;
	КомандаSQL.CommandText=	"INSERT INTO ""FileTable""(""FileID"", ""Object"") VALUES(?, ?)";	
    КомандаSQL.CommandType=1;//adCmdText
	ПараметрSQLFileID = КомандаSQL.CreateParameter("FileID", 200, 1, 36);//adVarChar, adParamInput
	ПараметрSQLFileID.Value = УникальныйИдентификаторФайла; 
	КомандаSQL.Parameters.Append(ПараметрSQLFileID);
   
   //создаем АДО поток для чтения файла
	Поток = Новый COMОбъект("ADODB.Stream");
	Поток.Type = 1;
	Поток.Open();
	Поток.LoadFromFile(ПолноеИмяФайла);
		
	ПараметрSQLObject = КомандаSQL.CreateParameter("Object", 205, 1, Поток.Size);//adLongVarBinary, adParamInput
	
Пока НЕ Поток.EOS Цикл
   
	ПараметрSQLObject.AppendChunk(Поток.Read(10240));
КонецЦикла; 	
	КомандаSQL.Parameters.Append(ПараметрSQLObject);

	НаборЗаписей=КомандаSQL.Execute();




В итоге отваливаеться на КомандаSQL.Execute()
Код: plaintext
1.
Произошла исключительная ситуация (Provider): Неизвестное имя типа.
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37914788
1счайник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KV1s,
это не вопрос по ПЖ, а вопрос по адо (+ 1с).
вот тут
Код: pascal
1.
КомандаSQL.ActiveConnection = СоединениеАДО;


не видно, как вы создали СоединениеАДО
а именно в нем вы определили провайдер



(ну и в 1С еще какая-то бага была, когла пошагово проходишь поднятие соединения в отладчике 1с, оно (будучи кинуто и просмотрено в табло 1С) инициализируется значениями по умолчанию (дефолтным провайдером), и поменять ему провайдер дальше уже не получается. поэтому кидать его (соединение) в табло и просматривать до инициализации провайдера какбэ не рекомендуется.ф
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37914925
KV1s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1счайник,

СоединениеАДО вызывается из другой функции, вот так.
Код: plaintext
1.
2.
3.
4.
5.
СоединениеАДО = Новый COMОбъект("ADODB.Connection");
СоединениеАДО.ConnectionString = "Provider=PostgreSQL OLE DB Provider;Data Source="+ИмяСервера+";
	 |location="+НазваниеБазыДанных+";User ID="+ИмяПользователя+";password="+ПарольПользователя+";";

СоединениеАДО.Open();


Я посчитал что строка соединения универсальная и публиковать ещё несколько функций здесь будет не к месту, дабы не запутывать и не отвлекать от основной проблемы.


По поводу баги отладчика, что-то такое замечал. Но описанная ошибка вываливается и без отладчика.
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37914952
1счайник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37915000
KV1s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1счайник,

хм... проверю через ODBC..
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37915008
KV1s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KV1s,

Строка подключения
Код: plaintext
1.
2.
СоединениеАДО.ConnectionString = "Driver={PostgreSQL Unicode};Server="+ИмяСервера+";
|Port=5432;Database="+НазваниеБазыДанных+";Uid=" +ИмяПользователя+";Pwd="+ПарольПользователя+";";	




теперь так ругаеться
Код: plaintext
1.
2.
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): ERROR: type "lo" does not exist;
Error while executing the query
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37915156
1счайник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KV1sПроизошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): ERROR: type "lo" does not exist;
Error while executing the query


дык у вас, батенька, тип "lo" в базе не установлен.
посмотрите в контрибах, оно там есть.

а если версия ПЖ продвинутая - то наверное и CREATE EXTENTION прокатит


ЗЫ судя по всему и провайдер менять не обязательно было - тот просто очень скрытный был, а этот открытым текстом шпарит.
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37915187
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
... bytea ..., а не lo ...
не те методы и не тот раздел форума.

Модератор: Тема перенесена из форума "PostgreSQL".
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37915485
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V&N... bytea ..., а не lo ...
не те методы и не тот раздел форума .

Модератор: Тема перенесена из форума "PostgreSQL".
раздел был именно тот -
человек спутал методы для lo с методами для bytea
т.е. он не понял, что это совершенно разные типы
(и даже хранятся по разному)
а это - именно по постгресу вопрос

только выглядел он сначала как вопрос по методу доступа (АДО).
но потом выяснилось, что это не так

господа же из ветки пж кака бычна через губу смотрят на прикладных кодеров
т.е. у них видимо в фаворе сферические базы в вакууме
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37915531
KV1s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно хранить двоичные данные в базе PostgreSQL.
lo это будет или bytea непренципиально.
Подскажите рабочий пример.
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37915645
KV1s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1счайникдык у вас, батенька, тип "lo" в базе не установлен.
посмотрите в контрибах, оно там есть.

Спасибо разобрался.
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37916436
KV1s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге.

Необходимо установить из contrib тип "lo"
с правами суперпользователя выполнить запрос из lo.sql
Код: plaintext
1.
2.
3.
C:\Program Files\PostgreSQL\8.4.3\share\contrib\lo.sql
или
/usr/share/postgresql/8.4.3/contrib/lo.sql



Таблица должна выглядеть так
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE "FileTable"
(
  "FileID" character(36) NOT NULL,
  "Object" lo
)



Установить драйвер ODBC для PostgreSQL http://ftp.postgresql.org/pub/odbc/versions/

Использовать строку подключения
Код: plaintext
1.
СоединениеАДО.ConnectionString = "Driver={PostgreSQL Unicode};Server="+ИмяСервера+";Port=5432;Database="+НазваниеБазыДанных+";Uid="+ИмяПользователя+";Pwd="+ПарольПользователя+";";



Всё заработало, всем спасибо.
...
Рейтинг: 0 / 0
Хранение файлов в PostgreSQL из 1с
    #37916676
Victor Nevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KV1s , там все намного проще.
начинать нужно было с отличия 205 от 128 .
если тип bytea, использовать в методе CreateParameter - 128
или если тип bytea и CreateParameter 205 - добавить в строку подключения ByteaAsLongVarBinary =1.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Хранение файлов в PostgreSQL из 1с
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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