1C 8.2 Импорт данных из MySQL

Цена договорная • безналичный расчёт, электронные деньги
30 ноября 2014, 15:14 • 3 отклика • 34 просмотра
Есть некая биллинговая система, в которой хранится информация о платежах и абонентах, этот платеж совершивших. Нужно импортировать эти данные в 1С с проверкой на дубликаты и созданием документов.
Примерный вид внешней формы в атаче.
Доступ к базе через ODBC driver 5.
Алгоритм такой:
1. Открываем в 1С внешнюю форму, поле с именем DSN должно быть предзаполнено. Нажимаем кнопку "Connect". Результат подключения выводится в окно сообщений.
2. Поле SQL предзаполнено. В общем виде SQL запрос такой:
SELECT p.amount, m.fio, p.pay_date,
ag.number,ag.date,
ac.name, concat ("Паспорт серии ",pass_sernum, " № ", pass_no , " выдан ", pass_issuedate, " ", pass_issuedep) as pasp,
ad.address
FROM payments p
LEFT JOIN agreements ag on (p.agrm_id=ag.agrm_id)
LEFT JOIN accounts ac on (ag.uid=ac.uid)
LEFT JOIN accounts_addr ad on (ag.uid=ad.uid)
LEFT JOIN managers m on (p.mod_person=m.person_id)
where date(pay_date)=date(NOW()) and ad.type=1;

Результат в виде таких строк:
100
Иванова Елена
2014-11-30 15:23:58
124054
2012-10-08
Иванов Иван Иванович
Паспорт серии 3606 № 615313 выдан 2007-02-08 Отделом внутренних дел Петровского района Ивановской области
Россия,обл Ивановская,,г Иваново,пгт Усть-Иваново,ул Спортивная,дом 9а,комн. 153,123123

3. Нужно эти данные отобразить в таблице.
4. Первый столбец в таблице - редактируемый флажок. По умолчанию он отмечен.
5. Проверяем данные на дубликаты: Поиск проводиться по номеру договора в списке контрагентов. Если такой контрагент уже есть, то в таблице во втором столбце высветить символ "!"
6. Если такой абонент есть - проверяем не был ли уже этот платеж импортирован. Поиск осуществляется по документам в журнале "Оказание услуг". Если такой платеж найден (совпадение контрагента по номеру договора, сумма платежа, дата), то в первом столбце этой строки снимаем галочку (т.е. этот платеж не будет занесен в 1С).

7. После проверки становится активной кнопка "Импортировать и создать документы".
При нажатии кнопки "Импортировать и создать документы":
Обрабатываются только строки, у которых отмечен флажок в первом столбце.
1. Если такой абонент есть. то у него значение полей Наименование, ФИО, паспорт, фактический адрес обновляются на данные из MySQL
Если такого абонента нет - он создается в журнале "Контрагенты", папка "Абоненты" с занесением всей информации (фио, паспорт, адрес, договор)
2. Нужно создать документ в разделе "Оказание услуг" за дату платежа и занести информацию о этом платеже туда.
3. Нужно создать документ в разделе "Операции, проведенные вручную" за дату платежа и занести информацию о этом платеже туда.

При этом выборка может содержать платежи за несколько дней, тогда по 2 и 3 пунктам создаются отдельные документы за каждый день и информацию по каждому платежу заносится в соответствующий документ.
Какие именно документы создавать и как они должны выглядеть - покажу после выбора исполнителя.
Последний выполненный запрос SQL должен сохраниться при закрытии формы и быть показан при её открытии вновь.
Файлы