Сколько времени занимает загрузка цен из Excel в 1С:УНФ и почему вам могут назвать срок в две недели?

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

Каждый владелец бизнеса или менеджер по закупкам рано или поздно сталкивается с необходимостью регулярно обновлять цены от поставщиков в своей учетной системе. Когда файлов немного (всего 3–4 штуки), а объем строк в них скромный (около 300 строк в каждом), кажется, что это задача на несколько минут. Однако при обращении к программистам 1С заказчик неожиданно может услышать оценку: «На выполнение задачи потребуется две недели».

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

Реальные сроки: сколько длится загрузка «на бумаге» и на практике

Давайте разберем техническую сторону вопроса. Если файлы поставщиков идеально подготовлены, а в базе 1С уже созданы все соответствующие карточки товаров (номенклатура сопоставлена один-в-один), то процесс загрузки действительно занимает минимум времени:

  1. Ручной ввод: Если в файле всего 2-3 строки, их проще и быстрее перенести вручную прямо в документ установки цен.
  2. Типовые механизмы: Для файлов объемом до 300 строк ручная загрузка через стандартный интерфейс занимает около 5–10 минут на один файл. На этом объеме разница между быстрыми и медленными алгоритмами незаметна — запись в базу данных происходит за секунды.
  3. Программный импорт: Если написать простую обработку, чтение 300 строк через современные оптимизированные механизмы занимает менее одной секунды, а основное время уходит на проведение созданных документов в базе (около 5–10 секунд).

Тогда откуда берется срок в две недели? Дело в том, что «просто загрузить цифры из Excel» и «построить надежно работающий бизнес-процесс» — это две совершенно разные задачи.

Почему разработчики оценивают задачу в 2 недели?

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

  1. Разработка гибкого сопоставления данных. Редко когда наименования товаров у поставщика совпадают с вашей базой до символа. У одного написано «Смартфон Samsung S23», у другого — «Samsung Galaxy S23 Ultra 8/256Gb». Разработчику нужно создать алгоритм сопоставления по артикулам, штрихкодам или связать их через специальный регистр сведений «Номенклатура поставщиков».
  2. Сложная структура хранения информации. Как упоминалось в обсуждении на форуме, имя поставщика или другие важные параметры могут храниться в дополнительных реквизитах характеристик. Извлечение и запись таких данных требуют написания нетривиального кода, учитывающего специфику метаданных конкретной базы.
  3. Автоматический расчет цен продажи. Бизнесу обычно мало просто записать цену закупки. Нужно сразу рассчитать оптовые, мелкооптовые и розничные цены на основе заданных правил (наценок), причем эти правила могут зависеть от ценовой группы товара или бренда.
  4. Алгоритм выбора «лучшей цены». Если у вас 3–4 поставщика с пересекающимся ассортиментом, система должна автоматически анализировать все загруженные прайсы, находить наиболее выгодное предложение и подставлять его в заказы поставщикам.
  5. Автоматизация рутины (робот-загрузчик). Полноценное решение часто предполагает автоматическую работу: система по расписанию сама заходит на почту, скачивает вложенные файлы от поставщиков, распознает их структуру, обновляет цены в фоновом режиме и отправляет отчет на email руководителю.
  6. Обработка ошибок и тестирование. Файлы Excel могут прийти поврежденными, со сдвинутыми колонками, пустыми строками, ценами в виде картинок или текстовыми записями вместо чисел. Программа должна уметь корректно обрабатывать эти исключения, не ломая базу данных.

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

Инструмент 1: Встроенный ассистент загрузки в 1С:УНФ

Если бюджет ограничен, а требования минимальны, рассмотрим типовые инструменты конфигурации 1С:УНФ, которые доступны каждому пользователю «из коробки».

В современных редакциях 1С:УНФ (начиная с версий 1.6 и 3.0) присутствует мощный встроенный инструмент — ассистент «Загрузка данных из почты и файлов». Он позволяет существенно упростить процесс:

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

Инструмент 2: Чтение файлов XLSX программным кодом (для разработчиков)

Если стандартных возможностей УНФ недостаточно и вам необходимо написать собственную процедуру загрузки, крайне важно выбрать правильный технологический подход для чтения файлов Excel.

В процессе обсуждения специалисты упоминали технологии COM (объект Excel.Application) и ADO (работа с файлом как с базой данных). Однако современные стандарты разработки в среде 1С диктуют другие правила:

Проанализируем пример программного кода, который реализует быстрое чтение XLSX-файла на стороне сервера без использования сторонних библиотек:


&НаСервере
Процедура ПрочитатьПрайсЛистНаСервере(ПутьКФайлу)

    // Создаем объект табличного документа для загрузки файла
    ТабДок = Новый ТабличныйДокумент;
    
    Попытка
        // Нативное чтение файла XLSX средствами платформы 1С
        ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияТабличногоДокумента.XLSX);
    Исключение
        ЗаписатьЛогОшибок("Не удалось прочитать файл. Возможно, он поврежден. Ошибка: " + ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    ВысотаТаблицы = ТабДок.ВысотаТаблицы;
    
    // Начинаем обход строк со второй (пропуская шапку таблицы)
    Для НомерСтроки = 2 По ВысотаТаблицы Цикл
        
        // Получаем значения ячеек по номерам колонок
        АртикулПоставщика = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
        НаименованиеТовара = СокрЛП(ТабДок.Область(НомерСтроки, 2).Текст);
        ЦенаЗакупки = ТабДок.Область(НомерСтроки, 3).ТекущийРисунок(); // пример для картинок или текста
        
        // Преобразуем текстовое представление цены в число
        СтрокаЦены = СокрЛП(ТабДок.Область(НомерСтроки, 3).Текст);
        ЦенаЧислом = 0;
        Если НЕ ПустаяСтрока(СтрокаЦены) Тогда
            ЦенаЧислом = Число(СтрЗаменить(СтрокаЦены, " ", "")); // Убираем неразрывные пробелы
        КонецЕсли;
        
        // Пропускаем строки без артикула
        Если ПустаяСтрока(АртикулПоставщика) Тогда
            Продолжить;
        КонецЕсли;
        
        // Вызываем функцию поиска номенклатуры и регистрации цен в базе данных
        ОбработатьПолученнуюСтроку(АртикулПоставщика, НаименованиеТовара, ЦенаЧислом);
        
    КонецЦикла;

КонецПроцедуры

Этот лаконичный алгоритм работает чрезвычайно быстро. На чтение прайс-листа из 300 строк уйдут сотые доли секунды. Он стабильно отработает как на локальном компьютере под Windows, так и на производительном сервере под Linux.

Типовые технические сложности при импорте прайсов

Выясним, какие неочевидные проблемы могут возникнуть на этапе внедрения даже самого простого алгоритма загрузки:

Подведем итоги

Сколько времени займет загрузка цен в вашем случае?

Если ваша задача — разово загрузить несложные файлы, а номенклатура в базе уже заведена, не спешите заказывать дорогую разработку. Воспользуйтесь встроенным ассистентом «Загрузка данных из почты и файлов» в вашей 1С:УНФ. Вы потратите около часа на изучение инструкции и за 10 минут выполните задачу самостоятельно.

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

← На главную