Заблуждение третье - неверная работа с единицами измерения.
Очень часто вместе со стандартными единицами измерения программисты создают единицы измерения, представляющие собой упаковки. Например, коробка сигарет, которая состоит из 50 блоков сигарет и блок сигарет, который состоит из 10 пачек сигарет. И затем, используя таблицы пересчета из одной единицы измерения в другую, определяют количество пачек сигарет в коробке с блоками. Это делать не верно, для этого есть такая вещь, как комплект, которая позволяет не только пересчитать из одного товара в другой, но и производить стандартные для складской системы операции комплектования и разукомплектования товара, что очень полезно в производственном учете. Чтобы понять, что такое комплект, для начала надо понять, что такое Объект Учёта.
Объекты учёта
Что такое объект учёта - это как раз то, что двигается между субъектами учёта. Например, сгущенка. На складе и в магазине это товар, в бухгалтерском учёте это деньги, в производстве это материалы и работы, в сервисе еще могут быть услуги. Учитывать можно что угодно. [Читать далее]В учетной системе объект учета является самой сложной частью элементов учета. Это не просто справочник - это набор справочников. Допустим, сгущенка как товар нас интересует только количеством штук. Тогда это будет просто одна запись в справочнике Объектов Учета. Но сгущенка может быть разная. От разных производителей, с разными сроками годности, с разными ценовыми категориями, разными упаковками, весом, объемом. Вариантов реализации структуры данных справочника объектов учета очень много. От дилетантского до совершенного. Не буду рассматривать все варианты, опишу лишь правильный вариант. Если коротко, то объект учета состоит из наименования, кода, штрих-кода, артикула, категорий, измерений и вложенного состава (комплекты). Разберем подробнее. Думаю, что наименование, код, штрих-код и артикул описывать надобности нет. Это всего-лишь набор полей заголовка элемента справочника. Нас будут подробно интересовать три вещи: категории, измерения и комплекты.
1.Категории Категории являются, по сути, признаками объекта учета без параметров, например, страна происхождения, цвет, импортный/отечественный, продовольственный/промышленный, молочное или мясное, и т.д. Другими словами это перечисления. Набор категорий не ограничен, при этом категории могут быть иерархическими. Например, место производства можно делить не только по странам, но и по городам или даже по районам города. Таким образом, создавая новый объект учёта, мы кроме наименования и артикула можем добавить набор категорий. Категории позволят нам группировать объекты учета как угодно и для учета и для отчета.
2.Измерения Любой объект учета имеет измеримые параметры, значимые для системы учета, такие как вес, объём, длина, ширина, высота, срок хранения, плотность и т. д. Только от системы зависит, что нам понадобится учитывать. Например, при хранении на складе нам очень могут быть важны размеры товара, чтобы определить, сколько товара может поместиться в помещении. Причём, если помещение высокое, а товар можно составлять друг на друга, то необходимо знать, а сколько коробок можно составить вертикально, не вызвав повреждения самой нижней коробки от собственного веса товара. Измерения товара представляют собой таблицу
Измерение Единица измерения Количество
Вес кг 15,5
Объём м3 0,3
Длина см 100
Каждое измерение может иметь несколько единиц измерения. Например, вес может измеряться в килограммах, граммах, тоннах, пудах, фунтах. В рамках одного измерения единицы измерения имеют коэффициенты пересчета. Таким образом можно записать, что в одном килограмме 1000 грамм и в одном пуде 16 кг. Таблица коэффициентов пересчёта Измерение вес
Из единицы измерения В единицу измерения Коэффициент
кг г 1000
тонна кг 1000
пуд кг 16
Измерение объём
Из единицы измерения В единицу измерения Коэффициент
м3 литр 1000
дм3 литр 1
баррель литр 158,99
Кроме того, коэффициенты пересчёта могут быть между единицами измерения разных измерений. Например, мы знаем, что в одном литре килограмм, правда есть одна оговорка, воды. Этого означает, такие коэффициенты можно задавать только в разрезе объектов учета. Пример таблицы коэффициентов пересчета между единицами измерения товара
Объект учета Из ед. измерения В ед. измерения Коэффициент
Вода литр кг 1
Бензин литр кг 0,75
Молоко литр кг 1,03
3.Комплекты Товар может быть простым и составным. Составной товар представляет собой комплект других простых и составных товаров. В результате получается иерархия объектов учета. Еще одна иерархия. Не нужно пугаться такого большого количества иерархий в системе учета. Это нормально. Всё в мире является иерархическим и циклическим. И верхом всего этого является зацикленная иерархия. С иерархиями работать просто, главное для этого надо иметь правильные структуры данных и правильные алгоритмы для их заполнения и изменения и тогда любые запросы к иерархиям будут работать просто и быстро. Но об этом я подробно напишу отдельно. А сейчас рассмотрим большой складской комплекс. На такой большой склад товар приходит чаще всего паллетированным. Паллет представляет собой поддон и сложенные на него коробки или мешки с товаром. Коробка представляет собой картонный ящик и содержимое. Содержимое может быть также упаковано в более мелкие упаковки, например, блоки сигарет. Распишем составы комплектов на примере паллета с сигаретами. Паллет с сигаретами
Объект учета Единица измерения Количество
Поддон шт. 1
Короб с сигаретами шт. 40
Короб
Объект учета Единица измерения Количество
Коробка (упаковка) шт. 1
Блок с сигаретами шт. 50
Блок
Объект учета Единица измерения Количество
Пачка сигарет шт. 10
В блоке сигарет учитывать упаковку смысла не имеет, так как после распаковки она всё равно выкидывается, да и вес её тоже не учитывается, слишком мал. В итоге имея такую иерархию мы можем посчитать сколько пачек сигарет у нас имеется на складе. По складу мы можем двигать как паллеты, так и коробки и даже более мелкую упаковку.
С помощью описанной выше структуры можно описать товар любого типа, даже тот, который по уверениям некоторых заказчиков является исключительным и потому специально под него создавалась структура. Ради интереса попробуйте придумать особенный товар и разложить его по категориям, измерениям и комплектам. Всё получится.
Заблуждение четвертое - неправильная работа с партиями. Партионный учет очень часто требуется в учетной политике. Что такое партия? Это некоторая группа товаров, объединенная единым признаком, номером партии. Номер партии обычно генерируется автоматически. Разделение товара на партии нужно для раздельного учета одного и того же товара по дате прихода, по поставщику, по цене и т.д. Для того, чтобы отслеживать движение конкретных товаров или конкретных групп товаров. Для его организации программисты чаще всего добавляют в таблицу регистра еще одно поле - партия. На первый взгляд всё вроде бы сходится. Рассмотрим на примере. Допустим, мы закупили две партии сгущенки. Партия №1 и партия №2.
№ партии Товар Дата Поставщик Цена
1 Сгущенка 09.08.12 Агрохолдинг 20
2 Сгущенка 12.08.12 ООО Инвест 21
Чаще всего программист создаст таблицу для хранения партий и добавит поле в регистре для ссылки на партию. В случае же непартионного учёта в это поле пишется NULL. Вот так и растёт количество измерений в регистре учёта. Поэтому в известных брендовых системах в регистрах учёта 50-100 измерений и в большинстве полей прописаны NULL. Есть другой способ учёта партий в рамках имеющегося регистра учёта. Это иерархическая структура регистра учета. Каждая запись в регистре учета имеет ссылку на другую запись - родительскую, но это не измерение. И это поле в таблице регистра учета имеет место быть изначально. Я специально не стал его описывать, дабы не смущать читателя раньше времени. Кроме того будет еще одно поле в таблице - это ссылка на тип регистра учета, например, плановый складской учет, фактический складской учет, бухгалтерский учет, налоговый учет… Рассмотрим на примере вышеупомянутой сгущенки 1. Приход товара на склад
№ Родитель Кто Что Откуда Куда Сколько Когда Почему
1
Петров И.В. Сгущенка ООО «Эра» Склад №1 100 02.08.12 Приходный ордер №1
2. Внутреннее перемещение
№ Родитель Кто Что Откуда Куда Сколько Когда Почему
2 1 Иванов П.Н. Сгущенка Склад №1 Магазин №1 50 03.08.12 Накладная №1
3. Продажа товара покупателю
№ Родитель Кто Что Откуда Куда Сколько Когда Почему
В данном случае если мы сможем идентифицировать по каким-либо признакам запись продажи (кассовый чек, дата, товар, что-то еще), то хорошо, иначе это будет такая же входящая первичная запись, как и приход. То есть, если мы идентифицировали товар, то у нас есть ссылка на родителя и мы видим всю цепочку от прихода товара на склад до возврата от покупателя и даже если потом снова продали, то мы всё равно знаем каким приходом этот товар пришел. Если же покупатель чек не предъявил, и идентификационного номера товара нет, то делаем обычный приход с нулевым полем «Родитель». И так бывает, ничего страшного. Всё это значит, что партией является не что иное, как товарная позиция из конкретного приходного документа, которая имеет все необходимые данные для собственной идентификации: номер и дата прихода, контрагент, товар, дата производства, срок годности и т.д., всё, что занесено в документ. Благодаря такой иерархической структуре всегда известно откуда товар взялся. И что бы мы ни делали с товаром в рамках системы, перемещали куда-либо, разукомплектовывали, возвращали на склад и так далее, у нас всегда можно по иерархии дойти до первичной записи и узнать, что это было.