|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Может кто нибудь подскажет, как решить проблему? 1) У меня есть программа в Акцессе по учету заказов- затрат по ним, учет трудоемкости, распределение накладных, расчет себестоимости. Теперь приняли решение переходить на 1С и программу надо там делать. в 1С создал справочники заказов, направлений, клиентов и документ Производственная ведомость. Надо как-то данные из мдб импортировать в 1С. Где- то на Мисте попадалось как это сделать через ОЛЕ, но сейчас найти не могу, а вопросы мои на Мисте что то перестали проходить. Может кто советом поможет? 2)Справочники в Аксе имеют ключ- счетчик. Могу я при импорте данных вставить его в поле Код справочника 1С? Счетчик ведь тоже уникальный. 3) Справочник Заказы в 1С содержит поле Клиент с типом данных Справочник.Клиент. В Аксе эти две таблицы связаны по полю CLI_ID, при импорте данных в справочник Заказы что вставлять в поле клиент? Может кто на алгоритм вкратце намекнет, а там думаю сам домучаю. Заранее всем большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 12:22 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
тащит из mdb в 1С 8.X справочник Корпораций(TCorp) MyCon = Новый COMОбъект ("ADODB.Connection"); MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\1c_common\Реальный_сектор\TEL_BASE2006.MDB"); MyRst = Новый COMОбъект ("ADODB.Recordset"); MyRst.Open ("select * from TCorp", MyCon, 3, 1); Пока НЕ MyRst.EOF Цикл ИмяКорпорации=MyRst.Fields("Corp_Name").Value; Сообщить(ИмяКорпорации); НоваяКорпорация=справочники.Корпорации.СоздатьЭлемент(); НоваяКорпорация.Наименование=ИмяКорпорации; НоваяКорпорация.Записать(); MyRst.MoveNext(); КонецЦикла; ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 13:17 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Shuhardтащит из mdb в 1С 8.X справочник Корпораций(TCorp) MyCon = Новый COMОбъект ("ADODB.Connection"); MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\1c_common\Реальный_сектор\TEL_BASE2006.MDB"); MyRst = Новый COMОбъект ("ADODB.Recordset"); MyRst.Open ("select * from TCorp", MyCon, 3, 1); Пока НЕ MyRst.EOF Цикл ИмяКорпорации=MyRst.Fields("Corp_Name").Value; Сообщить(ИмяКорпорации); НоваяКорпорация=справочники.Корпорации.СоздатьЭлемент(); НоваяКорпорация.Наименование=ИмяКорпорации; НоваяКорпорация.Записать(); MyRst.MoveNext(); КонецЦикла; Так, по первому вопросу ясность есть, только как-то надо через dao сослаться, если подскажите, буду очень признателен. Сейчас, конечно сам попробую написать, но все же. А по второму и третьему, если можно! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 13:36 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
RodionAT2)Справочники в Аксе имеют ключ- счетчик. Могу я при импорте данных вставить его в поле Код справочника 1С? Счетчик ведь тоже уникальный.думаю 1С сам создаст свой счётчик а по 3-му вопросу: придётся заполнить сначала Справочник.Клиент, а затем Справочник.Заказы ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 14:08 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
1 не вижу в данной ситуации потребности в DAO,ADO на стороне Access достаточен 2 ключ mdb в 1С нужен лищь для связки транспортируемых данных, загонять его в код справочника нет надобности,хотите сохранить - добавьте реквизит "старый код" 3 переносим справочник клиенты, сохраняем код в "старый код", при переносе документов по коду из Access ищем элемент в справочнике 1С по "старый код" ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 14:50 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
допустим СпрКлиентов уже заполнен ранее и создан ручками СпрЗаказов с полем Клиент тип которого Справочник.Клиентов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 15:02 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
минимальный комментарий: - заказы не справочник, а документ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 15:05 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Shuhard1 не вижу в данной ситуации потребности в DAO,ADO на стороне Access достаточен 2 ключ mdb в 1С нужен лищь для связки транспортируемых данных, загонять его в код справочника нет надобности,хотите сохранить - добавьте реквизит "старый код" 3 переносим справочник клиенты, сохраняем код в "старый код", при переносе документов по коду из Access ищем элемент в справочнике 1С по "старый код" Я вот сейчас пишу процедуру Выполнить для обработки. Как мне из 1С сослаться на \\server\public\DBFS\mybase2_97.mdb, а уже потом инструкциями sql создавать запросы для перекачки данных. Как цикл организовать в 1С для заполнения 1С-ного справочника я уже понял, вот как взять данные из мдб-файла,пока не врубился. Акцесс- 97-й. И еще- хорошо я создам в справочниках 1С поля старый код, заполню его, потом ведь надо будет искать в справочниках по старому коду, брать новый код и как-то вставлять в другой справочник в поле с типом Справочник.Клиенты. Посмотрел по справке 1С, там есть только поиск по коду или поиск по наименованию. По другим полям - перебор по циклу или выгружать в таблицу значений и там по колонке искать? Подскажите, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 16:36 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
RodionAT 1 Я вот сейчас пишу процедуру Выполнить для обработки. Как мне из 1С сослаться на \\server\public\DBFS\mybase2_97.mdb, а уже потом инструкциями sql создавать запросы для перекачки данных. Как цикл организовать в 1С для заполнения 1С-ного справочника я уже понял, вот как взять данные из мдб-файла,пока не врубился. Акцесс- 97-й. 2 И еще- хорошо я создам в справочниках 1С поля старый код, заполню его, потом ведь надо будет искать в справочниках по старому коду, брать новый код и как-то вставлять в другой справочник в поле с типом Справочник.Клиенты. Посмотрел по справке 1С, там есть только поиск по коду или поиск по наименованию. По другим полям - перебор по циклу или выгружать в таблицу значений и там по колонке искать? Подскажите, пожалуйста. 1 смотрим внимательно: MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\1c_common\Реальный_сектор\TEL_BASE2006.MDB"); MyRst.Open ("select * from TCorp", MyCon, 3, 1); 2 учимся жать Ctrl+F1 СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>) НайтиПоРеквизиту (FindByAttribute) Синтаксис: НайтиПоРеквизиту(<Имя реквизита>, <Значение реквизита>, <Родитель>, <Владелец>) Параметры: <Имя реквизита> (обязательный) Тип: Строка. Имя реквизита, как он задан в конфигураторе, по значению которого осуществляется поиск. Тип значения произвольный, кроме ХранилищеЗначения и строк произвольной длины. <Значение реквизита> (обязательный) Тип: Произвольный. Значение реквизита, по которому должен выполняться поиск. <Родитель> (необязательный) Тип: СправочникСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. <Владелец> (необязательный) Тип: СправочникСсылка. Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. Возвращаемое значение: Тип: СправочникСсылка. Ссылка на найденный элемент справочника. Если не существует ни одного элемента с требуемым значением реквизита, то будет возвращена пустая ссылка. Описание: Осуществляет поиск элемента по значению реквизита. Примечание: Если существует несколько элементов с указанным значением реквизита, то будет найдет только один из них. Для реквизитов типа Строка поиск осуществляется по точному соответствию. Пример: СтрокаНаименования = "Доллары США"; Валюты = Справочники.Валюты; НайденнаяСсылка = Валюты.НайтиПоРеквизиту("ПолноеНаименование", СтрокаНаименования); Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда Сообщить("Валюты """ + СтрокаНаименования + """ еще нет."); Иначе Сообщить("Нашли такую."); КонецЕсли; ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2007, 16:43 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Подскажите, что в процедуре неверно авторПроцедура Выполнить() MyCon = НовыйCOMОбъект ("ADODB.Connection"); MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" + ИсточИмпорта); MyRst = НовыйCOMОбъект ("ADODB.Recordset"); MyRst.Open ("select * from CLIENT", MyCon, 3, 1); СпрКлиенты=СоздатьОбъект("Справочник.Клиенты"); Пока MyRst.EOF=0 Цикл; НовыйКлиент=СпрКлиенты.Новый(); СпрКлиенты.Наименование=MyRst.CLI_NAME; СпрКлиенты.СтарКод=MyRst.CLI_ID; СпрКлиенты.ИНН=MyRst.INN; СпрКлиенты.Записать(); MyRst.MoveNext(); КонецЦикла; КонецПроцедуры[/quot] Ну и выдает в окне сообщений при запуске обработки: MyCon = НовыйCOMОбъект <<?>>("ADODB.Connection"); {Обработка.ИмпортЗаказов.Форма.Модуль(3)}: Функция не обнаружена (НовыйCOMОбъект) MyRst = НовыйCOMОбъект <<?>>("ADODB.Recordset"); {Обработка.ИмпортЗаказов.Форма.Модуль(5)}: Функция не обнаружена (НовыйCOMОбъект) Чего- то не так- сам ощущаю, а понять не могу. Подскажите, если можно! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 09:01 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
книжку по 1С почитать стоит непременно, ибо: MyCon = Новый COMОбъект ("ADODB.Connection"); Новый отделен от COMОбъект пробелом Пока НЕ MyRst.EOF Цикл не закрывается ; ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 09:18 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
в догон НоваяКорпорация=справочники.Корпорации.СоздатьЭлемент(); а не СпрКлиенты=СоздатьОбъект("Справочник.Клиенты"); НоваяКорпорация.Наименование==MyRst.Fields("Corp_Name").Value; а не СпрКлиенты.Наименование=MyRst.CLI_NAME 4 ошибки в 13 строках - не взлетит ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 09:23 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
RodionAT посмотри ещё здесь, пригодится ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 09:42 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Сделал пробел! И вот что написалось!!! MyCon = Новый <<?>>COMОбъект ("ADODB.Connection"); {Обработка.ИмпортЗаказов.Форма.Модуль(3)}: Переменная не определена (COMОбъект) MyRst = Новый <<?>>COMОбъект ("ADODB.Recordset"); {Обработка.ИмпортЗаказов.Форма.Модуль(5)}: Переменная не определена (COMОбъект) Такое ощущение, что у меня на компьютере чего то не установлено, а что - не пойму! Сейчас еще по последнему совету с ado попробую, но надежды как то мало. Хотя... АксХР на компьютере установлен. Фигня какая - то, честное слово! В Аксе все так славно работает! Еще раз прошу совета по вопросу, хотя чувствую, что уже всем надоел. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 14:38 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Во, через adoпопробовал, такаяже фигня выпадает Процедура Выполнить() ado.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ИсточИмпорта+";Uid=Admin;Pwd=;"); //MyCon = Новый COMОбъект ("ADODB.Connection"); //MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" + ИсточИмпорта); //MyRst = Новый COMОбъект ("ADODB.Recordset"); //MyRst.Open ("select * from CLIENT", MyCon, 3, 1); Запрос="SELECT * FROM CLIENT;"; ado.Execute(Запрос); СпрКлиенты=СоздатьОбъект("Справочник.Клиенты"); //Пока MyRst.EOF=0 Цикл; Пока ado.EOF=0 Цикл //Цикл по записям НовыйКлиент=СпрКлиенты.Новый(); СпрКлиенты.Наименование=MyRst.Fields("CLI_NAME"); СпрКлиенты.СтарКод=MyRst.Fields("CLI_ID"); СпрКлиенты.ИНН=MyRst.Fields("INN"); СпрКлиенты.Записать(); MyRst.MoveNext(); КонецЦикла; КонецПроцедуры ado<<?>>.Execute(Запрос); {Обработка.ИмпортЗаказов.Форма.Модуль(8)}: Переменная не определена (ado) Пока ado<<?>>.EOF=0 Цикл //Цикл по записям {Обработка.ИмпортЗаказов.Форма.Модуль(12)}: Переменная не определена (ado) СпрКлиенты.Наименование=MyRst<<?>>.Fields("CLI_NAME"); {Обработка.ИмпортЗаказов.Форма.Модуль(14)}: Переменная не определена (MyRst) СпрКлиенты.СтарКод=MyRst<<?>>.Fields("CLI_ID"); {Обработка.ИмпортЗаказов.Форма.Модуль(15)}: Переменная не определена (MyRst) СпрКлиенты.ИНН=MyRst<<?>>.Fields("INN"); {Обработка.ИмпортЗаказов.Форма.Модуль(16)}: Переменная не определена (MyRst) MyRst<<?>>.MoveNext(); {Обработка.ИмпортЗаказов.Форма.Модуль(18)}: Переменная не определена (MyRst) А енельзя ли как нибудь извратиться, типа dbs=СоздатьОбъект("dao.database") Так как опять приладить путь к мдб- шному файлу? Там ведь можно и рекордсеты и все остальное сделать. Помогите, пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 16:10 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Во, через adoпопробовал, такаяже фигня выпадает Процедура Выполнить() ado.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ИсточИмпорта+";Uid=Admin;Pwd=;"); //MyCon = Новый COMОбъект ("ADODB.Connection"); //MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" + ИсточИмпорта); //MyRst = Новый COMОбъект ("ADODB.Recordset"); //MyRst.Open ("select * from CLIENT", MyCon, 3, 1); Запрос="SELECT * FROM CLIENT;"; ado.Execute(Запрос); СпрКлиенты=СоздатьОбъект("Справочник.Клиенты"); //Пока MyRst.EOF=0 Цикл; Пока ado.EOF=0 Цикл //Цикл по записям НовыйКлиент=СпрКлиенты.Новый(); СпрКлиенты.Наименование=MyRst.Fields("CLI_NAME"); СпрКлиенты.СтарКод=MyRst.Fields("CLI_ID"); СпрКлиенты.ИНН=MyRst.Fields("INN"); СпрКлиенты.Записать(); MyRst.MoveNext(); КонецЦикла; КонецПроцедуры ado<<?>>.Execute(Запрос); {Обработка.ИмпортЗаказов.Форма.Модуль(8)}: Переменная не определена (ado) Пока ado<<?>>.EOF=0 Цикл //Цикл по записям {Обработка.ИмпортЗаказов.Форма.Модуль(12)}: Переменная не определена (ado) СпрКлиенты.Наименование=MyRst<<?>>.Fields("CLI_NAME"); {Обработка.ИмпортЗаказов.Форма.Модуль(14)}: Переменная не определена (MyRst) СпрКлиенты.СтарКод=MyRst<<?>>.Fields("CLI_ID"); {Обработка.ИмпортЗаказов.Форма.Модуль(15)}: Переменная не определена (MyRst) СпрКлиенты.ИНН=MyRst<<?>>.Fields("INN"); {Обработка.ИмпортЗаказов.Форма.Модуль(16)}: Переменная не определена (MyRst) MyRst<<?>>.MoveNext(); {Обработка.ИмпортЗаказов.Форма.Модуль(18)}: Переменная не определена (MyRst) А енельзя ли как нибудь извратиться, типа dbs=СоздатьОбъект("dao.database") Так как опять приладить путь к мдб- шному файлу? Там ведь можно и рекордсеты и все остальное сделать. Помогите, пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 16:13 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
1 1С надеюсь 8.Х, в 7.7 синтаксис другой ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2007, 18:08 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Shuhard1 1С надеюсь 8.Х, в 7.7 синтаксис другой 1С77 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2007, 07:36 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
я пас, ищи книжку Михайлова ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2007, 10:17 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Да Михайловых на Руси ууу...! Мнеб что попроще, типа таблицу присоединить (это как в Аксе) или другое, но данные придется импортировать. А кстати, из Аксаможно присоединить и заполнить Объекты 1С. Хотя бы так, все лучше чем Null. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2007, 13:18 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
Так никто и не подскажет? Обидно! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2007, 16:08 |
|
Импорт данных в 1С из Акцесса
|
|||
---|---|---|---|
#18+
PA Работа с ACCESS А ado, dao, adodb одно ито же или разные вещи? У меня ведь 97-й акцесс и 1С77! Конечно сейчас попробую еще раз через adodb, но один раз уже все не получилось, вряд ли и во второй раз получится! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2007, 16:37 |
|
|
start [/forum/topic.php?fid=28&fpage=186&tid=1525490]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 143ms |
0 / 0 |