Как организовать учет движения пиломатериалов в разрезе размеров в 1С?

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

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

Критический анализ хранения размеров в измерениях регистра

Рассмотрим первоначальную идею, которая часто кажется логичной на первый взгляд: создать регистр накопления остатков Запасы с измерениями Номенклатура (Справочник), Длина (Число), Ширина (Число), Высота (Число), Сорт (Справочник), Порода (Справочник) и ресурсами Количество и Кубатура.

Почему такой подход является стратегической ошибкой?

  1. Взрывной рост таблицы итогов (проблема комбинаторики): База данных 1С хранит остатки в разрезе уникальных комбинаций измерений. Если у вас в регистре будет 5–6 измерений, то для каждой уникальной комбинации (например: Доска обрезная + Длина 6000 + Ширина 150 + Высота 50 + Сорт 1 + Порода Сосна) будет создаваться отдельная запись в таблице итогов. При реальном объеме производства это приведет к быстрому раздуванию базы данных и катастрофическому падению скорости проведения документов.
  2. Сложности с ценообразованием и скидками: Стандартные и кастомные механизмы установки цен в 1С работают по связке Номенклатура + Характеристика. Если вы захотите установить разные цены в зависимости от сорта или длины доски, вам придется дублировать структуру измерений вашего регистра «Запасы» во всех регистрах сведений (ЦеныНоменклатуры, Скидки, Резервы и т.д.). Это колоссальный объем лишней работы по написанию кода.
  3. Невозможность использования типовых отчетов: Построитель отчетов или СКД (Система компоновки данных) потребуют сложных настроек группировок по множеству числовых полей, что усложнит жизнь пользователям при формировании простых складских ведомостей.

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

Решение через механизм характеристик

Единственным архитектурно верным решением в экосистеме 1С является использование механизма Характеристик номенклатуры. Этот механизм поддерживается платформой на уровне метаданных и позволяет свернуть все многообразие физических свойств товара в один разрез учета.

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

Существует два основных способа организации характеристик в 1С:

Вариант А. Простой подчиненный справочник

Если мы пишем легкую специализированную конфигурацию и точно знаем, что состав свойств пиломатериала никогда кардинально не изменится, мы можем создать справочник ХарактеристикиНоменклатуры, подчиненный справочнику Номенклатура (или сделать его общим для всей базы). В этом справочнике мы жестко задаем реквизиты:

При создании новой характеристики наименование будет формироваться автоматически по шаблону: «50х150х6000 мм, 1 сорт, Сосна, Ест. влажн.».

Вариант Б. Использование Плана видов характеристик (ПВХ)

Это более гибкий и масштабируемый подход, принятый во всех типовых конфигурациях фирмы 1С (УТ, КА, ERP). Мы создаем ПВХ СвойстваОбъектов и подчиненный справочник ЗначенияСвойствОбъектов. Это позволяет пользователям в режиме предприятия добавлять любые новые свойства (например, «ГОСТ», «Наличие антисептика», «Тип распила») без привлечения программиста и изменения структуры метаданных.

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

Учет специфики лесопиления: стандартизация размеров

Разработчики часто совершают ошибку, пытаясь заложить в систему возможность указания абсолютно любых размеров (например, длина с точностью до миллиметра). На практике лесопильное производство строго стандартизировано:

Стандартные длины: Большинство пилорам работают по ГОСТ 24454-80. Стандартная длина досок обычно составляет 3; 4; 4.5; 6 метров. Доски промежуточных или некондиционных размеров (например, 5.8 м или 4.7 м) торцуются под ближайший стандартный размер, либо переводятся в категорию «нестандарт» со скидкой. Поэтому в системе нет необходимости поддерживать бесконечный ввод любых чисел. Размеры должны выбираться из предопределенных или контролируемых списков стандартов.

Двойной количественный учет (Штуки и Кубические метры)

Специфика пиломатериалов заключается в том, что складской и производственный учет ведется в двух единицах измерения одновременно:

Для реализации этого механизма в документе Производство и в регистре Запасы мы обязаны использовать два ресурса: количество в штуках и объем в кубометрах. При этом объем должен рассчитываться автоматически «на лету» по формуле:

$Объем (м^3) = \frac{Высота (мм) \times Ширина (мм) \times Длина (мм)}{1 000 000 000} \times Количество (шт)$

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


&НаКлиенте
Процедура ПродукцияКоличествоПриИзменении(Элемент)
    СтрокаТаблицы = Элементы.Продукция.ТекущиеДанные;
    Если СтрокаТаблицы <> Неопределено Тогда
        РассчитатьКубатуруСтроки(СтрокаТаблицы);
    КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Процедура РассчитатьКубатуруСтроки(СтрокаТаблицы)
    // Получаем параметры геометрических размеров из характеристики
    Если ЗначениеЗаполнено(СтрокаТаблицы.Характеристика) Тогда
        ДанныеХарактеристики = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
            СтрокаТаблицы.Характеристика, 
            "Высота, Ширина, Длина"
        );
        
        ВысотаМетры = ДанныеХарактеристики.Высота / 1000;
        ШиринаМетры = ДанныеХарактеристики.Ширина / 1000;
        ДлинаМетры  = ДанныеХарактеристики.Длина / 1000;
        
        // Математический расчет объема одной единицы продукции
        ОбъемШтуки = ВысотаМетры * ШиринаМетры * ДлинаМетры;
        
        // Расчет общей кубатуры по строке
        СтрокаТаблицы.Кубатура = ОкруглитьКубатуру(ОбъемШтуки * СтрокаТаблицы.Количество);
    КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ОкруглитьКубатуру(ЗначениеОбъема)
    // В лесной отрасли принято округлять объем до 3 или 4 знаков после запятой
    Возврат Окр(ЗначениеОбъема, 4, РежимОкругления.Окр15как20);
КонецФункции

Отраслевой нюанс: Номинальный и Фактический размер

При глубокой автоматизации деревообработки важно помнить про разницу между номинальным (зачетным) и фактическим (пильным) размером. Пиломатериалы естественной влажности пилятся с припусками на усушку (ГОСТ 6782.1-75). Сырая доска, номинальный размер которой составляет 50х150х6000 мм, фактически выходит из-под пилы с размерами 53х154х6020 мм.

Продажа и официальный учет всегда осуществляются по номинальному (зачетному) размеру. Однако для расчета загрузки оборудования, планирования сырья (пиловочника) и контроля выхода готовой продукции технологам требуются фактические размеры. Если ваша система пишется под крупное производство, рекомендуется заложить в справочник ХарактеристикиНоменклатуры две группы реквизитов: номинальные размеры (для коммерческого учета и расчета объема) и фактические размеры (для технологических карт и списания сырья).

Резюме для разработчика

Для успешной реализации учета пиломатериалов на пилораме придерживайтесь следующих правил:

  1. Ни в коем случае не создавайте отдельные числовые измерения для габаритов в регистрах остатков.
  2. Используйте механизм подчиненных характеристик. Связка Номенклатура + Характеристика закроет все потребности складского учета и ценообразования.
  3. Обязательно внедряйте двойной учет количества (штуки для физического контроля, кубометры для финансового).
  4. Реализуйте автоматический калькулятор кубатуры («кубатурник») на основе геометрических параметров, хранящихся внутри характеристики.
← На главную