Выгрузка и загрузка данных из файла Excel с поиском по любым полям (есть поиск по ссылке, всего три итерации поиска. Управляемые формы или "Такси")










Обработка позволяет загружать данные с поиском по ссылке как для загружаемого объекта, так и его свойств. Загружает справочники, документы, планы видов характеристик. Будет полезна как замена использования конвертации данных для задач переноса, а также как классическая загрузка из табличного документа (Excel). Поиск объекта при загрузке выполняется до трех раз с разными полями поиска (поля поиска настраиваются). Также реализована выгрузка в Excel по ссылкам. У обработки удобный интерфейс, в котором разберется даже начинающий пользователь. Загрузка накладных из файлов xls реализована с интеллектуальным поиском колонок с данными. В интеллектуальном поиске поддерживаются все основные типовые печатные формы.

Была поставлена задача обновления справочника в одной базе по данным из другой. Причем база-источник УТ 10.2, и не поддерживает работу через универсальный обмен в формате XML, а база-приемник самописная, хоть и на БСП и справочники в них похожей структуры. На Инфостарте есть множество обработок загрузки данных из файла Excel. Открываю одну, другую. Ни в одной обработке нет возможности указать колонку, в которой у меня поле Ссылка.

Обработка была создана для решения задачи загрузки данных между базами 1С, между которыми соблюдалась ссылочная целостность справочника (одна из баз когда-то была создана загрузкой из первой). Также для универсальности разработана удобная загрузка из типовых печатных форм (ТОРГ-12 и прочие) в табличные части документа. При этом обработка разбирает любую печатную форму, сама находит на ней пригодные для загрузки данные.

Есть большое количество планов по развитию выгрузки и загрузки данных. Они описаны ниже по тексту публикации. Выполняться они будут в порядке приоритета просьб пользователей — что будут больше просить, то будем раньше делать. Поэтому все свои пожелания пишите в комментариях к публикации.

Поиск по ссылке является самым надежным и удобным способом поиска элементов при загрузке данных, если элементы справочника создаются только в одной из баз. Именно так происходит поиск объектов у большинства справочников во всех обменах между конфигурациями фирмы 1С, в том числе и в "новомодном" обмене через формат Enterprise Data.

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

 

В каких случаях будет полезна обработка? (Сценарии использования)

 Можно рассмотреть два основных сценария использования обработки:

1) Перенос данных между базами 1С в ситуациях, когда новые элементы справочника создаются только в одной из баз, а также любых других ситуациях. Если нет совпадения ссылок элементов, то возможна настройка поиска по другим полям.

2) Загрузка табличных частей документов из файлов Excel из печатных форм любого формата. Потребуется указание имен колонок. При загрузке работает интеллектуальный поиск только значащих колонок и строк для загрузки в табличную часть.

3) Групповое изменение реквизитов объектов через файл Excel (с последующей загрузкой обратно в ту же базу).

4) Обмен данными между похожими конфигурациями для объединения справочников.

 

Преимущества обработки

  • Удобный интуитивно понятный интерфейс;
  • Возможность загрузки с гарантией отсутствия дублей при совпадении ссылок в источнике и базе, в которую производится загрузка;
  • Поиск элементов при загрузке в три итерации. Можно настроить разные комбинации полей поиска;
  • Настройки обработки сохраняются при следующем открытии.
  • Ведутся работы по оптимизиации производительности проведения загрузки данных (хотя загрузка через СОМ сама по себе работает медленно, лучше сначала способ подключения к файлу оптимизировать мне).

 

Особенности работы с обработкой

  • 1) Загрузка в табличную часть объекта или выгрузка из табличных частей в настоящее время не реализованы. Если Вам это необходимо, сообщите, разработаем в первую очередь именно этот функционал.
  • 2) Алгоритм поиска таблицы с данными в загружаемых файлах Excel следующий. Касается он типовых форм (ТОРГ-12, Счет-фактура, акт об оказании услуг и прочие). Так как при выгрузке с помощью обработки из этой публикации выгружаются сразу колонки с данными, а в первой строке располагаются имена колонок.
  • Алгоритм поиска следующий: сначала ищется ячейка со значением "№". Это означает колонку с нумерацией строк. Если находится, то далее остаются только строки этой таблицы, остальное все удаляется.
  • Если такой ячейки не находится, то срабатывает алгоритм поиска строки с номерами колонок. Колонки нумеруются в таких типовых печатных формах как ТОРГ-12, Счет-фактура и многих других. Если такая строка находится, то загружаются строки согласно номерам колонок, остальные данные очищаются.
  • Также для определения таблицы с данными используется алгоритм подсчета заполненных ячеек. Все крайние строки с малым числом заполненных ячеек удаляются из таблицы при загрузке.

 

