Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Импорт из 1C..
 
 автор: П.Полиграфович   (02.03.2010 в 16:29)   личное сообщение
 
 

Кто сталкивался с такой задачей? Смотрел ветки здесь про Шлюз 1С:Предприятие - MS Access, но как понял, программа не работает с версией 7.7.
Может есть уже класс для таких задач, процедуры готовые?
Мне необходимо вытащить из DBF-а номера договоров + списки сотрудников и контрагентов, конфигурация "Бухгалтерия".
С базой 1С не работал, (будь она, хотя бы на SQL сервере. вообще сложно ли переместить уже работающую конфигурацию на MS SQL?)
В общем то погуглив нашёл ресурсы, где описана работа из 1С с MSA через ADO, но не наоборот ((
Подскажите чего-нибудь..

  Ответить  
 
 автор: osmor   (02.03.2010 в 17:11)   личное сообщение
 
 

Все ниже сказанное относится к 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С
что еще?

  Ответить  
 
 автор: П.Полиграфович   (03.03.2010 в 16:21)   личное сообщение
 
 

Олег, я хочу именно читать данные из 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...
Интуитивно ощущаю, что есть какое-то достаточно несложное решение задачи.
Истина где-то рядом ))
Может имеются фрагменты кода, хочу практические примеры посмотреть.. не могу без примеров ))

  Ответить  
 
 автор: Анатолий (Киев)   (02.03.2010 в 19:15)   личное сообщение
 
 

Шлюз нормально работает и с V77, только надо в процедуре "BuildV7QueryStr" модуля "Link Data" заремить строку: TableDescrName = OEM2ANSI(TableDescrName)

Кроме того, в таблицах 1с77 кодировка ANSI и вам надо будет заточить драйвер dBase под эту кодировку (а это не всегда - просто) или использовать драйвер Visual FoxPro, что я и делаю, т.к. DBF в 1с - это семейство FoxPro. Только линковать надо не через TransferDatabase (замахаетесь отвечать на вопросы о ключевом поле), а через DAO или ADOX.

Для вашей задачи нужны всего 3 таблицы - справочника. Их можно подключить и вручную, но прийдется порыться в файле 1cv7.dd в поисках дебильных названий файлов и назначения полей с не менее дебильными именами.

Шлюз тем хорош (спасибо разработчику), что дерибанит этот файл и создает кучу запросов с понятными названиями самих запросов и полей в них.

Удачи.

  Ответить  
 
 автор: П.Полиграфович   (03.03.2010 в 16:42)   личное сообщение
 
 

Анатолий, а есть у вас файлик этот "шлюз 1С-access"? Можно его на почту мне?
Как использовать Visual FoxPro драйвер поставщика в строке подключения?
Как прилинковать через ADOX?

  Ответить  
 
 автор: osmor   (03.03.2010 в 17:07)   личное сообщение
 
 

"как линковатьчерез ADOX?"
http://hiprog.com/index.php?option=com_content&task=view&id=251661555

  Ответить  
 
 автор: П.Полиграфович   (05.03.2010 в 14:12)   личное сообщение
 
 

Да тут всё понятно, статью эту уже читал давненько.. Вопрос в том, как вот здесь
    .Properties("Jet OLEDB:Link Datasource").Value = strFileName
прописать Visual FoxPro, о котором говорил Анатолий(Киев) и вот здесь указать имя линкующейся таблицы
    .Properties("Jet OLEDB:Remote Table Name").Value = strTblName
???
Как узнать, что мне нужна таблица напр. SF4563 без Шлюза? И потом как запрос составить к таблице если в ней поля содержат разнотипые данные?? (если правильно понял )

  Ответить  
 
 автор: Анатолий (Киев)   (03.03.2010 в 18:52)   личное сообщение
 
 

В 1С, в меню "Сервис"-"Дополнительные возможности" есть "Универсальный отчет "Печать содержимого справочников". Выбираете справочник-открываете отчет-сохраняете в формате Excel (меню Файл-Сохранить как...). А с файлом делайте, что хотите. Для вашей задачи этого будет достаточно.

  Ответить  
 
 автор: П.Полиграфович   (05.03.2010 в 14:16)   личное сообщение
 
 

К примеру я вытащу в xls всю справочную информацию, что требуется, дальше всё понятно.. Но опять же вариант достучаться к данным через MSA отваливается! Хочу все поместить в процедуру - пусть себе работает - тащит данные с DBF-а.+ файлик не покажите, где можно скачать со шлюзом? (может оттуда возьму что-то как описывали)

  Ответить  
 
 автор: час   (05.03.2010 в 14:52)   личное сообщение
 
 

Посмотри вот это
http://slil.ru/28747506

  Ответить  
 
 автор: час   (05.03.2010 в 14:56)   личное сообщение
 
 

И вот это посмотри
http://slil.ru/28747521

  Ответить  
 
 автор: час   (05.03.2010 в 14:57)   личное сообщение
8 Кб.
 
 

И вот это

  Ответить  
 
 автор: час   (05.03.2010 в 15:00)   личное сообщение
50 Кб.
 
 

и вот это почитай

  Ответить  
 
 автор: час   (05.03.2010 в 15:08)   личное сообщение
 
 

После мытарства по хранилищам 1С(XXX.dbf)
Понимаешь - проще в 1С сделать кнопку - выгрузка данных и создать программно - языком 1С создать базу с таблицами XXX.mdb
И уже эти таблицы линьковать к своей аналитической программе.

  Ответить  
 
 автор: час   (05.03.2010 в 15:14)   личное сообщение
94 Кб.
 
 

а ваще то

  Ответить  
 
 автор: П.Полиграфович   (09.03.2010 в 17:36)   личное сообщение
 
 

4ЧАС: Почитать можно и погуглив, но всё это не использует MSA как клиента автоматизации для 1С!! Мне же нужно всё делать из Access
Как узнать, что мне нужна таблица напр. SF4563 без Шлюза? И потом как запрос составить к таблице если в ней поля содержат разнотипые данные??

Вопрос остался открытым...

  Ответить  
 
 автор: osmor   (09.03.2010 в 18:04)   личное сообщение
 
 

есть файл 1cv7.dd в нем все это описано
по второй части вопроса делал 2-мя способами
1. функция возвращающая значение из нужной таблицы по переданным параметрам и ее вызываю в запросе
2. несколько запросов (в каждом только однотипные данные) потом все объединяется Union

  Ответить  
 
 автор: П.Полиграфович   (09.03.2010 в 20:26)   личное сообщение
 
 

А чем читается файл 1cv7.dd? Как его прошерстить?
И как вот здесь
 .Properties("Jet OLEDB:Link Datasource").Value = strFileName 
прописать фокспрошный драйвер? Может есть пример кода??

  Ответить  
 
 автор: osmor   (09.03.2010 в 21:47)   личное сообщение
 
 

1cv7.dd - это простой текстовый файл
про фокспрошный драйвер "в лоб" не в курсе, а копаться нет времени. Анатолий подтянется может он скажет.

  Ответить  
 
 автор: час   (09.03.2010 в 18:18)   личное сообщение
 
 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList