Размер шрифта
Цвет фона и шрифта
Изображения
Озвучивание текста
Обычная версия сайта
Интегратор по CRM решениям - АКАМ
Интегратор CRM систем
+7-495-481-60-08
+7-495-481-60-08
E-mail
sale@akam.ru
Адрес
Москва, Дмитровское шоссе, д. 9, стр. 2, этаж 4, офис 458
Режим работы
Пн. – Пт.: с 9:30 до 18:00
Решения
  • B2B кабинеты
  • Разработки АКАМ
  • Типовые решения
1С:Предприятие.Элемент
  • О технологии
  • Стоимость лицензий
  • Новое в версии 7.0
Услуги
  • Аудит CRM-систем
  • Внедрение CRM-систем
  • Корпоративное сопровождение CRM
  • Интеграция 1С-Рарус с телефонией
  • Обследование CRM-систем
  • Внедрение CRM-систем
  • Корпоративное сопровождение 1C:CRM
  • Настройка Интеграции 1С-Рарус с телефонией
Статьи
Клиенты и кейсы
О компании
  • Вакансии
  • Сертификаты
  • Новости
  • Цены
    • Услуги
    • Решения АКАМ
    • 1С:CRM
    • 1С:Предприятие, лицензии
  • Отзывы
  • Реквизиты
  • Контакты, офисы
Контакты
Интегратор по CRM решениям - АКАМ
Интегратор CRM систем
Разработка B2B-кабинетов
+7-495-481-60-08
+7-495-481-60-08
E-mail
sale@akam.ru
Адрес
Москва, Дмитровское шоссе, д. 9, стр. 2, этаж 4, офис 458
Режим работы
Пн. – Пт.: с 9:30 до 18:00
Решения
  • B2B кабинеты
  • Разработки АКАМ
  • Типовые решения
1С:Предприятие.Элемент
  • О технологии
  • Стоимость лицензий
  • Новое в версии 7.0
Услуги
  • Аудит CRM-систем
  • Внедрение CRM-систем
  • Корпоративное сопровождение CRM
  • Интеграция 1С-Рарус с телефонией
  • Обследование CRM-систем
  • Внедрение CRM-систем
  • Корпоративное сопровождение 1C:CRM
  • Настройка Интеграции 1С-Рарус с телефонией
Статьи
Клиенты и кейсы
О компании
  • Вакансии
  • Сертификаты
  • Новости
  • Цены
  • Отзывы
  • Реквизиты
  • Контакты, офисы
