Идея проста как мир и используется во всех конвертациях данных.
Правила переноса описаны в справочнике. В нем устанавливаем соответствия между таблицами и полями таблиц. Реализован не просто тупой перенос, а перенос связных данных, а именно можно переносить в:
- Справочники
- Документы
- Регистры сведений
При переносе устанавливаются соответствия по:
- кодам справочников
- наименованиям
- произвольным (но индексированным в 1С) полям справочников
- значениям перечислений
- по владельцу
Все это сделано в управляемом приложении с передачей импортируемой информации между клиентом и сервером по порциям, т.к. переносилась информация примерно объемом 300-400 тысяч записей.
Если интерес есть, то я напишу эту статью дальше с описанием как-же это было сделано, а пока пару картинок.
И наверное то, что вызывает наибольшие трудности у начинающих. Это кусочек кода для подключения базы данных как COM объекта к 1С.
&НаКлиенте
Функция СчитатьТаблицуMDB(ИмяТаблицы)
// Open connection
strCnxn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(Объект.ФайлДанных);
Cnxn = Новый COMОбъект("ADODB.Connection");
Cnxn.Open(strCnxn);
rst = Новый COMОбъект("ADODB.Recordset");
rst.Open(ИмяТаблицы, Cnxn,1);
//считываем структуру полей таблицы
ИменаПолей=Новый СписокЗначений;
Для Каждого тПоле Из rst.Fields() Цикл
ИменаПолей.Добавить(тПоле.Name);
КонецЦикла;
rst.MoveLast();
МаксЗапись=rst.RecordCount;
rst.MoveFirst();
Объект.ИмяТаблицы=ИмяТаблицы;
ЭтаФорма.ОбновитьОтображениеДанных();
...
Ну и далее по тексту уже идет загрузка значений из внешнего объекта/таблицы в список значений и передача его на сервер. На сервере этот список обрабатывается согласно правилам из справочника и пишется в объекты БД.
Я выложил код с примером - чего уж жмотиться !!!
Если кто-то доделает до ума - то плиз, не продавайте, а отдайте так же - бесплатно.
Если не забудете, то копию мне пришлите :-) того что получиться.
Я не планирую это развивать и превращать во что-то законченное, т.к. занят другим. Это лишь маленький кусочек, который как мне показалось может быть интересен и полезен.
Пока это черновик статьи - не судите строго.
Если будет интерес то я:
1) Допишу статью
2) Возможно выложу каркасную конфигурацию с примером переноса, по сути это готовое решение которое может использоваться в рабочих условиях. Я, к примеру, видел как за аналогичную работу франчи брали чуть ли ни по 50-100 часов :-), это конечно не очень порядочные франчи. Не очень хочется кормить таких людей. Так, что я на этот счет пока в раздумьях.