KLADR: Ввод адреса по классификатору адресов КЛАДР (ExtDb для 8.2)

19.06.15

Разработка - Универсальные функции

Всё новое - это хорошо забытое старое!
Представляю оригинальную версию обработки для ввода адреса из КЛАДР в конфигурациях 8.2 (только толстый клиент) без использования типового регистра сведений «Адресный классификатор». Как многим известно, в замечательной программе «1С: Бухгалтерия 7.7» ввод адресов производится из внешних DBF-файлов, свободно скачиваемых с сайта ФНС или диска ИТС в каталог ExtDb рабочей базы. С помощью данной обработки вы сможете легко подключить и обновлять внешний КЛАДР для неограниченного количества своих баз меньше чем за одну минуту.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Демо-конфигурация
.cf 36,06Kb
116
116 Скачать (3 SM) Купить за 2 450 руб.

Предыстория

Создавая различные заказные конфигурации «с нуля» на платформе v8 я столкнулся с необходимостью подключения адресного классификатора для ввода юридического и фактического адресов фирм и контрагентов, адресов доставки и т.п. Не изобретая велосипед, я использовал регистр сведений и нужные ему процедуры подсистемы «Адресный классификатор» из типовой конфигурации, загружал файлы КЛАДР в базу и всё работало. Недостатком такой системы была очень долгая первичная загрузка и еще более длительное обновление данных в регистре сведений «Адресный классификатор», необходимость это делать отдельно в каждой рабочей базе, а также значительное увеличение объема баз и ежедневных архивов за счет данных, не являющихся учетными для предприятия. Каждый раз я с ностальгией вспоминал, что в старенькой «семёрке» достаточно было распаковать свежий архив с КЛАДР в каталог ExtDb одной базы, за пару минут проиндексировать DBF-ки, просто раскидать полученные файлы по другим базам и всё работало также быстро и надежно как теперь в «восьмёрке». Безуспешно поискав подобное типовое решение от 1С и не найдя ничего похожего здесь на Инфостарте, я принял решение изучить проблему и всё сделать самому.

Как это было

Для начала была скачана последняя версия КЛАДР и вся техническая документация по нему со страницы ФГУП ГНИВЦ ФНС России (в дальнейшем обновления базы данных классификатора можно тоже качать отсюда). Документация была изучена, DBF-файлы визуально пощупаны с помощью программы winDBFview (в частности с помощью встроенной функции работы с КЛАДР). Далее были изучены схемы организации ввода адреса в типовых «1С: Бухгалтерии 7.7 ред. 4.5» и «Библиотеке стандартных подсистем ред. 2.1». Огромную благодарность выражаю авторам обработки альтернативного ввода адреса для 7.7: //infostart.ru/public/61447/ и //infostart.ru/public/82114/ (некоторые идеи были взяты для каркаса моей разработки). В итоге собрав всё лучшее и отбросив наиболее непонятное была создана предлагаемая вашему вниманию обработка под 8.2.

Демо-конфигурация

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

  1. Создайте новый каталог, например C:\DataBase\ExtDb, и скопируйте в него файлы KLADR.DBF, STREET.DBF и DOMA.DBF, скачав их с сайта ГНИВЦ ФНС (остальные DBF-ки из архива можно удалить) или скопировав из каталога ExtDb рабочей базы «1С: Бухгалтерия 7.7».
  2. Создайте пустую базу на платформе 8.2 (толстый клиент) и загрузите в неё файл конфигурации KLADR.cf из данной публикации.
  3. Откройте новую базу в режиме «Предприятие», заполните константу «Путь к КЛАДР» каталогом п.1, нажмите внизу кнопку «Записать», при первом выборе значения константы «Типовой адрес» запустится индексация файлов КЛАДР (статус процесса в строке состояния) и откроется диалог ввода адреса.
  4. При заполненной константе «Путь к КЛАДР» на старте системы будет открываться уже не форма констант, а список демонстрационного справочника «Адреса», состоящего из одного реквизита неограниченной длины «Адрес». В модуле формы элемента данного справочника собраны все полезные приёмы работы с адресами формата ФНС.
  5. Описание прочих объектов конфигурации: общие модули «БСП» и «КЛАДР» содержат необходимые типовые процедуры и функции для обработки ввода адреса, из константы «Типовой адрес» подставляется значение при вводе нового адреса (можно ввести туда адрес до вашего города и начинать ввод сразу с улицы) и сама обработка «ВводАдреса» (проверяет и создает индексы, разбирает и собирает адрес через «9 запятых» - в общем смотрите и пользуйтесь).
  6. Выбираемые из списков элементы КЛАДР дополнительно подсвечиваются одним из трех цветов: черный - наименованию объекта ещё не сопоставлен код из базы (такое бывает при начале редактирования старого адреса или вводе наименования объекта вручную), синий - наименование объекта успешно идентифицировано в базе КЛАДР, красный - выбранный ранее из классификатора объект исправлен (такое бывает при ручном исправлении выбранного наименования или измении вышестоящего элемента адреса при уже выбранных нижестоящих).  

Я знаю что...