Контакты
    Интегратор по CRM решениям - АКАМ
    +7-495-481-60-08
    +7-495-481-60-08
    E-mail
    sale@akam.ru
    Адрес
    Москва, Дмитровское шоссе, д. 9, стр. 2, этаж 4, офис 458
    Режим работы
    Пн. – Пт.: с 9:30 до 18:00
    Интегратор по CRM решениям - АКАМ
    Разработка
    B2B-кабинетов
    Телефоны
    +7-495-481-60-08
    E-mail
    sale@akam.ru
    Адрес
    Москва, Дмитровское шоссе, д. 9, стр. 2, этаж 4, офис 458
    Режим работы
    Пн. – Пт.: с 9:30 до 18:00
    Интегратор по CRM решениям - АКАМ
    • Решения
      • Решения
      • B2B кабинеты
      • Разработки АКАМ
      • Типовые решения
    • 1С:Предприятие.Элемент
      • 1С:Предприятие.Элемент
      • О технологии
      • Стоимость лицензий
      • Новое в версии 7.0
    • Услуги
      • Услуги
      • Аудит CRM-систем
      • Внедрение CRM-систем
      • Корпоративное сопровождение CRM
      • Интеграция 1С-Рарус с телефонией
      • Обследование CRM-систем
      • Внедрение CRM-систем
      • Корпоративное сопровождение 1C:CRM
      • Настройка Интеграции 1С-Рарус с телефонией
    • Статьи
    • Клиенты и кейсы
    • О компании
      • О компании
      • Вакансии
      • Сертификаты
      • Новости
      • Цены
        • Цены
        • Услуги
        • Решения АКАМ
        • 1С:CRM
        • 1С:Предприятие, лицензии
      • Отзывы
      • Реквизиты
      • Контакты, офисы
    • Контакты
    • +7-495-481-60-08
      • Телефоны
      • +7-495-481-60-08
    • Москва, Дмитровское шоссе, д. 9, стр. 2, этаж 4, офис 458
    • sale@akam.ru
    • Пн. – Пт.: с 9:30 до 18:00

    Оптимизация загрузки Excel-файлов

    Главная
    —
    Статьи
    —
    Программирование
    —Оптимизация загрузки Excel-файлов
    Автор
    Анастасия Петрова
    Дата публикации:
    3 сентября 2025
    Время чтения:
    6 минут

    Введение

    В современной бизнес-среде работа с Excel-файлами стала неотъемлемой частью повседневной деятельности. Однако при обработке массивов данных большого объёма возникают серьёзные проблемы с производительностью системы.

    Исходная ситуация

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

    Анализ проблем производительности

    Исходный код загрузки выглядел следующим образом:

    НомерСтроки = 2;
    
    Пока ЗначениеЗаполнено(Sheet.Cells(НомерСтроки, 1).Value) Цикл
        НоваяСтрока = ТаблицаПрайса.Добавить();
        НоваяСтрока.КодНСИ = Sheet.Cells(НомерСтроки, СтолбецКодНСИ).Value;
        НоваяСтрока.Цена = Sheet.Cells(НомерСтроки, СтолбецЦена).Value;
        НаименованиеВидаЦен = Sheet.Cells(НомерСтроки, СтолбецВидыЦен).Value;
        НоваяСтрока.ВидЦены = ВидЦенаПоНаименованию(НаименованиеВидаЦена);
    КонецЦикла;
    
    Функция ВидЦенаПоНаименованию(НаименованиеВидаЦена)
    Возврат Справочники.ВидыЦен.НайтиПоНаименованию(НаименованиеВидаЦена);
    КонецФункции
    

    Выявленные проблемы

    1. Последовательное чтение ячеек методом Sheet.Cells(НомерСтроки, НомерСтолбца).Value:
      Время чтения одной ячейки — 0,03 секунды.
      При 120 000 ячеек (40 000 строк × 3 колонки) общее время — 60 минут.
    2. Проверка заполненности каждой ячейки на каждой итерации — 20 минут.
    3. Поиск по наименованию в справочнике:
      Каждый запрос занимает 0,09 секунды, при 40 000 строк — 60 минут.

    Решения и оптимизация

    1. Чтение колонок таблицы вместо последовательного чтения каждой ячейки:
      Sheet.Range(Sheet.Cells(НачальнаяСтрока,СтолбецЦеноваяГруппа), Sheet.Cells(КоличествоСтрок, СтолбецЦеноваяГруппа)).Value.Выгрузить()
      Время чтения столбца — 0,1 секунды.
    2. Определение количества строк через метод:
      Sheet.Cells(1,1).SpecialCells(11).Row
      Время чтения — 0,04 секунды.
    3. Оптимизация поиска через использование соответствий:
      • Время поиска в соответствии — 0,000015 секунды.
      • Сокращение времени с 20 минут до 0,6 секунды.
      • Итоговый оптимизированный код

        КоличествоСтрок = Sheet.Cells(1,1).SpecialCells(11).Row;
        
        МассивКодНСИ = Sheet.Range(Sheet.Cells(2,СтолбецКодНСИ), Sheet.Cells(КоличествоСтрок, СтолбецКодНСИ)).Value.Выгрузить();
        МассивКодНСИ = МассивКодНСИ[0];
        
        МассивЦена = Sheet.Range(Sheet.Cells(2,СтолбецЦена), Sheet.Cells(КоличествоСтрок, СтолбецЦена)).Value.Выгрузить();
        МассивЦена = МассивЦена[0];
        
        МассивВидЦены = Sheet.Range(Sheet.Cells(2,СтолбецВидыЦен), Sheet.Cells(КоличествоСтрок, СтолбецВидыЦен)).Value.Выгрузить();
        МассивВидЦены = МассивВидЦены[0];
        
        Счетчик = 0;
        
        СоответствиеВидовЦен = СоответствиеВидовЦен();
        
        Пока Счетчик <> КоличествоСтрок Цикл
            НоваяСтрока = ТаблицаПрайса.Добавить();
            НоваяСтрока.КодНСИ = МассивКодНСИ[Счетчик];
            НоваяСтрока.Цена = МассивЦена[Счетчик];
            НаименованиеВидаЦен = МассивВидЦены[Счетчик];
            НоваяСтрока.ВидЦены = СоответствиеВидовЦен.Получить(НаименованиеВидаЦен);
            Счетчик = Счетчик + 1;
        КонецЦикла;
        
        Функция СоответствиеВидовЦен()
            СоответствиеВидовЦен = Новый Соответствие;
        
            Запрос = Новый Запрос;
            Запрос.Текст =
                "ВЫБРАТЬ
                | ВидыЦен.Ссылка КАК Ссылка,
                | ВидыЦен.Наименование КАК Наименование
                |ИЗ
                | Справочник.ВидыЦен КАК ВидыЦен";
        
            РезультатЗапроса = Запрос.Выполнить();
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                СоответствиеВидовЦен.Вставить(ВыборкаДетальныеЗаписи.Наименование, ВыборкаДетальныеЗаписи.Ссылка);
            КонецЦикла;
        
            Возврат СоответствиеВидовЦен;
        КонецФункции
        

        Результаты оптимизации

        Ключевые достижения:

        • Время обработки сократилось с 2,5 часа до 1 минуты
        • Ускорение процесса в 150 раз
        • Существенное снижение нагрузки на систему

        Выводы

        Предложенные методы оптимизации могут быть успешно применены в любых проектах, где требуется:

        • Обработка больших Excel-файлов
        • Массовая загрузка данных, как для постоянной загрузки, так и для разовой миграции данных

        Такой подход позволяет значительно повысить производительность системы при минимальных изменениях в архитектуре решения.

    Назад к списку
    • 1С:Предприятие.Элемент 10
    • Интеграции 8
    • Методики 22
    • Обучение 18
    • Отрасли 2
    • Переход на 1C:CRM 13
    • Программирование 14
    • Решения АКАМ 20
    • Юридические 3
    CRM Администрирование Оптимизация Печатные формы Проекты Торги Управление задолженностью Учёт
    Страницы, которые просматривают сейчас
    Кейс по внедрению 1С:CRM. Модуль для 1С:ERP и 1С:КА2 для ТД "ТУЛА-СТАЛЬ" Реализация комплексного проекта по импортозамещению иностранной CRM-системы на решение российского производства 1С:CRM. Продукт "АКАМ: Модуль ТОРГИ для 1С:CRM" включен в реестр российского ПО Кейс по внедрению 1С:Управление торговлей и взаимоотношениями с клиентами (CRM) для EMTG Кейс по внедрению 1С:CRM. Модуль для 1С:ERP и 1С:КА2 для КРАССА-КОСМЕТИКС
    Подписывайтесь
    на новости и акции
    О компании
    Вакансии
    Отзывы
    Сертификаты
    Новости
    Реквизиты
    Цены
    Контакты
    Типовые решения
    1С:CRM ПРОФ
    1C:CRM КОРП
    АКАМ:Инвестиционные проекты
    АКАМ:Торги (TRM)
    АКАМ: Управление задолженностью
    Услуги
    Аудит CRM-систем
    Внедрение CRM-систем
    Корпоративное сопровождение CRM
    Интеграция 1С-Рарус с телефонией
    Обследование CRM-систем
    Внедрение CRM-систем
    Корпоративное сопровождение 1C:CRM
    Настройка Интеграции 1С-Рарус с телефонией
    Обследование CRM систем
    Внедрение 1C:CRM
    Настройка Интеграции с телефонией
    Корпоративное сопровождение 1C:CRM
    Разработка корпоративных порталов
    Клиенты и кейсы
    Статьи
    Акции
    +7-495-481-60-08
    +7-495-481-60-08
    E-mail
    sale@akam.ru
    Адрес
    Москва, Дмитровское шоссе, д. 9, стр. 2, этаж 4, офис 458
    Режим работы
    Пн. – Пт.: с 9:30 до 18:00
    sale@akam.ru
    Москва, Дмитровское шоссе, д. 9, стр. 2, этаж 4, офис 458
    © 2026 Интегратор по CRM решениям - АКАМ
    Политика конфиденциальности
    Версия для слабовидящих
    Главная Каталог Услуги Клиенты и кейсы Компания Статьи
    Наш сайт использует cookies. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с политикой Ок