Заполнение отборов сегмента партнера по ИНН контрагента из Excel
Интеграция - Загрузка и выгрузка в Excel
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Обработка создает/обновляет сегмент, заполняя его отбор партнерами, ИНН которых соответствует списку ИНН, загруженному из Excel-файла.
В самой обработке нет ничего сложного или сверхъестественного — реализована на основе методов БСП. Может использоваться, как подключаемая обработка в любых конфигурациях на основе БСП.
В рамках этой статьи хочу рассказать о выбранном подходе, его преимуществах, а также поделиться практическим опытом — в частности, обсудить "подводные камни", с которыми я столкнулся в процессе эксплуатации. Эти нюансы не всегда очевидны на этапе разработки, но могут существенно повлиять на стабильность и корректность обработки данных в production-среде.
Данный подход загрузки позволяет считывать данные напрямую из файла без необходимости предварительного описания структуры колонок (имён, типов данных и т.д.).
Ключевые преимущества метода:
- Универсальность — решение применимо к любому Excel-файлу, независимо от количества и наименования столбцов.
- Гибкость — отсутствие жёсткой привязки к структуре файла позволяет использовать один и тот же механизм для различных типов данных.
- Автоматическое определение структуры — данные считываются динамически, что упрощает интеграцию с таблицами значений.
- Снижение трудозатрат — не требуется ручная настройка маппинга полей при изменении структуры файла.
Метод может быть использован для:
- Загрузки справочников, заказов, отчётности и других типов данных от партнёров.
- Интеграции с внешними системами, где формат Excel является основным обменным форматом.
- Быстрого прототипирования и тестирования процессов загрузки данных, в служебных одноразовых обработках тех. поддержки.
// Параметры:
// Адрес - Строка - Адрес
// ПутьКФайлу - Строка
Функция ЗагрузитьДанныеИзExcel(Адрес, ПутьКФайлу) Экспорт
Расширение = ПолучитьРасширениеФайла(ПутьКФайлу);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
ДвоичныеДанные.Записать(ИмяВременногоФайла);
СпособЧтения = СпособЧтенияЗначенийТабличногоДокумента.Значение;
ТабличныйДокумент = Новый ТабличныйДокумент();
ТабличныйДокумент.Прочитать(ИмяВременногоФайла, СпособЧтения);
УдалитьФайлы(ИмяВременногоФайла);
ОбластьТаблицы = ТабличныйДокумент.Область();
ПостроительЗапроса = Новый ПостроительЗапроса();
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьТаблицы);
ПостроительЗапроса.ЗаполнитьНастройки();
ПостроительЗапроса.Выполнить();
Возврат ПостроительЗапроса.Результат.Выгрузить();
КонецФункции
После загрузки данных в таблицу значений рекомендуется выделить отдельный этап ETL-преобразования (Extract-Transform-Load) для корректной обработки и приведения данных к требуемому формату.
Обоснование: Данные в Excel-файлах зачастую хранятся в форматах, не соответствующих бизнес-логике системы. Например:
- ИНН, номера документов, коды — могут быть указаны как числовые значения, что приводит к потере ведущих нулей или некорректному парсингу.
- Даты — могут интерпретироваться по-разному в зависимости от региональных настроек Excel.
- Пустые или неоднозначные значения — требуют нормализации (например, замена
NULL, пробелов, строк вроде "нет" на стандартные значения).
Рекомендуемый подход при использовании вышеописанного метода:
- Загрузка "как есть" — на первом этапе данные извлекаются в таблицу значений без валидации и с минимальной обработкой (что обеспечивает универсальность).
- ETL-преобразование отдельным методом — на втором этапе выполняется:
- Приведение типов данных (например, преобразование чисел в строки для ИНН, счетов, телефонов).
- Очистка данных (удаление лишних пробелов, замена нестандартных значений).
- Валидация форматов (проверка длины ИНН, формата даты и т.д.).
- Логирование ошибок и предупреждений.
- Загрузка в целевую структуру — только после успешного преобразования данные передаются в справочники, документы или регистры.
Преимущества такого разделения:
- Чёткое разделение ответственности: загрузка → преобразование → сохранение.
- Повторное использование ETL-логики для разных источников.
- Упрощение отладки и тестирования.
- Возможность ручной корректировки таблицы значений перед финальной обработкой (например, через форму).
Таким образом, на основе практического опыта применения данного метода загрузки в различных задачах, сформирован единый стандарт: выделение отдельного метода ETL-преобразования данных на этапе после загрузки из Excel. Такой подход позволяет отделить процесс чтения данных от их обработки и нормализации, что существенно повышает надёжность, гибкость и поддерживаемость решений. Особенно эффективен данный подход при работе с разнородными и неструктурированными данными от различных внешних партнёров, где форматы и качество данных могут значительно варьироваться. Внедрение стандарта ETL-преобразования способствует унификации обработки, упрощает сопровождение и снижает количество ошибок при интеграции.
Примеры преобразований:
Строка.ИНН = СтрЗаменить(Строка.ИНН, " ", "");
Строка.ИНН = СтрЗаменить(Строка.ИНН, Символы.НПП, "");
P.S
Предусмотрено несколько вариантов доната с разными ценовыми опциями, чтобы каждый мог поддержать автора в соответствии со своими возможностями и уровнем вовлечённости.
Спасибо за внимание.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.24.43
Вступайте в нашу телеграмм-группу Инфостарт
См. также
5490 руб.
12.08.2021 48544 654 71
6000 руб.
11.12.2019 68105 1163 3
12444 руб.
29.10.2014 237988 777 544
6000 руб.
26.11.2020 51325 865 4
6000 руб.
01.03.2021 13464 89 0