powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Импорт данных в 1С из Акцесса
23 сообщений из 23, страница 1 из 1
Импорт данных в 1С из Акцесса
    #34554899
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто нибудь подскажет, как решить проблему?
1) У меня есть программа в Акцессе по учету заказов- затрат по ним, учет трудоемкости, распределение накладных, расчет себестоимости. Теперь приняли решение переходить на 1С и программу надо там делать. в 1С создал справочники заказов, направлений, клиентов и документ Производственная ведомость. Надо как-то данные из мдб импортировать в 1С. Где- то на Мисте попадалось как это сделать через ОЛЕ, но сейчас найти не могу, а вопросы мои на Мисте что то перестали проходить. Может кто советом поможет?
2)Справочники в Аксе имеют ключ- счетчик. Могу я при импорте данных вставить его в поле Код справочника 1С? Счетчик ведь тоже уникальный.
3) Справочник Заказы в 1С содержит поле Клиент с типом данных Справочник.Клиент. В Аксе эти две таблицы связаны по полю CLI_ID, при импорте данных в справочник Заказы что вставлять в поле клиент? Может кто на алгоритм вкратце намекнет, а там думаю сам домучаю.
Заранее всем большое спасибо!
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555091
Фотография 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();
КонецЦикла;
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555135
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 сослаться, если подскажите, буду очень признателен. Сейчас, конечно сам попробую написать, но все же.
А по второму и третьему, если можно!
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555246
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RodionAT2)Справочники в Аксе имеют ключ- счетчик. Могу я при импорте данных вставить его в поле Код справочника 1С? Счетчик ведь тоже уникальный.думаю 1С сам создаст свой счётчик
а по 3-му вопросу: придётся заполнить сначала Справочник.Клиент, а затем Справочник.Заказы
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555378
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 не вижу в данной ситуации потребности в DAO,ADO на стороне Access достаточен
2 ключ mdb в 1С нужен лищь для связки транспортируемых данных, загонять его в код справочника нет надобности,хотите сохранить - добавьте реквизит "старый код"
3 переносим справочник клиенты, сохраняем код в "старый код", при переносе документов по коду из Access ищем элемент в справочнике 1С по "старый код"
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555413
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
допустим СпрКлиентов уже заполнен ранее
и создан ручками СпрЗаказов с полем Клиент тип которого Справочник.Клиентов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
СпрЗаказов = СоздатьОбъект("Справочник.Заказы");
СпрКлиентов= СоздатьОбъект("Справочник.Клиентов");

цикл какой-нибудь
	i = i +  1 ;
	СпрЗаказов.Новый();
	СпрЗаказов.Код = i;
	СпрЗаказов.Наименование = mdb.Заказ;
	Если СпрКлиентов.НайтиПоКоду(mdb.ID)= 1  Тогда
		СпрЗаказов.Клиент = СпрКлиентов.ТекущийЭлемент();
	Иначе
		Сообщить(Строка(mdb.ID) + "  не найден код клиента");
	КонецЕсли;
	СпрЗаказов.Записать();
конецЦикла;
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555423
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
минимальный комментарий:
- заказы не справочник, а документ
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555802
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhard1 не вижу в данной ситуации потребности в DAO,ADO на стороне Access достаточен
2 ключ mdb в 1С нужен лищь для связки транспортируемых данных, загонять его в код справочника нет надобности,хотите сохранить - добавьте реквизит "старый код"
3 переносим справочник клиенты, сохраняем код в "старый код", при переносе документов по коду из Access ищем элемент в справочнике 1С по "старый код"
Я вот сейчас пишу процедуру Выполнить для обработки. Как мне из 1С сослаться на \\server\public\DBFS\mybase2_97.mdb, а уже потом инструкциями sql создавать запросы для перекачки данных. Как цикл организовать в 1С для заполнения 1С-ного справочника я уже понял, вот как взять данные из мдб-файла,пока не врубился. Акцесс- 97-й.
И еще- хорошо я создам в справочниках 1С поля старый код, заполню его, потом ведь надо будет искать в справочниках по старому коду, брать новый код и как-то вставлять в другой справочник в поле с типом Справочник.Клиенты. Посмотрел по справке 1С, там есть только поиск по коду или поиск по наименованию. По другим полям - перебор по циклу или выгружать в таблицу значений и там по колонке искать? Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34555836
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
Синтаксис:
НайтиПоРеквизиту(<Имя реквизита>, <Значение реквизита>, <Родитель>, <Владелец>)
Параметры:
<Имя реквизита> (обязательный)
Тип: Строка. Имя реквизита, как он задан в конфигураторе, по значению которого осуществляется поиск. Тип значения произвольный, кроме ХранилищеЗначения и строк произвольной длины.
<Значение реквизита> (обязательный)
Тип: Произвольный. Значение реквизита, по которому должен выполняться поиск.
<Родитель> (необязательный)
Тип: СправочникСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
<Владелец> (необязательный)
Тип: СправочникСсылка. Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
Возвращаемое значение:
Тип: СправочникСсылка. Ссылка на найденный элемент справочника. Если не существует ни одного элемента с требуемым значением реквизита, то будет возвращена пустая ссылка.
Описание:
Осуществляет поиск элемента по значению реквизита.
Примечание:
Если существует несколько элементов с указанным значением реквизита, то будет найдет только один из них.
Для реквизитов типа Строка поиск осуществляется по точному соответствию.
Пример:
СтрокаНаименования = "Доллары США";
Валюты = Справочники.Валюты;
НайденнаяСсылка = Валюты.НайтиПоРеквизиту("ПолноеНаименование",
СтрокаНаименования);
Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда
Сообщить("Валюты """ + СтрокаНаименования + """ еще нет.");
Иначе
Сообщить("Нашли такую.");
КонецЕсли;
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34556778
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, что в процедуре неверно

авторПроцедура Выполнить()
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Объект)
Чего- то не так- сам ощущаю, а понять не могу.
Подскажите, если можно!
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34556808
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
книжку по 1С почитать стоит непременно, ибо:
MyCon = Новый COMОбъект ("ADODB.Connection"); Новый отделен от COMОбъект пробелом
Пока НЕ MyRst.EOF Цикл не закрывается ;
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34556822
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догон
НоваяКорпорация=справочники.Корпорации.СоздатьЭлемент(); а не СпрКлиенты=СоздатьОбъект("Справочник.Клиенты");
НоваяКорпорация.Наименование==MyRst.Fields("Corp_Name").Value; а не СпрКлиенты.Наименование=MyRst.CLI_NAME

4 ошибки в 13 строках - не взлетит
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34556870
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34558005
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал пробел! И вот что написалось!!!
MyCon = Новый <<?>>COMОбъект ("ADODB.Connection");
{Обработка.ИмпортЗаказов.Форма.Модуль(3)}: Переменная не определена (COMОбъект)
MyRst = Новый <<?>>COMОбъект ("ADODB.Recordset");
{Обработка.ИмпортЗаказов.Форма.Модуль(5)}: Переменная не определена (COMОбъект)
Такое ощущение, что у меня на компьютере чего то не установлено, а что - не пойму! Сейчас еще по последнему совету с ado попробую, но надежды как то мало. Хотя... АксХР на компьютере установлен. Фигня какая - то, честное слово! В Аксе все так славно работает!
Еще раз прошу совета по вопросу, хотя чувствую, что уже всем надоел.
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34558454
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, через 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")
Так как опять приладить путь к мдб- шному файлу?
Там ведь можно и рекордсеты и все остальное сделать.
Помогите, пожалуйста
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34558467
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, через 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")
Так как опять приладить путь к мдб- шному файлу?
Там ведь можно и рекордсеты и все остальное сделать.
Помогите, пожалуйста
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34559058
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 1С надеюсь 8.Х, в 7.7 синтаксис другой
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34559810
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhard1 1С надеюсь 8.Х, в 7.7 синтаксис другой
1С77
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34560127
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я пас, ищи книжку Михайлова
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34560951
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да Михайловых на Руси ууу...!
Мнеб что попроще, типа таблицу присоединить (это как в Аксе) или другое, но данные придется импортировать.
А кстати, из Аксаможно присоединить и заполнить Объекты 1С. Хотя бы так, все лучше чем Null.
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34568514
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так никто и не подскажет? Обидно!
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34568628
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Импорт данных в 1С из Акцесса
    #34568690
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PA Работа с ACCESS
А ado, dao, adodb одно ито же или разные вещи? У меня ведь 97-й акцесс и 1С77! Конечно сейчас попробую еще раз через adodb, но один раз уже все не получилось, вряд ли и во второй раз получится!
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Импорт данных в 1С из Акцесса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]