Итак, недостатки и недостающий функционал. Давайте разбираться подробно.
Первым пунктом было упомянуто отсутствие возможности автоматизации раскладки изделий разного размера на печатный лист. Это действительно проблема.
В общем случае, если стоит задача изготовить изделия разного размера в разынх количествах, то наиболее оптимальный вариант их размещение на формате будет предполагать одновременную "игру в пятнашки" с изделиями разного размера.
При создании модуля автоматизированного расчёта раскладки я очень хорошо осознавал это.
Проблема оказалось в том, что при раскладке изделий одинакового размера используется относительно простой алгоритм, в котором просто путём перебора анализируются варианты раскладки и среди них выбирается наиболее оптимальный (с точки зрения минимального кол-ва обрезков).
В то же время, при автоматизации раскладки изделий разных размеров алгоритм перебора "в лоб" уже не годится. Теоретически им наверное можно было бы воспользоваться, если речь идёт о двух вариантах размеров которые надо разложить, но если речь идёт о большем числе - алгоритм перебора не справится, т.к. эта задача перекликается с классической Задачей коммивояжёра и требует более сложных алгоритмов.
Беглый поиск в интернете показал, что по данной теме люди пишут целые кандидатские диссертации ))) И их турды используются, в частности, в легкой промышленности, где происходит раскладка на ткань (роскрой) изделий разного размера и, более того, неправильной/криволинейной формы. Там такой научный подход кажется оправданным, т.к. при "больших тиражах" экономия, скажем, 0.1 кв.м. ткани на каждом погонном метре выливается в ощутимые цифры, когда этих метров погонных тысячи и ткань дорогая...
В итоге было принято решений не лезть в эти дебри, т.к. затраты на разработку такого модуля расчёта были бы черезмерны и не оправданы.
К счастью, голова каждого печатника/препресс-инженера сама по себе, даже без диссертации, - отличный инструмент для такой "игры в пятнашки" ))) Без всяких там алгоритмов и тому подобных вещей...
В частности в нашей компании при поступлении заказа состоящего из печати изделий разного размера на одном материале происходит следующее:
До того, как мы начали пользоваться системой: препресс-инженер брал в работу все эти разные изделия, крутил/вертел их, комбинировал, приходил к какому-то решению (не факт что самому оптимальному, но всётаки), сообщал менеджеру итоговое кол-во материала и только тогда менеджер мог сообщить (или уточнить) цену клиенту.
После появления системы: такой заказ разбивается на части, каждая из которых представляет собой печать изделий одинакового размера, далее менеджер делает просчёт каждой части, причём ему не нужен препресс-инженер, т.к. система справляется сама с такими расчётами. Менеджер называет цену клиенту, это всё занимает 2-3 минуты, а то и меньше.
Если клиент соглашается - заказ передаётся в работу препресс-инженеру, который уже смотрит - если можно что-то скомбинировать, то он комбинирует (возможно даже с заказами других клиентов), при этом ничего в системе не меняется, ведь система провела расчёт (и списание материалов) исходя из отдельного заказа для каждого размера изделия для каждого клиента. Далее препресс-инженер устно (или в через комментарии в системе) передаёт печатнику информацию о проведенных комбинациях, тот, в свою очередь, учитывает это в своей работе. Ну а в системе печатник делает отметки о готовности фазы печати для заказов в том виде в котором они посчитаны менеджером, т.е. без комбинирования.
В итоге всей это затеи, к концу месяца возможно появляется некоторый бонус, в виде некоторого кол-ва материала, которое уже оплачено заказчиком, но сэкономлено на стадии производства.
Но для нас это побочный эффект, т.к. главная цель использования системы - это ускорение работы! Главное то, что менеджер может назвать клиенту цену заказа (на основании расчёта, пусть и с дроблением заказа на части, и с не очень эффективным использованием материала, за который клиенту придётся переплатить) и возможность его изготовления (на основании данных о наличии материала, учёт которого автоматически ведётся системой) всего за несколько десятков секунд! без каких-либо уточнений на производстве, складе и т.п. В этом вся "сила" системы )))
Конечно, было бы здорово иметь модуль расчёта, который мог бы автоматизировать раскладку на формат изделий разного размера... но увы, что имеем - то имеем, причины "почему так" описаны выше...
Идём дальше, проблема с отсутствием учёта обрезков.
К сожалению, Фастпринт не имел достаточного опыта по ШФ печати, и такой важный момент, как учёт обрезков остался упущенным при разработке ШФ-модуля системы.
Но давайте разберёмся подробнее, так ли всё плохо, и как вообще можно вести учёт обрезков.
Вообще, какие бывают обрезки:
С рулонными обрезками, как правило, "проблем нет", т.к. их учёт пожалуй не нужен. Теоретически конечно же бывают ситуации, когда такие обрезки можно использовать для печати, но тут возникает масса вопросов - что это за обрезок? Это узкий рулон или это уже не рулон, а лист... Если это рулон - как его хранить, ведь втулки для намотки у него уже нету, да и вряд ли можно на втулку намотать 2-3 м.п. материала. Если это лист - тоже непонятно - где его хранить, как его хранить, как поддерживать актуальным перечень обрезков... короче мрак... )))
С обрезками листовых материалов так же есть нюансы, но с ними приходится мириться ввиду специфики некторых листовых материалов и ШФ-принтеров для печати на них. Речь, конечно, же идёт об огромных планшетных принтерах и материалах поставляемых в листах формата 1х2м, 2х3м и им подобным.
Здесь у нас те же самые обрезки, тот же самый разнобой по размерам этих обрезков, разница лишь в том, что ввиду большого размера исходного формата, эти обрезки могут быть достаточно большими и, следовательно, ценными... с точки зрения их стоимости...
Получается, что надо как-то вести их учёт. Только нужно следить за тем, чтобы затраты (человеко-часы) на учёт этих обрезков были меньше, чем стоимость самих обрезков. В противном случае эффекта от затеи не будет, ну разве что для окружающей среды - меньше обрезков - меньше мусора - чище планета.
Итак, как учитывать обрезки.
Я не хочу здесь рассуждать слишком теоретически, т.к. немножко представляю как выглядит ШФ-производство, с большими планшетниками ))) Где там печатники, где менеджеры, на каком расстоянии они находятся, какие могут быть типовые размеры заказов. Поэтому давайте рассуждать практически... В конце концов, мы ведь должны автоматизировать рабочий процесс живой компании, а не какой-то там теоретической, абстрактной )))
Пример. Допустим, закупили мы 10 листов пластика в формате 2х3 метра. Менеджеры об этом знают, знают что у нас есть 60 квадратов пластика. Ура! Можно работать - продавать. Идут заказы, заказывают изделия размером в районе A2, А1, А0, в общем в любом размере, но не более 2х3 метра конечно. Менеджеры считают, печатники/препрессеры возможно чего-то там комбинируют, печатают и т.д.
При расчёте цены заказа для клиента, у менеджера, пожалуй, не подымается рука считать заказчику, который заказывает одно изделие размером А1, цену всего листа (2х3м) пластика. И он (менеджер) считает площадь необходимого материала равной площади печати, А1. А цена обрезков, она "как бы" включается в цену материала. Тут конечно возможны варианты, смотря как у кого принято.
Вообще, давайте прикинем, как может происходит расчёт заказов и учёт материала, рассмотрим варианты:
Цена материала для клиентов сознательно завышена на 10-15%, чтобы покрывать убытки от обрезков. Эта цена включена в цену печати, вы продаёте печать и материал не отдельно, а только вместе, "под ключ". Учёт материала не ведётся или ведётся постфактум, исходя из объёма (в кв.м.) продаж... ну плюс возможно накидывается что-то на брак... со временем опытный управляющий уже и сам знает - сколько надо кв.м. материала, чтобы продать столько-то кв.м. печати на нём.... Это просто. Такой режим есть в Фастпринт ERP.
При расчёт заказа к цене (или к площади материала, без разницы - эффект тот же) материала прибавляется те же 10-15% или какое-то другое значение, которое, возможно, высчитывается по какой-то хитрой формуле или, исходя из опыта менеджера, берётся "из головы". Учёт материала не ведётся или ведётся постфактум, исходя из объёма (в кв.м.) продаж... ну плюс возможно накидывается что-то на брак... со временем опытный управляющий уже и сам знает - сколько-надо кв.м. материала, чтобы продать столько то кв.м. печати на нём.... Это тоже просто.
Менеджер одевает фуфайку, бежит в цех к печатнику/препресс-инженеру с вопросом о том сколько будет обрезков если печатать с целых листов, можно ли напечатать на обрезках из предыдущих заказов, получает через какое-то время точную цифру, умножает на "прайс" и сообщает итоговую цену клиенту. Это уже сложно и долго. Клиенту такое может не понравится. Смею предположить, что таким почти никто не занимается, а если занимается, то в редких случаях.
Менеджер элементарно вычисляет сколько нужно целых листов на печать заказа, называет цену заказчику исходя из стоимости целых листов. Далее в любой самой паршивой программе складского учёта списывает данное кол-во листов со склада. В итоге расчёт прост и учёт материала ведётся. Ура. НО! Если для листов формата А3, А2, А1 такое может с натяжкой "прокатить", то для формата 2х3 метра - вряд ли, т.к. слишком велика может оказаться переплата заказчиком, особенно на малых тиражах. Собственно говоря, такой вариант реализован в Фастпринт ERP.
Идеальный вариант. Так же возможен в Фастпринт ERP. Менеджер вводит в систему размер изделия, кол-во. Система автоматически расчитывает как бы так наиболее эффективно разложить заказ на целые листы и на обрезки, база данных которых так же ведётся системой. В итоге (через 1 секунду) получает точную цену и называет её заказчику. Спросите меня - может ли так Фастпринт ERP. Мой ответ - да, может! Но тут есть "НО"! Заключается оно вот в чём. Для того чтобы реализовать такой вариант учёта нужно:
все обрезки, которые "чего-то стоят" заново добавлять (как приход от поставщика) в систему
при этом можно либо создавать в системе новый формат для каждого нового размера обрезков
либо - придумать себе какую-то систему классификации обрезков, например, если обрезок имеет формат между А3 и А2, он принимается в систему как А3; если размер обрезка между А2 и А1 - принимается как А2. Это конечно менее точно, но зато у вас не будет в системе "букета" из сотни форматов одного и того же материала...
можно действовать неким комбинированным путём - например, если обрезок между А2 и А1, но ближе к А1, то лучше для него таки создать новый формат, но если он ближе к А2 - проще записать как А2 - не велика потеря...
Ну и ещё один момент в том, что нужно будет поломать психологию ваших работников, которые думаю будут, мягко говоря, в шоке от таких нововведений. Зато у вас будет практически идеальный учёт, минимальные цены и минимальные потери. Думайте )))
Упрощённый вариант. Над этим вариантом я думал вот буквально на днях. Этот вариант - такая себе "смесь бульдога с носорогом" )))) - смесь здравого (и не очень) смысла и возможностей Фастпринт ERP.
Итак, если вы не хотите/можете (нужное подчеркнуть) использовать ни один из вышеописанных вариантов, но всёравно очень хотите иметь хоть какой-то учёт этих здоровых материалов, вариант может быть следующим.
Пример:
Приход 10 листов пластика в размере 2х3м мы записываем в систему как приход рулонного материала с шириной рулона 1м и длинной 60 м.п.
Менеджер при расчёте цены переключает модуль расчёта в ручной режим, вводит площадь печати, вручную резервирует определённое кол-во погонажа с этого нашего виртуального ролика (1х60м) (благодаря ширине рулона в 1 м, получается что 1 м.п. этого ролика равен 1 кв.м., это всё для простоты, именно поэтому ширина виртуального ролика - 1м) и вуаля - цена готова! Учёт какой-никакой тоже есть. Списания в брак - тоже есть/возможны.
Один вот только минус в этом всём. Вернее два:
менеджер, глядя на остаток этого виртуального ролика, скажем, в 30 м.п. (следовательно 30 квадарвтов), не очень может понять - что это за 30 квадратов? Это 5 целых листов по 6 квадратов или 30 листов-обрезков по 1 квадарту? Или это смесь какая-то дикая ))) Может получиться, что он примет заказ на печать 10 шт плакатов размером 1х2м, с улыбкой на лице от того - как чудесно они "ложатся" на лист 2х3м, но потом очень разочаруется (вместе с клиентом), узнав что 30 м.п. по складу это 30 квадратиков "метр на метр" )))
как уже упоминалось, система ведёт учёт рулонных материалов с точностью до ролика, и в нашем упрощённом/компромисном варианте это сыграет с нами злую шутку. В том плане, что имея, остаток от предыдущего прихода, скажем, в 20 м.п. на виртуальном ролике, новый приход на, скажем, 50 квадратов на придётся записать уже на новый виртуальный ролик, т.к. изменить старый нельзя (ну он ведь не мог стать длиннее:) ). В итоге, через несколько месяцев у вас в системе будет целый выводок виртуальных роликов. Это будет кошмар ))) С реальными роликами, кстати, тоже самое, но там ведь учёт автоматизирован и система пытается использовать все ролики до нуля!!!! САМА!!! Но не в этом случае ))) Тут вам самим, для "подчистки хвостов" придётся делать резерв не с одного, а с нескольких роликов, дабы в сумме набрать требуемый погонаж (в смысле квадратуру) материала...
В такой вот получается, как сейчас принято говорить, расклад по учёту ШФ-печати и материалов.
Явных недостатков системы лично я вижу два, а точнее один-полтора 
Отсутствие автоматизированного расчёта раскладки на формат изделий разного размера - увы, делать как-попало нехочу, а писать (или внедрять чуждой) диссер по данной теме - это черезчур )))
Отсутствие совсем уж примитивного учёта, при котором можно было бы пользоваться последним из описанных выше вариантов, но без этих вот виртуальных роликов и т.п. Но в этом месте у меня контр-вопрос: а зачем тогда система? Ведь расчёта нету никакого, кроме умножения кв.м. на цену за кв.м., зачем тут специализированная система? Тут подойдёт самая обычная складская/торговая программа, вроде 1С и т.п.