Данная обработка осознанно отличается по своему поведению от типовых механизмов 7.7 и 8.2 в следующих аспектах:

  1. Более жёсткая работа с полем «Индекс»: заполняется только если найден в домах или улицах (нет подбора ближайшего).
  2. Количество индексов и размер CDX-файлов максимально сокращены (своя индексация с префиксом «8»), избыточные заменены на переборы строк с условием, что практически незаметно на современных компьютерах и серверах.
  3. Убран подбор городов и населенных пунктов среди всех районов выбранного региона: только прямое подчинение по структуре кодов КЛАДР (можете доработать, включая анализ и обработку поля «STATUS»).
  4. Рекурсия по объектам адресации разорвана и структурирована в угоду читабельности и лёгкости доработки кода.
  5. Версии обработки на управляемых формах нет и не планируется, клиент-сервер встанет без особых доработок.
  6. Файлы ALTNAMES.DBF и SOCRBASE.DBF не используются: только актуальные адреса, только DOS-кодировка КЛАДР.
  7. Используемые файлы KLADR.DBF, STREET.DBF и DOMA.DBF сразу открываются на чтение при открытии формы обработки (готовьте оперативную память), но ошибок блокировки при одновременном вводе адресов различными пользователями и из разных баз не выявлено.

Заключение

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

См. также

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    20205    dimanich70    81    

145

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4096    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    18168    atdonya    24    

57

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    5506    ke.92@mail.ru    16    

65

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    14766    YA_418728146    7    

166

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3586    57    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    18490    171    sapervodichka    112    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. madonov 259 06.06.13 10:20 Сейчас в теме
Вот так, с помощью нехитрых приспособлений буханку белого (или черного) хлеба можно превратить в троллейбус... но зачем?

Плюс за усердие)
2. Хряк 144 06.06.13 19:08 Сейчас в теме
Браво! Очень полезная весчь! Спасибо.
3. kapustinag 07.06.13 09:05 Сейчас в теме
Сложные чувства...
С одной стороны - да, базы и бэкапы распухают из-за КЛАДР; да, надо периодически подгружать новый КЛАДР.
С другой стороны - ради внешнего КЛАДР включили возможность изменения конфигурации, и платим за это каждый раз увеличением трудоемкости обновления. Кроме того, дополнительный сетевой ресурс с этим внешним КЛАДРом - туда надо давать права, обслуживать.
В-общем, за все нужно платить. Так как дисковое пространство постоянно дешевеет, то для многих ответ все-таки будет - не трогать типовой КЛАДР. Ну а в самописных или сильно измененных конфигурациях - хорошее решение, согласен.
4. Chastiser 45 07.06.13 10:00 Сейчас в теме
(3) kapustinag, данное решение действительно больше для самописных (обидно когда КЛАДР занимает в базе столько же места, сколько учетные данные солидной торгово-производственной компании за 5 лет). Но поскольку вход и выход для внешнего КЛАДРа это всего лишь одна строчка кода с передачей (можно во внешнюю обработку) заполняемого элемента формы, то изменения типовых не такие уж и критические для дальнейшего обновления.
5. nistelrock 13.12.13 23:07 Сейчас в теме
Может кому пригодится, вот тут можно подписаться на обновления КЛАДР
xpym-xpym; +1 Ответить
6. hibico 268 15.01.14 13:36 Сейчас в теме
(+) за решение.
Жаль, что поздно увидел публикацию.
Сам прикручивал Классификатор по принципу Типовых на регистре.
Был шокирован, когда после загрузки Классификатора объем базы вырос почти на 1.5 гига при объеме DBF-ов в 300 метров.
Посмотрел демку. В моем случае переделка будет достаточно трудоемка. Но в будущем может пригодиться.
7. zzz_natali 61 02.02.14 19:05 Сейчас в теме
Совершенно несъедобный подход. Зачем править типовую конфу? Если на то пошло, то идти по пути некой базы(внешней обработки)-сателлита, которая могла бы вводить адрес со всеми существующими штатными вкусностями: на лету фильтровать и предлагать вводить наименования по первым буквам и копировать в буфер обмена, из которого уже можно копировать в рабочую базу, не трогая регистр сведений адресный классификатор
8. CrazyIgi 10 25.03.14 08:14 Сейчас в теме
Идея интересная, взял на вооружение.
Планируется ли реализация на управлямых формах?
9. Chastiser 45 25.03.14 08:51 Сейчас в теме
(8) Спасибо. На управляемых формах делать пока нет надобности. Тут показан только сам подход, а оформление каждый сам доработает под себя при желании.
10. CeHbKA 304 24.09.15 12:09 Сейчас в теме
11. AleksLeo 02.08.16 11:04 Сейчас в теме
Все Ок! Но есть проблема. При наборе по буквам не высвечивается список выбора и затирается сразу первая набранная буква. Что это?
12. user819046 28.08.17 11:45 Сейчас в теме
А можно сразу использовать dadata.ru. Поддерживается и КЛАДР и ФИАС (очень поможет при переходе, когда в 2018 году КЛАДР перестанет поддерживаться). Есть 10 000 бесплатных запросов в сутки.
Оставьте свое сообщение