Планы развития

  • Разработать обработку выгрузки по ссылке (Основной объект выгружается вместе со всеми реквизитами. Реквизиты ссылочного типа выгружаются только в виде ссылки (строка с глобальным уникальным идентификатором).
  • Разработать несколько способов загрузки данных, кроме СОМ-подключения (ADO, Yoksel).
  • Сделать при создании новых объектов заполнение реквизитов по умолчанию в соответствии с настройками (конкретные значения или указание формул расчета).
  • Сохранение настроек обработки для конфигурации, не содержащих БСП (Для содержащих БСП сохранение настроек уже реализовано).
  • Сохранение настроек соответствия колонок табличного документа и файла печатной формы в Excel.
  • Реализовать фильтры по значениям полей объекта в обработке выгрузки данных;
  • Реализовать выгрузку табличных частей документов в обработке выгрузки данных;
  • Загрузка в табличную часть объектов;
  • Сохранение значений полей обработки выгрузки в Excel при следующем открытии.
  • Сделать удобную ширину колонок табличного документа как при сохранении, так и при открытии файла (и на форме обработки загрузки также).

Требования для работы обработки

  • Необходима актуальная версия платформы 1С:Предприятие 8.3.
  • Конфигурации источник и приемник могут быть любыми, работающими в интерфейсе Управляемые формы или Такси.
  • Код обработки открыт. Возможно любое редактирование по Вашему желанию. Запрещается только размещение в интернете или другое массовое распространение.
  • Принимаются пожелания по развитию обработки. Если пожелание признается полезным, то реализуется, разумеется, бесплатно.
  • Возможна платная доработка под Ваши потребности. С деталями задачи обращайтесь через личные сообщения.
  • Ошибки и замечания пишите в комментариях к публикации, будем стараться оперативно их исправлять.
 

Сравнение версий

25.11.2024 — выложена обновленная версия, которая использовалась в реальной работе компаний-заказчиков весь 2024 год. Исправлены ошибки, добавлены поля настройки при загрузке. Добавлена загрузка через ADO (скорость загрузки данных значительно выросла).

05.05.2024 — реализована загрузка в табличные части документов и справочников.

31 Comments

  1. primat

    Уважаемые пользователи, пишите здесь или через личные сообщения свои пожелания и замечания и идеи по развитию разработки.

    Reply
  2. CratosX

    (0)

    Внимание. Загрузка в табличную часть в данный момент не работает.

    Когда будет?

    Reply
  3. primat

    (2) CratosX, добрый день. Сделаю до понедельника (до 2го ноября).

    Reply
  4. woot

    Сегодня уже 7-е,не сделал)

    Reply
  5. primat

    Реализована загрузка в табличную часть объектов. В данный момент загружает таблицу данных только в одну табличную часть за раз и только в один выбранный вручную объект.

    Если пользователям понадобится, то добавлю поиск объектов, табличные части которых нужно дополнять строками.

    Также разработка сделана условно-бесплатной — за sm. Это изменение только на время доработки новой версии действует. Спешите пробовать обработку, скачивайте сейчас!

    Reply
  6. All_1972

    не работает

    Reply
  7. primat

    (6) All_1972, что не работает? Последние месяцы есть большая задача по загрузке из эксэля, в рамках ее дорабатываю обработку, сделал загрузку в табличную часть, много другого. Так что, возможно, уже исправил эту ошибку…

    Reply
  8. roofless

    (1) из коробки не заработало. на выходе имею пустой файл xls. плюс для моей задачи не подошло, тк нет отбора перед выгрузкой

    Reply
  9. primat

    (8) roofless, добрый день. А пример файла можете прислать? И описание задачи в личку.

    Reply
  10. roofless

    (9) задача тривиальная. перенести элементы справочника с отбором по группам из одной базы в другую (справочник в базе-приемнике тоже другой) по совпадающим реквизитам, т.е как минимум наименование и код.

    а файл самый обыкновенный пустой только что созданный из excel 2013

    Reply
  11. _Ramzes

    Добрый день!

    Скачал обработку, а она не работает!

    Первое с чем столкнулся — проблема поиска по стандартным реквизитам.

    ТипЗначенияРеквизита = ОбъектМетаданных.Реквизиты[Элемент.Ключ].Тип;

    Падает на полях Код и Наименование.

    Попробовал загрузку на Плане видов характеристик.

    Падает на поиске

    Иначе // поиск запросом по полям
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    «ВЫБРАТЬ
    | ТекущийСправочник.Ссылка
    |ИЗ
    | Справочник.» + Объект.ВидОбъекта + » КАК ТекущийСправочник
    |ГДЕ «;

    Показать

    Я выбрал на первой форме загрузку плана видов характеристик, а не справочник, однако в коде стоит жестко справочник.

    И естественно мы ловим на выходе ошибку

    {ВнешняяОбработка.ЗагрузкаИзExcelПоискПоСсылке.Форма.ФормаУправляемая.Форма(714)}: Ошибка при вызове метода контекста (Выполнить)

    Выгрузка = Запрос.Выполнить().Выгрузить();

    по причине:

    {(4, 2)}: Таблица не найдена «Справочник.ВопросыДляАнкетирования»

    <<?>>Справочник.ВопросыДляАнкетирования КАК ТекущийСправочник

    Хотя тип объекта выбран План видов характеристик

    Для загрузки использовал файл ЗагрузкаИзExcelПоискПоСсылке___2016_11_25.epf

    Reply
  12. roofless

    предлагаю сделать проверку на тип значения, и для пвх написать отдельный запрос. автор тут видимо косячнул

    Reply
  13. silver-747

    Пытаюсь в пустую базу закачать справочник номенклатуры. Запускаю обработку ВыгрузкаДанныхВExcelПоСсылкам_2015_10_16 выгружаю справочник из базы источника. Захожу в базу Приемник. Запускаю обработку ЗагрузкаИзExcelПоискПоСсылке___2016_11_25 файл выгрузки подгружается. Дальше по кнопке Настройка создания обьектов указываю ка загружать. А вот по кнопке Указать поля поиска элементов не могу понять что указывать. Надо просто загрузить полностью файл. Подскажите что надо выбрать что бы загрузились данные из файла

    Reply
  14. Velliar

    Для ее работы обязательно нужен установленный Excel, или хватит openoffice?

    Reply
  15. reg063

    не работает выгрузка

    Reply
  16. Filipp_inf

    Добрый день!

    Скачала все.

    Выгрузка не работает.

    Выбираю тип объекта: Справочник.

    Далее при выборе любого вида объекта выскакивает ошибка:

    «Основная таблица динамического списка задана неверно. Не задан ни текст запроса, ни основная таблица динамического списка.»

    Конфигурация 1С:ERP Управление предприятием 2 (2.2.3.162)

    1С:Предприятие 8.3 (8.3.10.2561).

    Пожалуйста, разберитесь с ошибкой.

    Reply
  17. user900137

    Здравствуйте. Подскажите, умеет ли Ваш загрузчик обрабатывать наименования товаров по заданным правилам (например, автоматически удалять двойные пробелы и переносы строки, преобразовывать различные виды черточек к единой и др.) и сопоставлять найденные в файле с содержимым справочника? А также, есть ли возможность ввода формул для расчета прайсовых колонок от цены поставщика или др.?

    Reply
  18. e-katerina

    Добрый день.

    Будет ли эта обработка работать в БП 3.0? В частности интересуют такие специфичные документы, как «требование-накладная» и «отчет производства за смену».

    Reply
  19. djolejek

    (17) Додрый день, нашли то что искали в вопросе? А то мне тоже самое нужно.

    Reply
  20. primat

    (17) Добрый день. Нет, не умеет.

    Reply
  21. primat

    (18) Добрый день. Да, должна.

    Reply
  22. aleksmen

    Здравствуйте !

    Скачал Вашу обработку, хотел потестить на типовой конфигурации УТ 11.4.х

    Открываю ее и загружаю exel-й файл. Выскакивают ошибки: «область не найдена» или «Значение не является значением объектного типа (Свойство)»

    Что то может не так делаю.. ?

    Reply
  23. Alex_8

    (21) Здравствуйте, а книгу покупок будет выгружать в excel?

    Reply
  24. foe12

    Здравствуйте, скачал вашу обработку и выскакивают ошибки при загрузке документа:

    1. {ВнешняяОбработка.ЗагрузкаИзExcelПоискПоСсылке.МодульОбъекта(1733)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.

    2. Ошибка. Возможно неверно указан номер листа книги Excel или файл занят. Текст ошибки: {ВнешняяОбработка.ЗагрузкаИзExcelПоискПоСсылке.МодульОбъекта(75)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «C:UsersМаксимDesktop1.xlsx». Это может быть вызвано одной из следующих причин.

    • Указан несуществующий файл или путь.

    • Файл используется другой программой.

    • Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.

    Файл существует, ничем не используется. В чем может быть проблема?

    Reply
  25. foe12

    Помогите разобраться, не загружается заказ клиента в базу.

    Reply
  26. EdSkyliner

    Скачал обработку. Выбираю Тип объекта «Справочник», Вид объекта «Контрагенты» и тут же выскакивает ошибка: «Основная таблица динамического списка задана неверно. Не задан ни текст запроса, ни основная таблица динамического списка».

    Конфигурация типовая Бухгалтерия предприятия КОРП 3.0

    Reply
  27. German_Tagil

    мда

    Reply
  28. CheBurator

    Спасибо. Подсказали про эту обработку. Попробую использовать.

    Reply
  29. CheBurator

    А для загрузки иерархии справочника (номенклатура, 77, ГУИД есть) — обработка загрузит?

    Reply
  30. CheBurator

    Ничего непонятно.

    Таблица (список групп номенклатуры) из трех колонок

    — Наименование (это наименование группы)

    — Ссылка (в виде гуид, это гуид группы)

    — Родитель (в виде гуид, это гуид родительской группы).

    Как настроить «соответствие» колонок экселя реквизитам справочника в базе?

    Почему на каждый чих ругается «Необходимо указать поля поиска. Первая группа полей является обязательной для заполнения.» В первой группе полей указана «Ссылка», в остальных — незаполнено. Этого по пояснениям настройки поиска должно быть достаточно — почему ругается и не пускает далее?

    Reply
  31. primat

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *