Процедура загрузки КЛАДР штатными средствами не сказать что трудна и утомительна. Но... для среднестатического "бухгалтера" утомительна. Нужно где то добыть архив кладр, распаковать его. Главное не забыть куда распаковали, потом выбрать все эти непонятные файлики и только потом начинать загрузку. Я считаю и всегда считал, что всякие там "загрузки" и "обновления" должны быть для пользователя как можно более "прозрачными". Предлагаю вашему вниманию "прозрачный" метод обновления КЛАДР. Есть тут маленький нюанс, почему то архив КЛАДР запакован не очень популярным архиватором 7-Zip. Поэтому, что бы для пользователя все было "прозрачно" идем на http://7-zip.org.ua/ru/download.html и качаем версию для командной строки 7-Zip. Это отдельный exe файл. Далее необходимо распаковать архив и файл 7za.exe запихать внутрь обработки в макеты как двоичные данные. Этим мы сможем отвязать себя от наличия архиватора у пользователя или на сервере. Далее предлагаю код загрузки по http и распаковки полученного архива КЛАДР. Загружать каждый раз новый архив с сайта, либо проверять наличие архива где-нибудь в хранилище - это даю на откуп дальнейшей разработки.
&НаКлиенте
Процедура ЗагрузитьКЛАДР(Команда)
Файл = ЗагрузитьКЛАДРНаСервере();
Сообщить("Файл загружен...");
РаспаковатьКЛАДР();
Сообщить("Файл распакован...");
КонецПроцедуры
&НаСервере
Функция ЗагрузитьКЛАДРНаСервере()
ФайлПолучатель = ПолучитьИмяФайлаКЛАДР();
ФайлИсточник = "/html/gnivcsoft/KLADR/Base.7z";
Соединение = Новый HTTPСоединение("www.gnivc.ru");
Соединение.Получить(ФайлИсточник, ФайлПолучатель);
Возврат ФайлПолучатель;
КонецФункции
&НаСервере
Процедура РаспаковатьКЛАДР()
ЭтотОбъект=РеквизитФормыВЗначение("Объект");
Макет = ЭтотОбъект.ПолучитьМакет("_7za");
Макет.Записать(ПолучитьВременныйКаталог() + "7za.exe");
_7za = """" + ПолучитьВременныйКаталог() + "7za.exe""";
Архив = """" + ПолучитьИмяФайлаКЛАДР() + """";
КаталогВыгрузки = " -o""" + ПолучитьВременныйКаталог() + """";
СтрокаКоманды = _7za + " e " + Архив + КаталогВыгрузки + " KLADR.DBF STREET.DBF -y";
Сообщить(СтрокаКоманды);
WshShell=Новый COMОбъект("Wscript.Shell");
WshShell.run(СтрокаКоманды);
КонецПроцедуры
Мне нужны был классификатор адресов без домов, поэтому я распаковывал не весь архив, а только нужные мне файлы. Следующий шаг по модернизации - это загрузка файла в отдельном потоке на сервере, что бы пользователь во время загрузки смог продолжить работу в программе.