gifts2017

Загрузка данных напрямую в SQL из 1С

Опубликовал Alex Misanets (Misanets) в раздел Обмен - Загрузка и выгрузка в Excel

Универсальная обработка для загрузки данных из табличного документа напрямую в таблицу базы SQL

 Основной вопрос: «В чем ее универсальность?». Ответ: «При построении SQL запроса мы должны знать набор значений, которые будем загружать, точнее их количество и тип. Так вот, заполнив табличную часть или загрузив в нее некий массив, на уровне кода будет определен их состав и тип и будет построен запрос. Нет необходимости отдельно объявлять какие-либо параметры».

Не думаю, что у каждого есть необходимость такой загрузки, но понять принцип взаимодействия 1С и SQL надо. Согласен, что если задача по загрузке постоянная, есть смысл писать отдельную обработку. Как раз, разобрав код, это будет сделать достаточно просто.

Проверялась на MS SQL 2005, 2008. Остальных нет под рукой, кто протестирует с иными, прошу прокомментировать.

Обработка предоставлена AS-IS («как есть»), доработка не предполагается, только исправление найденных ошибок, про них, естественно, тоже прошу писать.

На заметку: чтобы выполнять загрузку в SQL, пользователь под чьим именем будет это выполняться, не только должен иметь доступ к SQL, но и обладать правами "на запись" данных в БД, это важно иначе откажется загружать, сославшись на ошибку выполнения запроса.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Загрузка в SQL
.epf 28,23Kb
08.11.11
176
.epf 28,23Kb 176 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Ийон Тихий (cool.vlad4) 08.11.11 16:37
:cry: Так, в чем ее универсальность? Че-то я не понял..., так в чем прелесть-то? Зачем все записи выводить в табличный документ, как определяются/сопоставляются данные/типы источника/приемника? как идет синхронизация данных? доработка не предполагается, - это как? В общем-то соглашусь, если кому-то надо, есть смысл писать отдельную обработку
2. Alex Misanets (Misanets) 08.11.11 17:05
(1) cool.vlad4, Универсалность в том что вам не нужно писать обработку чтобы загрузить набор записей в скул, достаточно иметь собственно сам набор данных в виде таблицы. Записи не выводятся в табличный документ а загружаются из него. Сопоставление данных происходит по первой строке табличного документа (выделена др. цветом), то есть название колонки таб.части, соответствует названию колонки в таблице базы скула. Синхранизация чего? По поводу доработки, если кому-то покажется, к примеру, что хорошо бы загружать из еще какого-то формата, или к примеру понадобиться не только загружать, но и выгружать из скула, то он может это сделать сам, предложения по улучшению не интересны и не будут выполнены.
3. Ийон Тихий (cool.vlad4) 08.11.11 17:09
(2) На самом деле написать обработку соединения по ADO и выполнения команд SQL - не так долго, учитывая, что многими эта задача была решена не одну сотню раз. О табличном документе - просто не понял к чему он, поэтому спросил, понятно. А синхронизация - имеется ввиду, происходит обновление по ключу или просто всегда добавляются новые записи? в общем-то это просто пример...
4. Alex Misanets (Misanets) 08.11.11 17:31
(3) А я и не говорю, что изобрел велосипед. Мне такая задача встретилась впервые, по этому будет полезна если подобное придется делать еще кому-то, ИМХО. Синхронизации нет. Так как у меня задача была с заданным интервалов очищать таблицу и загружать в нее заново новые значения. Для того чтобы очистить таблицу есть соответствующая кнопка на командной панели.
5. игорь тос (svet222) 08.11.11 21:03
Подскажите с Mysql тоже будет работать
6. Alex Misanets (Misanets) 08.11.11 21:05
(5) svet222, не проверял. Но по идее должен,метод подключения через ADO, он универсальный.
7. FFFF FFF (Gasdrubal) 09.11.11 06:45
Почему у меня скачалось формате ostream какой - то?
как из этого получить обработку?
8. Alex Misanets (Misanets) 09.11.11 09:07
(7) Gasdrubal, измените разрешение на .epf
9. Павел Опарин (opx) 09.11.11 12:50
(5) Чтобы с mysql заработал нужно установить MySQL ODBC драйвер и скорее всего исходник немного поправить, чтобы строка подключения была другой. Я частенько занимаюсь перебросом данных 1C - mySQL. Тема однозначно интересная... интеграция - это наше фсе.
Misanets; +1 Ответить
10. Андрей К. (andrei.k) 11.11.11 08:46
11. Станислав Шепталов (sCHTASS) 11.11.11 10:01
Имхо построчное добавление в sql базу не есть гуд.
Как вариант вижу сохранение табличной части в Excel/DBF с последующей загрузкой файла через запрос. Работать будет в десятки раз быстрее.
12. Alex Misanets (Misanets) 11.11.11 16:21
(11) sCHTASS, Возможно. В моем случае таблица из 9 тыс. строк и 5 колонок грузиться 4-5 сек., по этому мне время выполнения не критичный параметр.
13. Станислав Шепталов (sCHTASS) 12.11.11 06:22
(12) Все таки предлагаю рассмотреть такой вариант, потому как принцип "а и так все работает" по своему опыту до добра не доводит.
14. Евгений Левченко (MYRZILKA123) 14.11.11 12:07
15. Евгений Малышев (kgp) 15.01.12 22:32
Зачем для строковых данных в функции ЗначSQL установлено Рез = "N'"+Зн+"'"?
Зачем символ N?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа