Как легко загружать данные из электронных таблиц (Excel, OpenOffice и т.д)










Как легко загружать данные из электронных таблиц (Excel, OpenOffice и т.д). На примере загрузки в табличную часть документа Поступление товаров и услуг в УТ 11.4.

На Инфостарте выложены более сотни разных обработок для загрузки в 1С, данных из табличных документов (Excel,OpenOffice и т.д). По моему мнению, 80% их функционала можно заменить стандартной обработкой загрузки из табличных документов с сайта 1С: 

Загрузка данных из табличного документа 8.2

Так же, появились версии данной обработки для управляемых форм. Вы их найдете на текущем сайте (см.например тут) или спросив у Яндекса.

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

Пример.  Необходимо заполнить документ — Поступление товаров и услуг по данным табличного документа:

Нам необходимо загрузить номенклатуру (колонка — наименование), штрихкод (колонка — штрихкод) в разрезе характеристик (колонка — размер и цвет) и дополнительные свойства номенклатуры (колонка — страна и производитель).

Подготовим базу:

Создадим вид номенклатуры — "Товары", укажем что у него есть характеристики и дополнительные реквизиты. Тип значения у всех: "Дополнительное значение".

Запустим обработку "Загрузка данных из табличного документа (управляемые формы)" (не забудьте предварительно скачать по ссылкам указанным выше).

Указываем,что мы будем загружать данные в табличную часть документа. Предварительно создаем документ — Поступление товаров и услуг, не заполняя в нем вкладку "Товары". После записи этот документ можно будет выбрать в текущей обработке, в окне "Ссылка". Так же указываем в текущей обработке что будем загружать данные в табличную часть — "Товары".Простым копипастом вставляем данные с электронной таблицы в табличный документ текущей обработки. И после этого нам остается перейти во вкладку "Настройка" и настроить заполнение данных:

Настраиваем данные как показано на рисунке.

Рассмотрим код использованный для заполнения следующих реквизитов:

 

 Номенклатура

 

 Характеристика

 

 Количество упаковок

 

 Количество (в единицах хранения)

 

 Цена

 

 Сумма

 

Основные обозначения:

— ТекстыЯчеек[2] — обозначает что данные находятся во второй колонке текущей строки.

— Результат — итог вычисления.

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

Непосредственно загрузка данных в базу происходит при нажатии в обработке ссылки — "Загрузить данные":

Итогом загрузки будет заполненная вкладка "Товары" документа Поступление товаров и услуг:

Соответственно можем видеть что номенклатура тоже создалась с необходимыми данными:

Итог. Использую эту универсальную обработку вы можете выполнять широкий круг задач — по загрузке из электронных таблиц данных в базу. Так же, с помощью этой обработки "Загрузка данных из табличного документа" — можно загружать данные в справочники и регистры сведении.

PS. Готовую настройку не забывайте сохранять по кнопке в настройках "Сохранить значения в файл", что бы в нужный момент быстро восстановить настройки:

 

28.05.19 Дополнительная статья — как загрузить картинки в справочник с помощью Универсальной загрузки из табличного документа

14 Comments

  1. Timur001

    Супер!

    Reply
  2. rasdag

    Файл настройки полученный в текущей публикации

    Reply
  3. German_Tagil

    примерно тоже самое перед Новым годом писал — правда на обычных формах

    Reply
  4. 80pav

    А можно ли создавать Группы (папки) для номенклатуры помощью универсальной обработки?

    Reply
  5. rasdag

    (4) Да. Код кстати присутствует в данной статье где «Номенклатура»:

    …….

    //Для номенклатуры группу заполним

    лТекст =»ВЫБРАТЬ

    | Номенклатура.ЭтоГруппа КАК ЭтоГруппа,

    | Номенклатура.Ссылка КАК Ссылка,

    | Номенклатура.Наименование КАК Наименование

    |ИЗ

    | Справочник.Номенклатура КАК Номенклатура

    |ГДЕ

    | Номенклатура.ЭтоГруппа = ИСТИНА

    | И Номенклатура.Наименование = &Наименование»;

    лЗапрос = Новый Запрос(лТекст);

    лЗапрос.УстановитьПараметр(«Наименование», СокрЛП(ГруппаНоменклатуры));

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

    Если тВыборка.Следующий() тогда

    //Группа существует — выберем ее

    новаяНоменклатура.Родитель = тВыборка.Ссылка;

    Иначе

    НовЭлемент = Справочники.Номенклатура.СоздатьГруппу();

    НовЭлемент.Наименование = СокрЛП(ГруппаНоменклатуры);

    НовЭлемент.Записать();

    новаяНоменклатура.Родитель = НовЭлемент.Ссылка;

    КонецЕсли;

    …….

    Только надо запустить обработку и выбрать загрузку не в «Табличную часть», а в «Справочник». С экселя вставить колонку с номенклатурой и напротив колонку с группой номенклатуры.

    В настройках в реквизите «Номенклатура» — разместить примерно этот код, допилив его под себя.

    Reply
  6. Olenevod

    По моему мнению, для такой обработки не хватает:

    1. Возможности загрузки нескольких документов. Например, нужно 100 и более.

    2. Кода для поиска элементов по приоритету — помечен на удаление или нет, при наличии дублей

    3. Универсальных функций поиска и преобразования и вывод сообщений о невозможности преобразования в число или дату и т.п.

    4. Поиска по GUID и присвоения его новой ссылке.

    Ну и вообще в целом для больших задач загрузки/миграции данных она слабовата.

    Но плюсик поставил) Подобным уже много маялся.

    Reply
  7. rasdag

    (6)

    Возможно и правы, а возможно:

    1. Загрузка сотни документов — достаточная редкая задача. Для этого конечно можно придумать свой велосипед.

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

    Reply
  8. qwinter

    (6) Все давно придумано https://infostart.ru/public/284674/

    Reply
  9. rasdag

    (8) Это публикация больше для программистов, чем для обычных пользователей, а уже программисты могут готовую настройку ставить пользователям. Ну и все это бесплатно, и работает не только для управляемых форм. А функционал в основном одинаковый.

    Reply
  10. qwinter

    (9) Так и Olenevod программист, а не обычный пользователь) хотя код вида

    справочники.ВидыНоменклатуры.НайтиПоНаименованию(«Товар»)

    тоже сложно назвать для «обычных пользователей»))

    Reply
  11. rasdag

    (10) Товариш просто не разобрался

    Reply
  12. 1977

    Добрый день. Скачал сайта 1с модуль ЗагрузкаДанныхИзТабличногоДокумента. По версией 1С:Комплексная автоматизация 2 (2.4.7.147).

    Интерфейс Такси отключал.

    Reply
  13. 1977

    ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2 — открывается. Спасибо.

    Reply
  14. German_Tagil

    Сделайте пожалуйста — прочитать из табличной части документа

    чтобы потом уже разом отредактировать и записать

    Reply

Leave a Comment

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