Была поставлена задача обновления справочника в одной базе по данным из другой. Причем база-источник УТ 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.
- Конфигурации источник и приемник могут быть любыми, работающими в интерфейсе Управляемые формы или Такси.
- Код обработки открыт. Возможно любое редактирование по Вашему желанию. Запрещается только размещение в интернете или другое массовое распространение.
- Принимаются пожелания по развитию обработки. Если пожелание признается полезным, то реализуется, разумеется, бесплатно.
- Возможна платная доработка под Ваши потребности. С деталями задачи обращайтесь через личные сообщения.
- Ошибки и замечания пишите в комментариях к публикации, будем стараться оперативно их исправлять.