Загрузка данных из электронных таблиц — одна из самых частых задач при запуске новой базы или автоматизации складского учета. В 1С:Бухгалтерия предприятия 3.0 (БП 3.0) существует несколько мощных инструментов для решения этой задачи, начиная от простых кнопок в документах и заканчивая специализированными обработками. Рассмотрим подробно, как загрузить не только названия товаров, но и их количество, стоимость и цены продаж, особенно когда файлов много.
В современных релизах БП 3.0 разработчики внедрили механизм прямой загрузки из Excel практически во все товарные документы. Если наша задача — разово завести остатки, которые уже есть на складе, мы воспользуемся документом Оприходование товаров.
Проанализируем шаги выполнения этой операции:
Excel-файла (колонки Номенклатура, Количество, Цена, Сумма) и вставить их в это окно.1С не узнала колонку автоматически, укажем ей соответствие вручную.Номенклатура, система подсветит их красным и предложит создать новые карточки прямо в процессе загрузки.Этот способ идеален для небольшого количества файлов, так как он позволяет сразу сформировать проводки по счету 41 (Товары) или 10 (Материалы).
Если мы только начинаем работать в новой информационной базе, правильнее будет использовать специализированный инструмент. Разберем работу с Помощником ввода остатков.
Этот механизм находится в разделе Главное — Помощник ввода остатков. Выберем в списке счет, по которому хотим ввести данные (например, 41.01). При создании документа ввода остатков мы также увидим кнопку Загрузить из файла. Преимущество этого метода в том, что он корректно закрывает баланс через вспомогательный счет 000 и позволяет сразу разнести остатки по партиям или складам в строгом соответствии с методологией бухгалтерского учета.
Для более сложных случаев, когда нужно загрузить иерархию папок, артикулы, штрихкоды или специфические реквизиты, типовой загрузки в документах может быть недостаточно. Здесь нам поможет универсальная обработка от разработчиков 1С.
Рассмотрим возможности этого инструмента:
Артикулу, Коду или Штрихкоду. Это критически важно, если названия в Excel и в базе немного различаются.Проанализируем процесс настройки: в поле "Куда загружать" выбираем Справочник, объект — Номенклатура. Настраиваем соответствие полей. Важно помнить про Единицу измерения: если она не заполнена в файле, в настройках обработки можно указать фиксированное значение (например, "шт").
Стоимость, которую мы загрузили в документы оприходования, — это себестоимость. Но для полноценной работы нам нужно загрузить цены, по которым мы будем продавать товар. Для этого используется документ Установка цен номенклатуры (раздел Склад или Продажи).
В этом документе также реализован механизм загрузки. Нажмем Изменить — Добавить товары из файла. Программа подтянет список номенклатуры и позволит проставить цены для выбранного типа цен (Оптовая, Розничная и т.д.). После проведения документа данные запишутся в регистр сведений Цены номенклатуры.
Когда перед нами стоит задача обработать более 80 файлов, открывать каждый и нажимать "Загрузить" становится нерационально. Рассмотрим два способа автоматизации процесса:
1. Объединение файлов средствами Excel (Power Query).
Выясним, как упростить задачу до загрузки в 1С. В самом Excel можно создать один мастер-файл, который будет собирать данные из папки со всеми 80 файлами. С помощью надстройки Power Query (Данные — Получить данные — Из папки) мы объединяем все таблицы в одну. После этого загружаем один большой файл в 1С через типовую загрузку, описанную в Методе 1. Это самый быстрый путь, не требующий программирования.
2. Программная обработка через COM-соединение.
Если же требуется полная автоматизация, программист может написать цикл обхода файлов в папке. Посмотрим на пример логики, которую можно реализовать в коде:
// Пример обхода файлов в папке
МассивФайлов = НайтиФайлы(ПутьКПапке, "*.xlsx");
Для Каждого Файл Из МассивФайлов Цикл
// Создаем объект Excel
ExcelПриложение = Новый COMОбъект("Excel.Application");
Книга = ExcelПриложение.Workbooks.Open(Файл.ПолноеИмя);
Лист = Книга.Sheets(1);
// Здесь реализуется чтение строк и создание документа ОприходованиеТоваров
// ...
Книга.Close(Ложь);
ExcelПриложение.Quit();
КонецЦикла;
Использование COMОбъект("Excel.Application") позволяет программе работать в фоновом режиме, последовательно открывая и считывая данные из каждого файла. Однако стоит помнить, что для этого метода на сервере или компьютере, где выполняется код, должен быть установлен Microsoft Excel.
При загрузке данных важно обращать внимание на следующие моменты:
Артикул).1С (обычно это классификатор ОКЕИ).Счета учета номенклатуры. Тогда программа сама поймет, что товар должен лечь на счет 41.01, а материал — на 10.01.Таким образом, мы выяснили, что для разовой загрузки лучше использовать встроенные кнопки в документах Оприходование товаров, а для массовой обработки большого количества файлов эффективнее будет предварительная консолидация данных в Excel или написание небольшой автоматизированной обработки.