Как в 1С:Бухгалтерии 3.0 загрузить счет покупателю из Excel по штрихкоду?

Пользователь 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Торговля и дистрибуция
← На главную

Часто при работе с крупными клиентами или маркетплейсами возникает задача: сформировать в 1С счет на оплату на основе файла Excel, который прислал покупатель. Стандартная загрузка в 1С:Бухгалтерии 3.0 позволяет находить товары по наименованию или артикулу. Но что делать, если в файле заказчика эти данные отличаются от тех, что хранятся в вашей базе, а единственное надежное совпадение — это штрихкод товара? Рассмотрим, как решить эту проблему.

Исходная ситуация: имеется файл Excel со списком товаров для счета. В файле есть колонки со штрихкодом, количеством и ценой. Необходимо автоматически заполнить табличную часть документа Счет покупателю, находя номенклатуру в базе 1С именно по штрихкоду.

Анализ стандартных возможностей 1С:Бухгалтерия 3.0

Давайте разберемся, почему стандартный механизм не подходит. В документе Счет покупателю есть кнопка "Загрузить из файла". Этот инструмент действительно позволяет загружать данные из электронных таблиц, но при настройке сопоставления колонок мы увидим, что для идентификации номенклатуры можно использовать только:

К сожалению, поля "Штрихкод" в списке реквизитов для поиска нет. Это означает, что типовой функционал программы не предусматривает загрузку с идентификацией по штрихкоду. При этом сама программа отлично умеет хранить и использовать штрихкоды: в карточке номенклатуры есть специальная ссылка "Штрихкоды", где можно задать один или несколько кодов для товара. Эти штрихкоды хранятся в регистре сведений Штрихкоды номенклатуры, и именно к нему нам нужно будет обращаться.

Поскольку готового решения "из коробки" нет, для реализации такой загрузки потребуется доработка. Рассмотрим наиболее правильный и безопасный способ.

Решение: Создание расширения конфигурации для загрузки по штрихкоду

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

Задача для программиста будет выглядеть следующим образом. Разберем ее по шагам.

  1. Добавление кнопки на форму документа

    Первым делом в расширении необходимо добавить на форму документа Счет покупателю новую кнопку, например, "Загрузить из Excel (по штрихкоду)". Ее можно разместить рядом со стандартной кнопкой "Загрузить из файла".

  2. Создание процедуры обработки

    К этой кнопке привязывается команда, которая будет запускать процедуру загрузки. Эта процедура должна выполнять следующие действия:

    • Открыть диалоговое окно для выбора файла Excel, из которого будут загружаться данные.
    • Подключиться к выбранному файлу и прочитать его содержимое. Обычно это делается с помощью объекта COMОбъект("Excel.Application") или через работу с табличными документами, если файл сохранен в формате .mxl или .xlsx.
    • В цикле обойти все строки файла, начиная со второй (первая обычно содержит заголовки колонок).
  3. Поиск номенклатуры по штрихкоду

    Это ключевой этап. Для каждой строки из файла Excel мы извлекаем значение из колонки со штрихкодом. Затем необходимо выполнить запрос к базе данных 1С, чтобы найти, какой номенклатуре принадлежит этот штрихкод. Запрос будет обращаться к регистру сведений Штрихкоды номенклатуры.

    Пример такого запроса на языке 1С может выглядеть так:

    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ШтрихкодыНоменклатуры.Владелец КАК Номенклатура
        |ИЗ
        |   РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        |ГДЕ
        |   ШтрихкодыНоменклатуры.Штрихкод = &Штрихкод";
    
    Запрос.УстановитьПараметр("Штрихкод", ШтрихкодИзФайла);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    

    Если запрос вернул результат (Выборка.Следующий()), значит, номенклатура найдена, и мы можем использовать ее (Выборка.Номенклатура) для добавления в счет.

  4. Заполнение табличной части счета

    Если номенклатура по штрихкоду найдена, создаем новую строку в табличной части Товары документа Счет покупателю и заполняем ее данными из файла:

    • Номенклатура: подставляем найденное значение.
    • Количество: берем из соответствующей колонки Excel.
    • Цена: берем из колонки с ценой.
    • Сумма: рассчитается автоматически.
    
    Если Выборка.Следующий() Тогда
        // Номенклатура найдена
        НоваяСтрока = Объект.Товары.Добавить();
        НоваяСтрока.Номенклатура = Выборка.Номенклатура;
        НоваяСтрока.Количество = КоличествоИзФайла;
        НоваяСтрока.Цена = ЦенаИзФайла;
        // Остальные реквизиты, например, ставка НДС, могут подставиться автоматически
        // из карточки номенклатуры.
    Иначе
        // Номенклатура не найдена
        Сообщить("Для штрихкода '" + ШтрихкодИзФайла + "' номенклатура не найдена в базе!");
    КонецЕсли;
    

    Важно продумать обработку ошибок. Что делать, если для какого-то штрихкода из файла номенклатура в базе не найдена? Обработка должна информировать об этом пользователя, например, выводя сообщение со списком "проблемных" штрихкодов в конце загрузки.

Как добавить отображение штрихкода в счете?

Автор исходного вопроса также интересовался, как можно вывести штрихкод в самом счете. Здесь есть два варианта:

  1. Добавить колонку на форму документа. Чтобы видеть штрихкод прямо в табличной части на экране, потребуется небольшая доработка формы через то же расширение. Нужно добавить новый реквизит в табличную часть формы (не в сам объект базы данных) и при загрузке или выборе номенклатуры заполнять его основным штрихкодом из регистра.
  2. Вывести штрихкод в печатную форму. Это более частая задача. Проще всего ее решить, подключив внешнюю печатную форму. В интернете можно найти готовые варианты печатных форм счета, которые выводят штрихкод товара либо в числовом виде, либо даже в виде графического изображения. Подключение такой формы не требует программирования и выполняется в пользовательском режиме в разделе Администрирование – Печатные формы, отчеты и обработки.

Итог

Хотя стандартные средства 1С:Бухгалтерии 3.0 не позволяют загружать данные в счет по штрихкоду, эта задача является стандартной и решается с помощью небольшой доработки. Самый правильный и рекомендуемый путь — создание расширения конфигурации, которое добавит необходимую кнопку и логику загрузки. Это позволит автоматизировать рутинную операцию, сэкономить время и избежать ошибок ручного ввода, особенно при работе с большими заказами от клиентов, использующих свою систему наименований.

← На главную