Версия для печати темы (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