powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
14 сообщений из 14, страница 1 из 1
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34902204
Tronen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте все!

У меня такая проблема...

Необходимо делать выборку данных (а также пополнение данных) из БД PostGre посредством 1С. БД используется другим приложением.

Делаем подключение:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Попытка
		
	СтрокаПодключения="Provider=PostgreSQL;Password="+Пароль+";User ID="+Юзер+";Data Source="+Источник+";Location="+Локализация+";Extended Properties="+ДопСвойства;
	Акцесс.Open(СтрокаПодключения);
		
	Сообщить("Подключение выполнено");
Исключение
		
	сообщить(СтрокаПодключения);
	Сообщить("Все плохо:"+ОписаниеОшибки());
	Возврат;
		
КонецПопытки;


Подключение проходит нормально.

Дальше я пытаюсь через рекордсет добавлять записи в те или иные таблицы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
	Команда = Новый COMОбъект("ADODB.Command");
	Команда.ActiveConnection = Акцесс;
	Команда.CommandType =  1 ;
	
	Команда.CommandText = "INSERT INTO OBJ_DEPARTMENT(id, name, parent_id) VALUES('1', 'Наименование отдела', '1')";
		
	RecordSet = New COMОбъект("ADODB.RecordSet");
	RecordSet = Команда.Execute();

Вот на этом месте ПГ и начинает материться:

ERROR: relation "obj_department" does not exist

Имя таблицы записано верно. Пробовал на других таблицах играться - та же история.

Ребят, помогите пожалуйста... А то работу надо доделать.

PS. Раньше этот код работал с БД Access.. Все было нормально... Изменил только строку подключения... Может ПГ особого подхода требует?
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34902382
Про 1С ничего не знаю, но как предположение -
таблица obj_department точно находится в схеме 'public'?
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34903151
Tronen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Золотая рыбкаПро 1С ничего не знаю, но как предположение -
таблица obj_department точно находится в схеме 'public'?

1С тут не причем. Хоть 1С, хоть С1, речь идет об ADODB.... Т.е. от подключения с других языков программирования отличается лишь немного синтаксисом...

По поводу public:

Я в PG, также как и вы в 1С... Т.е. только общие понятия. Строку подключения к БД я нашел в утилите, которая прилагается к приложению, использующему ПГ. Однако, я открыл pgAdmin и могу констатировать следующее:

Путь к таблице obj_department = PostgreSQL8 (localhost:5432) -> Databases -> securos -> Schemas -> public ->Tables -> obj_department.

PS Строка подключения однозначно выдает подключение к БД... Иначе 1С дала бы ошибку.
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34903363
ЯЕХХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TronenPS Строка подключения однозначно выдает подключение к БД... Иначе 1С дала бы ошибку.
Может элементарно к другой базе подключились? Что выдаст select current_database() ?
И select current_setting('search_path') проверить стоит
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34903449
Tronen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЯЕХХ TronenPS Строка подключения однозначно выдает подключение к БД... Иначе 1С дала бы ошибку.
Может элементарно к другой базе подключились? Что выдаст select current_database() ?
И select current_setting('search_path') проверить стоит

Строка подключения с учетом значений переменных в итоге выглядит так:


Код: plaintext
1.
Provider=PostgreSQL;Password=pass;User ID=postgres;Data Source= 127 . 0 . 0 . 1 ;Location=securos;Extended Properties=

По поводу select current_database() - я не такой продвинутый по SQL и честно говоря не знаю как вывести результат ТАКОЙ выборки... Я могу только тупо значения полей из выбоки таблицы выделить и использовать нужным образом. Если подскажите - буду благодарен.
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34903454
Tronen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем-то разобрался с current_database()... Просто вывел значение поля с индексом "0"...

Ответ - securos, т.е. все правильно... А почему OBJ_DEPARTMENT не наблюдается - загадка.
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34903463
Tronen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал также
Код: plaintext
1.
Команда.CommandText = "SELECT * FROM PUBLIC.OBJ_DEPARTMENT"

Говорит does not exist :(
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34903473
Tronen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начал уже в PgAdmin запросы чертить...

Сначала вывел SELECT current_database(). Результат: securos

Тут же пишу SELECT * FROM OBJ_DEPARTMENT. Результат:ERROR: relation "obj_department" does not exist. SQL state: 42P01

Ничего не понимаю.
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34903490
Tronen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, кто пытался мне помочь.

Причина же моих бед заключалась в банальном отсутствии КАВЫЧЕК, в которые заключается имя таблицы... Т.е. текст запроса должен был выглядить примерно так:

SELECT * FROM "OBJ_DEPARTMENT"

Вот и все... "OBJ_DEPARTMENT" - находится, а OBJ_DEPARTMENT does not exist
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34905752
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
однако это странно. я из вба пользовал пгскль через adodb - все нормально работало - и никаких дурацких кавычек не требовалось. они требуются в случае если имя объекта является например зарезервированным словом. вот например я создал схему admin - и теперь парюсь с кавычками :). тут-же не тот случай.
я вот не пойму по строке подключения - вроде как через pgoledb подключаетесь? лучше таки пользовать odbc-драйвер. оледбшный не обновлялся вроде давненько и вообще слабенький. я вроде тоже с ним начинал - и столкнулся с ккими-то странностями - не помню подробностей уже. вобщем лучше одбс-драйвер. он обновляется часто и видно что его развивают вообще в принципе.
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34905760
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aovоднако это странно. я из вба пользовал пгскль через adodb - все нормально работало - и никаких дурацких кавычек не требовалось. они требуются в случае если имя объекта является например зарезервированным словом. вот например я создал схему admin - и теперь парюсь с кавычками :). тут-же не тот случай.
я вот не пойму по строке подключения - вроде как через pgoledb подключаетесь? лучше таки пользовать odbc-драйвер. оледбшный не обновлялся вроде давненько и вообще слабенький. я вроде тоже с ним начинал - и столкнулся с ккими-то странностями - не помню подробностей уже. вобщем лучше одбс-драйвер. он обновляется часто и видно что его развивают вообще в принципе.
Читаем ФАК, по поводу кавычек.

ЗЫ ODBC действительно гораздо живее, и более продакшен.
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34907036
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не нужно мне читать фак - у меня всё без кавычек работает. третий проект на постгресе. один из них на вб6 через адодб+оледб-провайдер и два на шарпе через npgsql. и одна надстройка для экселя для вгрузки данных из екселя в постгрес - на адодб+одбц-провайдер. не знаю как там в теории - но реально на практике кавычки нужны токо когда в качестве названий объектов бд пользовательских используются зарезервированные слова. как например было у меня со схемой adimn. причём! - в кавычки я токо её заключаю - т.е. например обращение к её таблице вот так выглядит: "admin".users. сами фак читайте :)
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34907129
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aov сами фак читайте :)
Чукча не читатель, чукча - писатель (с) Анекдот

Я к тому, что ковычки нужны тогда когда таблица была создана с буквами в верхнем регистре. Скорее всего Вы правы, и для зарезервированных имен.

ЗЫ А количество проектов.. оно это... не всегда показательно. Как говориццо век живи - век учись(с) русское народное поговорко.
...
Рейтинг: 0 / 0
ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
    #34907408
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron
Чукча не читатель, чукча - писатель (с) Анекдот

ну точно про меня :) - всё кроме чукчи сходится :)
а про регистр - да, точно. у меня такой просто проблемы нет. я про это дело сразу дочитался - и понял сразу что с верхним регистром нам не по пути :) - токо нижний регистр и токо подчёрк без пробелов. настолько к этому привык, что не только в постгресе - а и вообще везде теперь так писаю. ну и это - не только в постгресе так полезно делать - везде так и надо. проверено электроникой :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ADODB.CONNECTION к PostGre (с 1С)... Не может найти таблицу в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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