gifts2017

КЛАДР под MS SQL Server

Опубликовал Станислав Шепталов (sCHTASS) в раздел Обработки - Универсальные обработки

Использование КЛАДР под MS SQL Server

КЛАДР под MS SQL Server

Зачем это надо?

Работая в конторе с большим количеством самописных конфигурации в тесном сотрудничестве с маркетингом, встречался с большим нежеланием пользователей вводить данные в определенном формате. В следствии чего плодились дубли среди контрагентов, контакты контрагентов представляли собой мешанину нестандартизованной информации, что в свою очередь сказывалась на скорость и качество обработки данных. Поэтому первым шагом к порядку было приведение записи адресов к единому формату — формату КЛАДР.

Изначально планировалось перенести механизм занесения адресов из типовых конфигураций 1С. Но простое решение — не всегда может быть лучшим. Встретился с такой проблемой: при массовом вводе контактной информации, слетали индексы из-за чего списки с адресами были пусты :(. Как вариант, было рассмотрено решение перенести КЛАДР под MS SQL Server. Это решало сразу две проблемы:
- «косяки» при массовом терзании базы;
- обновление баз КЛАДР в каждой конфигурации.

Как внедрить?

Внедрение данной обработке сводится к объявлению в глобальном модуле переменной:

Перем глСоединениеКЛАДР Экспорт;

и изменении процедуры глВводАдреса():

Процедура глВводАдреса(Адрес, ФорматАдреса = 0) Экспорт
 
 Если ТипЗначенияСтр(Адрес) <> "Строка" Тогда
  Адрес = "";
 КонецЕсли;
 
 ОткрытьФормуМодально("Обработка",Адрес,КаталогИБ()+"ExtForms\ВводАдресаПравильно.ert");
КонецПроцедуры // глВводАдреса().

После внесения соответствующих изменений в «глобальнике» нужно скопировать в ExtForms следующие обработки:
- ВводАдресаПравильно.ert;
- ВыборИзКлассификатораАдресов.ert;
- ДобавитьОбъектВКЛАДР.ert.

(Сразу отмечу. В модуле обработки ВыборИзКлассификатораАдресов.ert в процедуре УстановитьСоединениеСБазойКЛАДР() нужно указать параметры соединения с MS SQL Server).

После всего выше перечисленного нужно поднять базу КЛАДР под MS SQL Server с таблицами, имеющие имена и структуру, как DBF-таблицы КЛАДР. Затем средствами MS SQL Server или через обработку ЗагрузкаКЛАДР.ert (работает с 1С++) загружаем данные в SQL-Базу.


Примечание.

В данной обработке используется разработка Синявского Филиппа, предоставляющая информацию о месторасположение адреса на интернет-карте http://map.samtel.ru/.

 

Не забываем плюсовать Wink

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

Наименование Файл Версия Размер Кол. Скачив.
-
.1245762414 51,31Kb
25.09.09
136
.1245762414 51,31Kb 136 Скачать

См. также

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

Комментарии

1. Станислав Шепталов (sCHTASS) 23.06.09 17:14
Данная разработка, так сказать, первый опыт работы с SQL. Написана и переписана с учетом пользовательских запросов с максимальному ограничению самостоятельности операторов. Юзается на крупном предприятии более 3,5 лет.

Выкладываю сею разработку для тех, кому будет полезно, а также здоровой критики ради.
2. 1c_cap (cap_1c) 24.06.09 11:03
А при переходе на DBF версию базы адреса будут теряться?
3. Станислав Шепталов (sCHTASS) 24.06.09 11:34
4. Саша (Хряк) 24.06.09 15:15
> В данной обработке используется разработка неизвестного мне автора...

Дык там вроде и написано
Проект: Синявский Филипп
5. Станислав Шепталов (sCHTASS) 24.06.09 15:47
4) Мне достался только код.
6. Владимир Исаев (chessman) 05.07.09 20:11
Идея отличная,для зарплатных баз самое оно :)
Можно пару замечаний?

Загружать таблицы DBF на сервер можно чутка проще, одним запросом:
стрТекстЗапроса = "
|SEL ECT
| *
|into
| " + СокрЛП(_пТаблица) + "
|FROM
| OPENROWSET('MSDASQL',
| 'Driver={Microsoft dBase Driver (*.dbf)};
| DBQ=c:\temp\',
| 'SEL ECT
| *
| FROM
| " + СокрЛП(_пТаблица) + ".dbf')
|";

И еще...раз уж ты используешь 1с++, зачем тогда тебе объект ADODB?
В 1с++ есть его обертка.
7. Станислав Шепталов (sCHTASS) 06.07.09 10:03
6)
стрТекстЗапроса = "
|SEL ECT
| *
|into
| " + СокрЛП(_пТаблица) + "
|FROM
| OPENROWSET('MSDASQL',
| 'Driver={Microsoft dBase Driver (*.dbf)};
| DBQ=c:\temp\',
| 'SEL ECT
| *
| FROM
| " + СокрЛП(_пТаблица) + ".dbf')
|";
За это спасибо. Не знал.


>И еще...раз уж ты используешь 1с++, зачем тогда тебе объект ADODB?
>В 1с++ есть его обертка.
Сама обработка выбора из КЛАДР была написана мною три года тому назад. Про 1с++ тады я только слышал. Не стал переписывать, ибо времени на это нет.

А загрузчик КЛАДР был написан в эпоху работы с 1С++ и прочими вкусностями.
8. Владимир Исаев (chessman) 06.07.09 10:21
Про загрузку таблиц забыл сказать, что путь DBQ=c:\temp\' - это путь к "ресурсу", который видит SQL, т.е. в данном случае каталог на SQL-сервере, а не на клиенте.
Удачии спасибо.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа