Как реализовать расчет оптимального раскроя сырья в 1С

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

При производстве пластиковой упаковки, полимерных пленок, профилей или листовых материалов регулярно возникает задача оптимального подбора и резки заготовок. Исходные материалы имеют фиксированные параметры (тип сырья, толщина), которые должны строго совпадать с заказом, а также геометрические размеры (ширину рулона или длину полотна), по которым необходимо выполнить раскрой. Разберем, какие математические алгоритмы лежат в основе этой задачи, как организовать архитектуру вычислений и правильно вести учет сырья и деловых отходов в 1С.

Математическая постановка: одномерная задача раскроя

Описанная задача в теории оптимизации классифицируется как одномерная задача раскроя (1D Cutting Stock Problem, CSP) или задача упаковки в контейнеры (Bin Packing Problem). Суть задачи заключается в том, чтобы удовлетворить заданную потребность в отрезках нужной ширины, используя имеющиеся на складе рулоны и минимизируя суммарный неиспользуемый остаток (отход).

Для решения этой задачи применяются два основных класса методов:

  1. Эвристические и жадные алгоритмы: методы приближенного расчета, такие как First Fit Decreasing (первый подходящий по убыванию) или Best Fit Decreasing (наилучший подходящий). При таком подходе требуемые размеры сортируются по убыванию и последовательно укладываются в доступные остатки так, чтобы минимизировать остающийся зазор. Эти алгоритмы работают практически мгновенно и дают отклонение от абсолютного оптимума всего в несколько процентов.
  2. Точные методы математического программирования: классический алгоритм Гилмора–Гомори на основе линейного программирования с генерацией столбцов, метод ветвей и границ, а также целочисленное программирование (MILP). Они гарантируют минимально возможный теоретический отход даже при сложной структуре заказов.
  3. Полный перебор (Brute Force): применим только для небольшого количества рулонов и вариантов реза, так как с ростом номенклатуры количество комбинаций растет экспоненциально.

Технологические ограничения реального производства

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

  1. Ширина реза (толщина лезвия/ножа): каждый механический рез забирает определенную ширину полотна, которая превращается в технологическую стружку или пыль.
  2. Боковой тримминг (кромка): края исходных рулонов часто имеют неровности или дефекты намотки, поэтому технологический регламент требует срезать кромку с обеих сторон (например, по 5–15 мм).
  3. Ограничения бобинорезательного оборудования: минимально и максимально допустимая ширина готовой полосы, а также предельное число ножей, устанавливаемых на вал за один проход.
  4. Стоимость переналадки: частая смена расстановки ножей на станке может стоить предприятию дороже, чем незначительный процент технологического отхода. Поэтому алгоритм должен группировать одинаковые схемы раскроя.

Архитектура реализации в системе 1С

Платформа 1С является средой бизнес-логики и не содержит встроенных математических матричных решателей для задач линейного программирования. Проанализируем возможные варианты архитектуры для реализации функционала:

  1. Реализация эвристики на встроенном языке 1С: для небольших производств алгоритмы сортировки и жадной укладки (FFD/BFD) можно написать непосредственно в модуле 1С. Это автономно, быстро выполняется и не требует внешних компонентов.
  2. Использование внешнего микросервиса (рекомендуемый подход): сложные расчеты линейного программирования выносятся во внешний сервис (написанный, например, на Python с использованием солверов PuLP, OR-Tools или специализированных утилит вроде VPSolver). 1С формирует HTTP-запрос с JSON-пакетом (остатки рулонов и потребности), сервис возвращает оптимальные карты раскроя, а 1С автоматически заполняет документы списания и выпуска.
  3. Интеграция со специализированным ПО для раскроя: выгрузка данных в отраслевые программы оптимизации раскроя через файлы обмена или COM-соединение.

Пример реализации эвристического алгоритма раскроя в 1С

Разберем базовый пример реализации алгоритма раскроя полос на встроенном языке 1С по принципу заполнения первого подходящего рулона с учетом ширины реза:


// Функция производит жадный расчет раскроя рулона на полосы
Функция РассчитатьРаскройРулона(ШиринаРулона, ТаблицаПотребностей, ШиринаНожа, Кромка) Экспорт

    РабочаяШирина = ШиринаРулона - (Кромка * 2);
    ТекущийОстаток = РабочаяШирина;
    
    Результат = Новый Структура;
    Результат.Вставить("ИспользованныеПолосы", Новый Массив);
    Результат.Вставить("ОстатокШирины", 0);
    Результат.Вставить("Успешно", Ложь);
    
    // Сортируем таблицу потребностей по убыванию требуемой ширины
    ТаблицаПотребностей.Сортировать("ТребуемаяШирина Убыв");
    
    Для Каждого СтрПотребность Из ТаблицаПотребностей Цикл
        Если СтрПотребность.Количество <= 0 Тогда
            Продолжить;
        КонецЕсли;
        
        ШиринаСУчетомНожа = СтрПотребность.ТребуемаяШирина + ШиринаНожа;
        
        Пока ТекущийОстаток >= СтрПотребность.ТребуемаяШирина И СтрПотребность.Количество > 0 Цикл
            Результат.ИспользованныеПолосы.Добавить(СтрПотребность.ТребуемаяШирина);
            ТекущийОстаток = ТекущийОстаток - ШиринаСУчетомНожа;
            СтрПотребность.Количество = СтрПотребность.Количество - 1;
        КонецЦикла;
    КонецЦикла;
    
    Результат.ОстатокШирины = ?(ТекущийОстаток > 0, ТекущийОстаток, 0);
    Результат.Успешно = (Результат.ИспользованныеПолосы.Количество() > 0);
    
    Возврат Результат;

КонецФункции

Организация учета сырья и отходов

Для корректной работы алгоритма раскроя в типовых или доработанных конфигурациях 1С необходимо правильно структурировать нормативно-справочную информацию и документооборот:

  1. Характеристики и серии номенклатуры: параметры сырья (толщина, тип пластика, ширина рулона) целесообразно выносить в реквизиты характеристик или серий. Это позволяет жестко фильтровать остатки на складе по совпадению типа и толщины.
  2. Деловой отход: если после раскроя остается отрезок, ширина которого превышает установленный технологический порог (например, более 50 мм), он должен автоматически приходоваться документом выпуска как возвратный деловой отход с присвоением новой характеристики (новой ширины) для последующего использования в других заказах.
  3. Технологический отход (лом/дробленка): мелкие обрезки и боковая кромка списываются на затраты производства или приходуются по весу как вторичное полимерное сырье для последующей грануляции.
← На главную