gifts2017

Получение КЛАДР по http и его распаковка

Опубликовал Дмитрий Соломатин (sdf1979) в раздел Обработки - Обработка справочников

Получение КЛАДР по http c сайта ФГУП ГНИВЦ ФНС РОССИИ и его распаковка

Процедура загрузки КЛАДР штатными средствами не сказать что трудна и утомительна. Но... для среднестатического "бухгалтера" утомительна. Нужно где то добыть архив кладр, распаковать его. Главное не забыть куда распаковали, потом выбрать все эти непонятные файлики и только потом начинать загрузку. Я считаю и всегда считал, что всякие там "загрузки" и "обновления" должны быть для пользователя как можно более "прозрачными". Предлагаю вашему вниманию "прозрачный" метод обновления КЛАДР. Есть тут маленький нюанс, почему то архив КЛАДР запакован не очень популярным архиватором 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(СтрокаКоманды);
КонецПроцедуры

 

Мне нужны был классификатор адресов без домов, поэтому я распаковывал не весь архив, а только нужные мне файлы. Следующий шаг по модернизации - это загрузка файла в отдельном потоке на сервере, что бы пользователь во время загрузки смог продолжить работу в программе.

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

Наименование Файл Версия Размер Кол. Скачив.
КЛАДР.epf
.epf 407,30Kb
24.12.13
18
.epf 407,30Kb 18 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 24.12.13 10:25
(0) Кто сказал, что 7-Zip - не очень популярный архиватор? Ничего, что в России его лет пять как по дефолту ставят на все новые ноуты?
2. Дмитрий Соломатин (sdf1979) 24.12.13 11:14
На новые ноуты много что по дефолту ставят, но формат архивирования 7z не самый распространенный в сети.
3. Алексей Белоусов (AllexSoft) 24.12.13 11:22
Эх... вот лучше бы сделать чтобы кладр не из регистра читать, а из внешних файлов, возможно с WS-сервиса ЦБ или в интернете... вот это было бы дело
4. Алексей 1 (AlX0id) 24.12.13 23:34
(3) AllexSoft,
Ага, и запросы тоже строить к сервису..
Начал вводить кусок адреса, сработал автоподбор - и ты идешь попить чайку ) Очень правильный подход к работе, кстати )
5. Данила Елистратов (CagoBHuK) 25.12.13 09:53
А что, из типовых конфигураций уже вырезали получение КЛАДР? Автор, а кто сказал, что на сервере обязательно будет работать COM? Или программисты теперь пишут так, чтобы работало только после шаманства с бубном?
6. Дмитрий Соломатин (sdf1979) 25.12.13 10:13
Шаманство с бубном - это когда матчасть не знаешь. У меня прекрасно на WinServer 2003 x64 работает и COM и 1С77 OLE для той учетки, под которой сервер 1С:Предприятий работает.
7. Алексей Белоусов (AllexSoft) 25.12.13 10:24
(4) AlX0id, почему идешь попить чайку? он будет отрабатывать так же, если не быстрее... соединение с веб-сервисом моментально, запрос будет обрабатываться мощным сервером на ЦБ, так что даже быстрее будет... разумеется я не предлагаю пересылать весь кладр через WS, а только скажем ПЕРВЫЕ 10, что для автоподбора вполне достаточно, так же не предлагаю юзать это GPRS и прочей мобильной связи... а вот если бы была база только кладр+web-сервис + обработина подбора в базе... то можно будет уменьшить размеры баз, скажем в ЗУП и в БП это мега актуально... да везде где есть контрагенты мега актуально...
ПС: надоело ждать часами реструктуризацию гигабайтного! регистра АдресныйКлассификатор, когда 1С там что то меняет, для файлового варианта это может быть критически важно при активной работе юзеров с ним
8. Алексей 1 (AlX0id) 25.12.13 10:47
(7) AllexSoft,
И этот "мощный сервер" прям-таки с охотцей будет обрабатывать ваши запросы (и миллионов других пользователей) :) Как мне кажется, это из разряда утопий ) Хотя, возможно, за "небольшую сервисную плату", может, и развернут сервачок )
9. Алексей Белоусов (AllexSoft) 25.12.13 10:54
(8) AlX0id, миллионов зачем? свой локальный WEB-сервис на своем локальном сервачке... и все будет нормально
10. Тимофей Шантин (ShantinTD) 25.12.13 11:25
(7) AllexSoft, да, да, да... "Реструктуризация регистра сведений Адресный классификатор" вылезает едва ли не в каждом новом релизе Бухгалтерии. =) Хотя это сейчас весело, когда обновления уже накачены. А пока накатываешь - ни разу не весело. Особенно - если попадется клиент, которому полгода "и так нормально было" (хотя ведь честно купили ИТС!).
(уж про обновление классификатора банков никто и слышать не хочет, пока у них платежи проходить не перестанут).
Лично я не практикую накатывания 5-10-20 релизов разом. Натыкался на разрушение базы в таком раскладе (хорошо, что есть бекап). Поэтому накатываю последовательно.

то можно будет уменьшить размеры баз, скажем в ЗУП и в БП это мега актуально...

по рукам нужно бить за заполнение регистра полностью "на всякий случай". Действительно! А вдруг у нашей маленькой фирмы (из трех человек) появятся клиенты/поставщики с другого конца страны?
Нужно здраво оценивать масштабы, и грузить только ту часть КЛАДРа, которой реально придется пользоваться. Несколько адресов можно и руками забить, а если совсем припрет - догрузить еще часть классификатора.

P.S. Это не наезд, это возмущение на некоторых юзеров!
11. Алексей 1 (AlX0id) 25.12.13 11:29
(9) AllexSoft,
Ну раз есть возможность содержать свой мощный сервак с блэк-джеком и веб-сервисами, то что мешает переделать механизмы хранения на свой лад? ) Никто ж не заставляет вас грузить гигабайты адресов по умолчанию..
12. Алексей Белоусов (AllexSoft) 25.12.13 13:03
(10) ShantinTD, в свое время когда я был сопровождающим я конечно все регистры максимально чистил или не загружал, говорит вот появится клиент или сотрудник из того региона, позвоните я подгружу регион сам... и не учил их как загружать...
Про банковский классификатор тоже верно подмечено, было бы совсем неплохо его вынести в отдельную базу вместе с КЛАДром
По поводу реструктуризации, есть клиенты которые покупают компы с каким нибудь GREEN диском, которые только под файлопомойку годен (таких кстати много), у них реструктуризация еле еле проходит.
Бывает и такое что компания небольшая, но клиенты реально по всей России, например небольшие гостиницы, базы отдыха, региональные тур агенства им всем нужен КЛАДР полностью и это обосновано
(11) AlX0id, зачем же большой и мощный, для обслуживания базы КЛАДР+Банки несколько десятков юзеров на нескольких базах достаточно обычного компа на Core i7 (i5) + SSD, что вполне по силам любой организации.
то что мешает переделать механизмы хранения на свой лад?

время ( эх... я бы даже платформу вместо 1С свою написал, было бы безлимитное время...
13. Тимофей Шантин (ShantinTD) 25.12.13 15:16
(12) AllexSoft, а я так и говорю, что нужно соотносить "то что можно загрузить" (то есть весь классификатор) и "то что нужно загружать" (то есть основной круг контрагентов). И не говорю, что категорически нельзя загружать все.

клиенты которые покупают компы с каким нибудь GREEN диском
если бы они покупали КОМПЫ! Купят ноутбук за 10-12 тысяч, а потом возмущаются "1С открывается полчаса".
У меня случай был: клиент нашелся в нашем же здании в другом его конце. Комп - моноблок с Intel Atom. Начал ставить, устал ждать, сходил к себе, установил на своем компе, скинул пустую базу на флешку, вернулся, скопировал с флешки, запустил, стал настраивать... и тут завершилась установка, начатая на бедном атом-е. =)
14. Алексей Белоусов (AllexSoft) 25.12.13 15:23
(13) ShantinTD, у нас один раз клиент принес нетбук с атомом каким то и без винта (там всего 32гб было памяти) .. ну ничего поставили, правда тормоз ужасный
15. Тимофей Шантин (ShantinTD) 25.12.13 16:33
(14) AllexSoft, поставить-то можно. Как говорится - любой каприз за ваши деньги.
Вопрос (возмущение?) к тем клиентам, которые жмотятся на нормальный компьютер, а потом обижаются, что "медленно работает". Лично мне не сильно напрягает: поставил ноут рядом, сам сидишь работаешь, а в ноуте только знай обновления подсовывай вовремя. Время идет, деньги капают.
А там хоть i7, хоть Atom, хоть Celeron древний...
16. Никита Грызлов (nixel) 27.12.13 22:37
(6) sdf1979, есть еще линуксовые сервера. и, о боже, даже клиенты :)
17. Дмитрий Соломатин (sdf1979) 29.12.13 08:56
Если быть внимательным, то ОС в которой работает обработка - Windows. Я это указал в описании к статье. Один из плюсов трехзвенной архитектуры - все, что выполняется на сервере, выполняется в контексте сервера, можно спокойно пренебречь конфигурациями клиента. Если же стоит сервер предприятия 1с на ОС LINUX, адапртируйте код под данную операционную систему.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа