Версия для печати темы (https://pro1c.org.ua/index.php?s=f0660cc8977625722aed6d9e7f9d5600&showtopic=18291)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Получить доступ к файлу *.mbd в клиент серверном варианте

Автор: kosalex 11.06.14, 8:21

Доброе утро!

Есть сервер 1С и есть клиентская машина на которой стоит программа автовесовой. Программа пишет в файл базы данных расположенный на клиентской машине. Нужно чтобы по регламентному заданию читался этот файл и записывалось в 1С. Регламентное задание, процедуры и функции есть!

Вопрос, как серверу получить этот файл, расположенный на локальном компьюторе? Вот так получиться? Будут ли тормоза на клиентской машине?

ТФайл = "\\VESA\С:\data\bd"+СтрокаГод+".mdb";


Даже вопрос немного другой, как подключиться к базе на локальной машине с сервера?

ТФайл = "\\VESA\С:\data\bd"+СтрокаГод+".mdb";
MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ТФайл+";Uid=Admin;Pwd="+Пароль);



Выдает ошибку, не нравиться путь к фалу либо ещё что то,что?))

Автор: Petre 11.06.14, 8:31

Вопрос риторический. Если диски быстрые, сеть широкая, файл небольшой - тормозить не должно.

Автор: kosalex 11.06.14, 8:34

Цитата(Petre @ 11.06.14, 9:31) *
Вопрос риторический. Если диски быстрые, сеть широкая, файл небольшой - тормозить не должно.



Файл БД лежит на локальной машине, как его получить серверу для регламентного задания?

Автор: Petre 11.06.14, 8:35

Цитата(kosalex @ 11.06.14, 9:21) *
Выдает ошибку, не нравиться путь к фалу либо ещё что то,что?))

Насколько я понимаю, все права настроены, и доступ к файлу с сервера был успешно опробован интерактивно?

Автор: kosalex 11.06.14, 8:52

Цитата(Petre @ 11.06.14, 9:35) *
Насколько я понимаю, все права настроены, и доступ к файлу с сервера был успешно опробован интерактивно?



Не совсем) Чтобы получить доступ с сервера к фалу, нужно зайти по сети на локальную машину, а для этого нужно ввести "Логин" и "Пароль". Подскажите как в 1С это реализовать?

Автор: sava1 11.06.14, 9:00

в Винде - администрирование-Источники данных ОДБЦ - выбрать аксесовский драйвер, настроить соединение, проверить. Потом можно параметры лепить в строку соединения или использовать созданный источник ОДБЦ

Автор: kosalex 11.06.14, 9:20

Цитата(sava1 @ 11.06.14, 10:00) *
в Винде - администрирование-Источники данных ОДБЦ - выбрать аксесовский драйвер, настроить соединение, проверить. Потом можно параметры лепить в строку соединения или использовать созданный источник ОДБЦ


Эти действия нужно сделать на сервере?


Если вот так написать, то создается ж новое соединение, какие параметры ещё нужно передать?
MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ТФайл+";Uid=Admin;Pwd="+Пароль);



А как использовать созданный источник соединения в 1С?

Автор: Petre 11.06.14, 9:38

Цитата(kosalex @ 11.06.14, 9:52) *
Не совсем) Чтобы получить доступ с сервера к фалу, нужно зайти по сети на локальную машину, а для этого нужно ввести "Логин" и "Пароль". Подскажите как в 1С это реализовать?

"net use" ?

Автор: kosalex 11.06.14, 9:43

MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ТФайл+";Uid=Admin;Pwd="+Пароль);



в этом коде, параметры Uid=Admin и Pwd="+Пароль это пользователь и пароль для подключения на клиентскую машину,верно?

Автор: sava1 11.06.14, 9:46

Цитата(kosalex @ 11.06.14, 10:20) http://pro1c.org.ua/index.php?act=findpost&pid=87619
А как использовать созданный источник соединения в 1С?

Тут - тонкость. В конфигураторе создаем внешний источник и далее
ВЫБРАТЬ 
| db.*
|ИЗ
|ВнешнийИсточникДанных.ИмяВИД.Таблица.db КАК db");
Таблица = Запрос.Выполнить().Выгрузить();

Автор: Petre 11.06.14, 9:53

Цитата(kosalex @ 11.06.14, 10:43) *
в этом коде, параметры Uid=Admin и Pwd="+Пароль это пользователь и пароль для подключения на клиентскую машину,верно?

Нет. Это авторизация к базе данных.

Автор: kosalex 11.06.14, 9:55

sava1, вот так делаю на сервере с которого идет подключение на клиентскую машину

MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ТФайл+";Uid=Admin;Pwd="+Пароль);



Вот эти параметры "Uid=Admin;Pwd="+Пароль" это и есть пользователь пароль для входа на клиентскую машину?




Цитата(Petre @ 11.06.14, 10:53) *
Нет. Это авторизация к базе данных.



к базе данных Ms Acces? это же просто файл бд, его можно открыть блокнотом) или я ошибаюсь?

Автор: sava1 11.06.14, 10:01

На сервере создаем файловый ДСН, вбиваем все параметры для подключения к файлу БД (файл должен быть доступен по сети для конкретного пользователя )
жмем проверка (? точно не помню) - если все ок - лепим параметры в СтрокуСоединения, нет - ищем причину.
Для использования созданного источника в Строке Соединения пишем
Connection.ConnectionString = "Driver={.....};data source= Имя ОДБЦ соединения;

Автор: kosalex 11.06.14, 10:08

sava1,

Цитата(sava1 @ 11.06.14, 11:01) *
(файл должен быть доступен по сети для конкретного пользователя )



т.е. на клиентской машине должна быть разшарина папка в которой лежит файл?

Автор: sava1 11.06.14, 10:13

Не обязательно - может быть админская шара, но и подключаться надо от админа

Автор: kosalex 11.06.14, 12:38

sava1, можно ещё раз!


Пишу так:

MyCon = Новый COMОбъект ("ADODB.Connection");
    MyCon.ConnectionString = "Uid=Admin;Pwd=" + Пароль;
    MyCon.Open ("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ТФайл+";Uid=Admin;Pwd="+Пароль);



Указать с каким пользователем и паролем заходить на клиентскую машину это?
MyCon.ConnectionString = "Uid=Admin;Pwd=" + Пароль



sava1, Дело в том что на сервере нету драйвера для ODBC...

Возможно ли указать с каким логином и паролем коннектиться к клиентской машине в коде?

Автор: sava1 11.06.14, 13:47

Цитата(kosalex @ 11.06.14, 13:38) http://pro1c.org.ua/index.php?act=findpost&pid=87637
Дело в том что на сервере нету драйвера для ODBC...

А куда делись? На 2008 - Пуск/Администрирование/Источники данных

Необходимо открыть вот этот файл "C:\Windows\syswow64\odbcad32.exe". Там без особых проблем можно установить MS Access ODBC driver.

Автор: kosalex 11.06.14, 15:10

Сделал так, файлы с клиентского компа копируются на сервер в папку по "Назначение Задач" - Windows, а регламентное задание 1C уже читает эти файлы на сервере и делает запись в базу 1С.

Цитата(sava1 @ 11.06.14, 14:47) *
Напрямую нет (хотя админы может и знают - типа "нет юз"). Просто расшарьте папку. Драйвера по-идее нужно доставить (установка дополнительных компонент или что-то такое в установке/удалении файлов)


А куда делись? На 2008 - Пуск/Администрирование/Источники данных

Необходимо открыть вот этот файл "C:\Windows\syswow64\odbcad32.exe". Там без особых проблем можно установить MS Access ODBC driver.




не знаю почему не получается вот так, клиентская машина в домене, а сервер нет. может быть из-за этого...

sava1, последний вопрос)))

Подскажите плиз, если я вот так вот напишу
ТФайл = "E:\vesa\data\bd"+СтрокаГод+".mdb";


то на сервере при регламентном задании файл найдёт? Т.к на тестовом компе диска "Е" нет. На сервере где стоит 1С диск "Е" есть и путь совпадает.


Автор: sava1 11.06.14, 15:26

по-идее да, но практика - лучшее подтверждение.

Автор: kosalex 11.06.14, 15:27

Не работает на сервере 2008 x64. Вылетает на строке

MyCon.Open ("Driver={Microsoft Access Driver (*.mdb)}Dbq="+ТФайл+";Uid=Admin;Pwd="+Пароль);


что делать?


Автор: sava1 11.06.14, 15:55

Для начала СокрЛП() для ТФайл и Пароль.
Во-вторых - подключиться из файловогоДСН - неужели трудно попробовать?

Автор: kosalex 12.06.14, 13:00

Добрый день! Сделал так, на серверной машине стоит задача копировать с клиентской машины файл базы данных Access. Далее по регламентному заданию 1С выполняется чтение и запись данных в 1С.

Путь к файлу БД Access на сервере к примеру такой "E:\vesi\data\vd14.mdb"


У меня возник вопрос, когда будет выполнятся регламентное задание, контекст дисков доступен серверный? Другими словами увидит ли драйвер этот путь в строке подключения:

MyCon.Open ("Driver={Microsoft Access Driver (*.mdb)};Dbq="E:\vesi\data\vd14.mdb";Uid=Admin;Pwd="+Пароль);


К примеру когда подключаюсь к БД 1С через терминал (запускаю на клиентской машине 1С) и пробую это регламентное задание протестировать как фоновое, то контекст дисков доступен клиентской машины и файл по такому пути не найден.

Цитата(sava1 @ 11.06.14, 16:55) *
Для начала СокрЛП() для ТФайл и Пароль.
Во-вторых - подключиться из файловогоДСН - неужели трудно попробовать?


В интернете есть информация, что в x64 должен быть драйвер ms access для x64. Возможно из-за этого конфликт на сервере, попробую поставить x64 драйвер.

Автор: DartRomanius 12.06.14, 13:56

Немного может не в тему (не с акцессом было).
Для работы с MySQL через ODBC на 64-ке из под 1С 7.7 (которая была и есть 32-битная).
Потребовалось устанавливать ручками 32-битный ODBC драйвер.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua