При переходе с исторических систем, таких как "1С:Управление производственным предприятием" (УПП), на современные конфигурации "1С:ERP Управление предприятием" (ERP), пользователи часто сталкиваются с изменением логики базовых процессов. Одним из таких процессов является учет товарно-материальных ценностей (ТМЦ) в нескольких единицах измерения.
Рассмотрим часто встречающуюся ситуацию: компания торгует материалами, которые имеют базовую единицу измерения (например, квадратные метры — м²), но отгружаются логистическими единицами (паллеты, упаковки, коробки). В старых системах часто использовался подход "Количество" и "Количество мест". В 1С:ERP логика иная. Давайте разберем подробно, как настроить систему штатными средствами и какие есть варианты доработки для удобства менеджеров.
Прежде чем приступать к настройке, проанализируем разницу в подходах. В УПП существовал механизм "Мест", который жил параллельно с основным количественным учетом. Это позволяло в одной строке табличной части видеть и "сколько штук/метров", и "сколько это коробок".
В 1С:ERP 2.5 используется единый, более строгий механизм — Упаковки. Система исходит из того, что складские остатки всегда хранятся в Единице хранения (базовой), а все остальные единицы (штуки, коробки, паллеты) являются производными от нее через коэффициенты пересчета.
Логика работы ERP такова: вы выбираете в документе, в чем именно вы продаете товар сейчас (в паллетах или в метрах). Система пересчитывает это значение для движений по регистрам. Одновременное редактирование двух независимых колонок в типовом функционале отсутствует, так как это нарушало бы целостность пересчета: если вы измените количество метров, должно измениться и количество паллет (дробно или целочисленно).
Разберем, как правильно настроить справочники, чтобы система понимала связь между метрами и паллетами. Для этого нам понадобятся справочники Номенклатура и УпаковкиЕдиницыИзмерения.
Представим, что у нас есть "Паркетная доска". Единица хранения — м². Отгрузка идет паллетами.
Теперь система знает цепочку пересчета: 1 Паллета = 40 Пачек = 100 м².
При оформлении документов Заказ клиента или Реализация товаров и услуг менеджер в поле "Единица измерения" может выбрать "Паллета". В поле "Количество" он поставит "1". Система автоматически проведет списание со склада в размере 100 м².
Менеджерам часто неудобно видеть только паллеты, им нужно видеть справочно и метры, чтобы контролировать заказ клиента. Посмотрим, как можно улучшить интерфейс без программирования.
В современных релизах 1С:ERP на управляемых формах есть возможность гибкой настройки табличных частей. Попробуем вывести справочную информацию:
Заказ клиента.КоличествоУпаковок (это то, что ввел менеджер) и скрытое поле пересчета в базовые единицы. Если поле доступно, поставьте напротив него галочку.Также обратим внимание на Панель информации. При выделении строки с товаром, в нижней или боковой части формы часто отображается контекстная информация: "Доступно: ХХ м²", "Цена за м²". Настроим отображение остатков в форме подбора товаров, чтобы менеджер видел остатки сразу в двух разрезах.
Если задача состоит в том, чтобы клиент или кладовщик видели обе единицы измерения в документе, то дорабатывать саму форму ввода необязательно. Оптимальный вариант — использовать внешнюю печатную форму.
Разработаем логику для ВПФ:
Пример алгоритма вычисления для печатной формы (псевдокод):
// Получаем данные строки
ТекущееКоличество = СтрокаТабличнойЧасти.Количество; // То, что ввел менеджер (например, 2 паллеты)
ТекущаяУпаковка = СтрокаТабличнойЧасти.Упаковка; // Ссылка на справочник Упаковки
// Если упаковка выбрана, используем механизмы пересчета платформы
Если ЗначениеЗаполнено(ТекущаяУпаковка) Тогда
// В ERP есть общие модули для пересчета, например Справочники.УпаковкиЕдиницыИзмерения
Коэффициент = ТекущаяУпаковка.Коэффициент; // Условно 100 м2 в паллете
КоличествоВБазовых = ТекущееКоличество * Коэффициент;
// Выводим: "2 палл." и "200 м2"
Иначе
// Если упаковка не выбрана, значит выбрана базовая единица
КоличествоВБазовых = ТекущееКоличество;
КонецЕсли;
Если визуализация двух колонок в момент ввода данных критически важна, и штатная настройка формы не дает нужного результата, используем механизм Расширений (Extensions). Это наиболее правильный метод доработки в 1С:ERP, так как он не снимает конфигурацию с поддержки.
Рассмотрим план действий для программиста 1С:
ЗаказКлиента (или РеализацияТоваровУслуг).КоличествоВБазовыхЕдиницах.ПриИзменении для стандартного поля "Количество" и поля "Упаковка".Логика обработчика должна быть двусторонней (если это разрешено бизнес-процессом) или односторонней (только просмотр). Рассмотрим вариант "Только просмотр" (менеджер меняет паллеты, метры пересчитываются):
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
// Используем типовую функцию пересчета или простой расчет через коэффициент
// Получаем коэффициент выбранной упаковки (обычно он доступен в данных строки через точку от Упаковки,
// либо его нужно подтянуть при изменении упаковки)
Коэффициент = ПолучитьКоэффициентУпаковки(ТекущаяСтрока.Упаковка);
ТекущаяСтрока.КоличествоВБазовыхЕдиницах = ТекущаяСтрока.КоличествоУпаковок * Коэффициент;
КонецПроцедуры
Важное замечание: Если вы хотите, чтобы работало и в обратную сторону (менеджер вводит 150 м², а программа ставит 1.5 паллеты), нужно учитывать, что в ERP количество упаковок обычно должно быть целым числом, если включен контроль. Если товар допускает дробные паллеты, то формула сработает. Если нет — потребуется алгоритм округления до целых упаковок + "хвостик" в базовых единицах, что усложнит строку документа (придется разбивать на две строки).
В теме упоминался важный момент: что делать, если паллеты не стандартные? Например, одна паллета — 100 м², а другая — 102.5 м²?
В этом случае механизм простых упаковок не сработает, так как упаковка предполагает фиксированный коэффициент пересчета. Для решения этой задачи в ERP 2.5 необходимо использовать Учет по сериям.
Однако для паркета (м²) чаще всего используется стандартная заводская упаковка, поэтому варианта с иерархией упаковок (Решение 1) и доработкой видимости (Решение 4) обычно достаточно.
Подведем итог. 1С:ERP 2.5 не предоставляет "из коробки" интерфейс с двумя равнозначными колонками "Количество" и "Места" в табличной части документов, как это было в УПП. Это обусловлено строгой логикой пересчета единиц.
Для решения задачи мы рекомендуем действовать в следующем порядке: