Массовый импорт адресов контрагентов и сотрудников в 1С 8.3 из Excel
Содержание
Загрузить адреса в 1С массово можно двумя путями: обработкой загрузки из табличного документа (Excel, CSV) или небольшой внешней обработкой на функциях БСП. Первый путь подходит для простых реквизитов, второй — когда адрес должен лечь в контактную информацию контрагента или физлица и распознаться по ФИАС. До загрузки подключите адресный классификатор , иначе адреса сохранятся только как текст.
Типичная боль — 500 строк в Excel, а в карточках контрагентов пустые поля «Юридический адрес» и «Фактический адрес». Вручную это день работы, а с подготовленным файлом и обработкой — около часа вместе с проверкой.
Подготовка файла с адресами к загрузке
Адрес в типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) — не обычная строка. Он хранится в табличной части «Контактная информация»: вид адреса, представление (то, что видно на экране) и служебное значение с разбором по частям. Поэтому качество исходного файла решает почти всё.
Что сделать с таблицей до импорта:
- 🔑 Ключ поиска. Для контрагентов — ИНН, для обособленных подразделений — ИНН + КПП, для сотрудников — табельный номер или СНИЛС. Наименование как ключ ненадёжно: «ООО Ромашка» и «Ромашка ООО» — разные строки.
- 🔢 ИНН как текст. Excel съедает ведущие нули: ИНН
0274123456превращается в274123456. Задайте столбцу текстовый формат до вставки данных. - 🏠 Одна колонка — один адрес. Если в файле есть отдельные колонки «индекс», «регион», «город», «улица», «дом», соберите их в одну строку формулой
=СЦЕПИТЬ()или через&. Порядок: индекс, регион, район, город, улица, дом, корпус, квартира. - ✂️ Чистка. Уберите переносы строк внутри ячеек (
=ПЕЧСИМВ()), двойные пробелы (=СЖПРОБЕЛЫ()), кавычки-ёлочки в названиях улиц. - 📌 Сокращения единообразно. «г.», «ул.», «д.», «кв.» — распознаватель понимает их лучше, чем смесь «гор», «улица», «д-м».
Пример строки, которая разбирается без проблем:
420021, Республика Татарстан, г. Казань, ул. Габдуллы Тукая, д. 52, кв. 14
Перед сохранением проверьте файл тремя быстрыми фильтрами:
- пустые ячейки в колонке ключа — такие строки загрузка пропустит;
- повторяющиеся ИНН — один контрагент получит адрес последней строки;
- адреса короче 15–20 символов — обычно это «Москва» или «см. договор», а не адрес.
С CSV следите за кодировкой. Excel по умолчанию сохраняет CSV в Windows-1251, а при выборе «CSV UTF-8» — в UTF-8. Если после открытия в 1С вместо букв видны «кракозябры», пересохраните файл в другой кодировке.
Сохраните итоговый файл в .xlsx и отдельно — в .csv с разделителем «;». Если xlsx не откроется обработкой из-за формул или объединённых ячеек, CSV почти всегда читается.
Загрузка адресов через обработку из табличного документа
Универсальная внешняя обработка «Загрузка данных из табличного документа» есть на диске ИТС и в разделе загрузок портала 1С. Она открывается через Файл → Открыть (меню-«гамбургер» в левом верхнем углу) и работает с любым справочником, табличной частью или регистром сведений.
Порядок работы:
- Сделайте резервную копию базы
— выгрузку
.dtили копию каталога файловой базы. - Откройте обработку, режим загрузки — «Загрузка в табличную часть», если адрес хранится в контактной информации, или «Загрузка в справочник», если нужен простой строковый реквизит.
- Выберите справочник, например
Контрагенты, и табличную частьКонтактнаяИнформация. - Вставьте данные из Excel в табличный документ обработки через буфер обмена или командой открытия файла.
- Настройте колонки (подробно — в следующем разделе) и нажмите «Контроль заполнения».
- Запускайте загрузку только после того, как контроль не показал красных строк.
Плюс обработки — ничего не надо программировать. Минус — она пишет в табличную часть ровно то, что вы дали. Если загрузить только представление адреса, программа увидит текст, но служебное значение останется пустым. Такой адрес отображается, но в отчётности и печатных формах может выводиться не так, как ожидаете, а при открытии карточки программа предложит разобрать его заново.
Сначала прогоните загрузку на копии базы и проверьте 5–10 карточек вручную. Откатить тысячу записанных контактов в рабочей базе без резервной копии нечем.
Сопоставление колонок Excel с реквизитами 1С
В обработке у каждой колонки табличного документа задаётся, какой реквизит она заполняет и как искать ссылочное значение. Для контактной информации важно заполнить не одну колонку, а связку полей.
Нюансы настройки:
- 🔍 Поиск владельца. Для колонки с ИНН укажите поиск по реквизиту
ИНН, а не по наименованию. Если у вас головная организация и филиалы с одним ИНН, используйте второй ключ — КПП, или подготовьте в файле готовый код элемента. - 🧷 Вид адреса — константой. Юридический, фактический и почтовый адреса — разные виды. Грузите их разными проходами, а вид задайте фиксированным значением, а не колонкой.
- ♻️ Повторная загрузка. Обработка добавляет строки в табличную часть. Запустите её дважды — получите два юридических адреса. Перед повтором очистите старые строки этого вида или используйте способ с кодом ниже, где есть режим замещения.
Если в списке видов нет нужного (например, «Адрес доставки»), сначала создайте его в справочнике «Виды контактной информации». Обработка не создаёт виды на лету.
Адресный классификатор ФИАС: что загрузить до импорта
Чтобы 1С разобрала строку на регион, город и улицу, нужен адресный классификатор. Его основа — ФИАС, федеральная адресная система, которую ведёт ФНС. Старый КЛАДР больше не развивается, актуальные типовые конфигурации работают с ФИАС.
Есть два варианта работы классификатора:
| Вариант | Как работает | Когда выбрать |
|---|---|---|
| Веб-сервис 1С | Адреса проверяются онлайн через интернет-поддержку | Есть стабильный интернет и подключена интернет-поддержка |
| Загрузка в базу | Данные нужных регионов лежат в самой базе | Нет интернета на сервере, большие объёмы, работа офлайн |
Настройки классификатора находятся в разделе Администрирование: в Бухгалтерии 3.0 — в группе «Адресный классификатор» в Общих настройках или в Интернет-поддержке и сервисах, в зависимости от релиза. Там же команда загрузки данных.
Загрузка по шагам:
- Подключите интернет-поддержку (логин и пароль портала 1С) или заранее скачайте файлы классификатора с портала.
- Запустите загрузку и отметьте только те регионы, которые реально встречаются в вашем файле. Все субъекты сразу грузятся долго и раздувают базу.
- Укажите источник: сайт 1С или каталог с файлами на диске.
- Дождитесь окончания. Пользователи могут работать, но загрузка нагружает сервер — лучше вечером.
Быстро понять, какие регионы нужны: отсортируйте файл по колонке с регионом или вытащите первые две цифры индекса. Обычно хватает 3–5 субъектов.
Когда классификатор подключён, строка вида «г. Казань, ул. Габдуллы Тукая, д. 52» разбирается автоматически, а при открытии адреса программа подсвечивает, если какая-то часть не найдена.
Массовая загрузка адресов кодом через БСП
Если адресов сотни и важно, чтобы они сразу легли с разбором по ФИАС, надёжнее маленькая внешняя обработка. Программный интерфейс подсистемы «Контактная информация» есть в типовых конфигурациях на БСП 3.x. Он сам превращает строку в полноценный адрес и умеет замещать старое значение.
Пример серверной процедуры: файл Excel, в колонке A — ИНН, в колонке B — адрес, первая строка — шапка.
&НаСервере
Процедура ЗагрузитьАдресаНаСервере(АдресФайлаВХранилище)
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ПолучитьИзВременногоХранилища(АдресФайлаВХранилище).Записать(ИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
ВидАдреса = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("ЮрАдресКонтрагента");
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
ИНН = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
Представление = СокрЛП(ТабДок.Область(НомерСтроки, 2).Текст);
Если ПустаяСтрока(ИНН) Или ПустаяСтрока(Представление) Тогда
Продолжить;
КонецЕсли;
Ссылка = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);
Если Ссылка.Пустая() Тогда
ОбщегоНазначения.СообщитьПользователю(СтрШаблон("Строка %1: контрагент с ИНН %2 не найден",
Формат(НомерСтроки, "ЧГ=0"), ИНН));
Продолжить;
КонецЕсли;
Значение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(Представление, ВидАдреса);
Попытка
Объект = Ссылка.ПолучитьОбъект();
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(Объект, Значение, ВидАдреса, , Истина);
Объект.Записать();
Исключение
ОбщегоНазначения.СообщитьПользователю(СтрШаблон("Строка %1: %2",
Формат(НомерСтроки, "ЧГ=0"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;
КонецЦикла;
УдалитьФайлы(ИмяФайла);
КонецПроцедуры
Что важно в этом коде:
- 📥 Файл читается на сервере, поэтому его сначала помещают во временное хранилище на клиенте (
НачатьПомещениеФайлаНаСерверилиПоместитьФайл), а сюда передают адрес хранилища. - 🔁 Последний параметр
ИстинавДобавитьКонтактнуюИнформацию— замещение. Повторный запуск не плодит дубли, а перезаписывает адрес этого вида. - 🏷️ Имя вида
ЮрАдресКонтрагента— предопределённый элемент Бухгалтерии 3.0. Для фактического адреса, адресов физлиц в ЗУП и других конфигураций точные имена посмотрите в Конфигураторе: справочникВидыКонтактнойИнформации, кнопка «Предопределённые». - 🧾 Ошибка одной строки не останавливает загрузку: она попадает в сообщения с номером строки.
Внешняя обработка в рабочей базе с включённой защитой от опасных действий запросит подтверждение. Это нормально. Но запускайте её сначала на копии: запись объекта контрагента вызывает все обработчики записи, включая регистрацию изменений для обменов.
Если строк много (десятки тысяч), оберните цикл в транзакции пакетами по 500–1000 объектов. Одна транзакция на всё держит блокировки, и пользователи будут ждать.
Ошибки при загрузке адресов и как их найти
Разбор результата начинайте с сообщений обработки: и универсальная, и самописная выводят номер строки. Скопируйте сообщения в Excel и отфильтруйте — так видно, какие ошибки повторяются.
После загрузки сделайте выборочную проверку. Откройте список контрагентов, добавьте колонку с юридическим адресом через настройку формы списка и отсортируйте по ней. Пустые значения соберутся сверху или снизу — это и есть необработанные строки.
Сравните число строк в файле с числом заполненных адресов в списке. Расхождение больше пары процентов — повод перечитать сообщения, а не править карточки руками.
Если адреса приходят из другой базы 1С
Когда адреса нужно перенести не из Excel, а из старой базы 1С — например, при переходе на новую конфигурацию, — таблица не нужна вовсе. Правильный путь — перенос справочников целиком вместе с контактной информацией:
- 🔄 штатный переход или обмен между типовыми конфигурациями, если он есть для вашей пары программ;
- 📦 обработка «Универсальный обмен данными в формате XML» с правилами конвертации, когда штатного обмена нет;
- 📋 выгрузка в Excel и загрузка по схеме выше — только если структуры баз сильно различаются.
Перенос с правилами сохраняет служебное значение адреса, и повторный разбор не требуется. Экспорт в таблицу и обратная загрузка теряют разбор и добавляют шанс опечаток.
Частые вопросы
Можно ли загрузить адреса без адресного классификатора?
Сколько места занимает адресный классификатор в базе?
Как загрузить адреса сотрудников в ЗУП?
Обновится ли загруженный адрес, если в ФИАС переименуют улицу?
Подойдёт ли эта схема для адресов доставки в УТ 11?
Источники
- Федеральный закон от 28.12.2013 № 443-ФЗ «О федеральной информационной адресной системе и о внесении изменений в Федеральный закон «Об общих принципах организации местного самоуправления в Российской Федерации»