|
|
|
| Кто сталкивался с такой задачей? Смотрел ветки здесь про Шлюз 1С:Предприятие - MS Access, но как понял, программа не работает с версией 7.7.
Может есть уже класс для таких задач, процедуры готовые?
Мне необходимо вытащить из DBF-а номера договоров + списки сотрудников и контрагентов, конфигурация "Бухгалтерия".
С базой 1С не работал, (будь она, хотя бы на SQL сервере. вообще сложно ли переместить уже работающую конфигурацию на MS SQL?)
В общем то погуглив нашёл ресурсы, где описана работа из 1С с MSA через ADO, но не наоборот ((
Подскажите чего-нибудь.. | |
|
| |
|
|
|
| Все ниже сказанное относится к 7.7
Про перевод 1С на sql сервер не скажу, но кажется не очень сложно, но это вам ничего не даст, поскольку структура останется такой же только вместо кучи DBF получите кучу таблиц на sql сервере.
Обычно расматривают 3 способа обмена данными
1. линковка DBF таблиц (либо непосредственно связанные таблицы, либо доступ к dbf через OLEDB или ODBC)
2. Использование 1С как сервер автоматизации (через ole)
3. использование выгрузку/загрузку через помежуточные файлы (обычно TXT или XML), насколько мне известно 1С имеет инструменты работы с xml, но всегда можно написать свои.
Если вы хотите ТОЛЬКО ЧИТАТЬ данные, то есть смысл использовать связанные таблицы, но работать будет только с конкретной конфигурацией, не факт что в другой конфигурации DBF файлы будут името такие же имена и содержать те же (по сути) данные.
Кроме того 1С не реляционная БД, т.е. в одном поле в разных записях могут быть данные из разных таблиц в зависимости от значения полей т.е. иногда простые запросы не работают.
используя OLE больше гибкости, но надо разбираться в языке 1С и иметь на машине установленную 1С
что еще? | |
|
| |
|
|
|
| Олег, я хочу именно читать данные из DBF (по крайней мере пока).
Сейчас даже представления не имею о структуре DBF, только то, что
прочитал в инструкции по шлюзу этому + данные с вики. Не представляю
даже откуда именно вытаскивать контрагентов, т.е. справочник это или
там документ? Думал повесить на клик запрос данных. Конфигурация
будет "Бухгалтерия", пока её переделовать не собираются. Переписав
конфигурацию, я понимаю, изменятся названия таблиц-полей.
Вот здесь вычитал http://hiprog.com/forum/read.php?id_forum=1&id_theme=3737&page=5
что можно обойтись только ADO. Хочу узнать как?? Т.е. как в VBE прописать подключение
к DBF и как запрос написать к таблицам.
В общем как подключиться к поставщику данных и запросить нужную инфу из DBF?
В XML не бум-бум, в текст выгружать и затем "парсить" можно, но не проще ли будут другие описаные методы + повторюсь хотел бы всё делать из MSA...
По серверу автоматизации - вычитал на вики, что синтаксис в 1С наиболее сравним с VB, но опять же повторюсь хотел бы всё делать из Access...
Интуитивно ощущаю, что есть какое-то достаточно несложное решение задачи.
Истина где-то рядом ))
Может имеются фрагменты кода, хочу практические примеры посмотреть.. не могу без примеров )) | |
|
| |
|
|
|
| Шлюз нормально работает и с V77, только надо в процедуре "BuildV7QueryStr" модуля "Link Data" заремить строку: TableDescrName = OEM2ANSI(TableDescrName)
Кроме того, в таблицах 1с77 кодировка ANSI и вам надо будет заточить драйвер dBase под эту кодировку (а это не всегда - просто) или использовать драйвер Visual FoxPro, что я и делаю, т.к. DBF в 1с - это семейство FoxPro. Только линковать надо не через TransferDatabase (замахаетесь отвечать на вопросы о ключевом поле), а через DAO или ADOX.
Для вашей задачи нужны всего 3 таблицы - справочника. Их можно подключить и вручную, но прийдется порыться в файле 1cv7.dd в поисках дебильных названий файлов и назначения полей с не менее дебильными именами.
Шлюз тем хорош (спасибо разработчику), что дерибанит этот файл и создает кучу запросов с понятными названиями самих запросов и полей в них.
Удачи. | |
|
| |
|
|
|
| Анатолий, а есть у вас файлик этот "шлюз 1С-access"? Можно его на почту мне?
Как использовать Visual FoxPro драйвер поставщика в строке подключения?
Как прилинковать через ADOX? | |
|
| |
|
|
|
| "как линковатьчерез ADOX?"
http://hiprog.com/index.php?option=com_content&task=view&id=251661555 | |
|
| |
|
|
|
| Да тут всё понятно, статью эту уже читал давненько.. Вопрос в том, как вот здесь
.Properties("Jet OLEDB:Link Datasource").Value = strFileName
| прописать Visual FoxPro, о котором говорил Анатолий(Киев) и вот здесь указать имя линкующейся таблицы
.Properties("Jet OLEDB:Remote Table Name").Value = strTblName
| ???
Как узнать, что мне нужна таблица напр. SF4563 без Шлюза? И потом как запрос составить к таблице если в ней поля содержат разнотипые данные?? (если правильно понял ) | |
|
| |
|
|
|
| В 1С, в меню "Сервис"-"Дополнительные возможности" есть "Универсальный отчет "Печать содержимого справочников". Выбираете справочник-открываете отчет-сохраняете в формате Excel (меню Файл-Сохранить как...). А с файлом делайте, что хотите. Для вашей задачи этого будет достаточно. | |
|
| |
|
|
|
| К примеру я вытащу в xls всю справочную информацию, что требуется, дальше всё понятно.. Но опять же вариант достучаться к данным через MSA отваливается! Хочу все поместить в процедуру - пусть себе работает - тащит данные с DBF-а.+ файлик не покажите, где можно скачать со шлюзом? (может оттуда возьму что-то как описывали) | |
|
| |
|
|
|
| Посмотри вот это
http://slil.ru/28747506 | |
|
| |
|
|
|
| И вот это посмотри
http://slil.ru/28747521 | |
|
| |
|
8 Кб. |
|
| И вот это | |
|
| |
|
50 Кб. |
|
| и вот это почитай | |
|
| |
|
|
|
| После мытарства по хранилищам 1С(XXX.dbf)
Понимаешь - проще в 1С сделать кнопку - выгрузка данных и создать программно - языком 1С создать базу с таблицами XXX.mdb
И уже эти таблицы линьковать к своей аналитической программе. | |
|
| |
|
94 Кб. |
|
| а ваще то | |
|
| |
|
|
|
| 4ЧАС: Почитать можно и погуглив, но всё это не использует MSA как клиента автоматизации для 1С!! Мне же нужно всё делать из Access
Как узнать, что мне нужна таблица напр. SF4563 без Шлюза? И потом как запрос составить к таблице если в ней поля содержат разнотипые данные??
|
Вопрос остался открытым... | |
|
| |
|
|
|
| есть файл 1cv7.dd в нем все это описано
по второй части вопроса делал 2-мя способами
1. функция возвращающая значение из нужной таблицы по переданным параметрам и ее вызываю в запросе
2. несколько запросов (в каждом только однотипные данные) потом все объединяется Union | |
|
| |
|
|
|
| А чем читается файл 1cv7.dd? Как его прошерстить?
И как вот здесь
.Properties("Jet OLEDB:Link Datasource").Value = strFileName
| прописать фокспрошный драйвер? Может есть пример кода?? | |
|
| |
|
|
|
| 1cv7.dd - это простой текстовый файл
про фокспрошный драйвер "в лоб" не в курсе, а копаться нет времени. Анатолий подтянется может он скажет. | |
|
| |
|