Как автоматически заполнить доли стоимости при разукомплектации в 1С:УПП 1.3?

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

При выполнении операции Разукомплектация в программе 1С:Управление производственным предприятием 1.3 одной из самых трудоемких задач является корректное заполнение колонки «Доля стоимости». Эта колонка определяет, какая часть себестоимости исходного изделия перейдет на каждый полученный в результате разборки компонент. Если оставить эти поля пустыми или заполнить их некорректно, себестоимость выходных изделий будет далека от реальности, что приведет к искажению финансового результата и складских остатков.

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

Зачем нужны доли стоимости и как они работают

В 1С:УПП 1.3 документ КомплектацияНоменклатуры с видом операции «Разукомплектация» работает по следующему принципу: общая себестоимость списываемого комплекта распределяется между комплектующими пропорционально указанным долям. Важно понимать, что система не требует, чтобы сумма долей была равна 100 или 1. Программа воспринимает эти значения как весовые коэффициенты. Однако для удобства анализа и во избежание путаницы мы рекомендуем приводить их к общей сумме 100 или 1000.

Решение 1: Распределение пропорционально рыночным (закупочным) ценам

Это наиболее распространенный и логичный способ. Рассмотрим ситуацию: мы разбираем станок, и нам нужно, чтобы полученные запчасти имели цену, близкую к их обычной закупочной стоимости. Разберем по шагам, как реализовать такой алгоритм.

Проанализируем формулу, которую предложили участники обсуждения:

Доля = (ТекущаяЦена / ОбщаяЦена) * Количество * 1000

Где:

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


// Пример получения цен для расчета долей
Для Каждого СтрокаТЧ Из ТабличнаяЧастьКомплектующие Цикл
    // Получаем цену из регистра сведений по нужному типу цен
    СтруктураПараметров = Новый Структура("Номенклатура, ТипЦен", СтрокаТЧ.Номенклатура, НужныйТипЦен);
    ЦенаЕдиницы = Ценообразование.ПолучитьЦенуНоменклатуры(ТекущаяДата(), СтруктураПараметров);
    
    СтрокаТЧ.ЦенаДляРасчета = ЦенаЕдиницы;
    СуммарнаяСтоимостьВсех = СуммарнаяСтоимостьВсех + (ЦенаЕдиницы * СтрокаТЧ.Количество);
КонецЦикла;

// Распределяем доли
Для Каждого СтрокаТЧ Из ТабличнаяЧастьКомплектующие Цикл
    Если СуммарнаяСтоимостьВсех > 0 Тогда
        СтрокаТЧ.ДоляСтоимости = (СтрокаТЧ.ЦенаДляРасчета * СтрокаТЧ.Количество) / СуммарнаяСтоимостьВсех * 100;
    Иначе
        СтрокаТЧ.ДоляСтоимости = 1; // Дефолтное значение
    КонецЕсли;
КонецЦикла;

Решение 2: Использование физических параметров (Вес, Объем)

Для отраслей, связанных с разделкой сырья (металлообработка, деревообработка, мясная промышленность), метод рыночных цен не всегда применим. В таких случаях мы используем распределение по весу или объему. Это логично: если мы разбираем бревно на доски и опилки, стоимость должна распределяться пропорционально массе полученных материалов.

Выясним, как это реализовать:

  1. В карточке Номенклатура должен быть заполнен реквизит ВесЧистый (или аналогичное свойство).
  2. Алгоритм суммирует общий вес всех строк табличной части.
  3. Доля каждой строки рассчитывается как (ВесСтроки / ОбщийВес) * 100.

Этот метод позволяет избежать ситуации, когда побочный продукт (например, обрезь или лом) получает неоправданно высокую себестоимость только потому, что его рыночная цена временно выросла.

Решение 3: Распределение по плановым ценам и спецификациям

Если на предприятии установлены жесткие нормативы, мы можем использовать данные из Спецификаций номенклатуры. Несмотря на то, что спецификация обычно описывает сборку, ее данные можно инвертировать для разборки.

Проанализируем ситуацию: в 1С:УПП можно создать спецификацию вида «Сборочная». При программном заполнении документа разукомплектации мы можем:

Решение 4: Метод чистой стоимости реализации (для брака)

Иногда разукомплектация производится для выделения годных запчастей из бракованного изделия. В этом случае мы рекомендуем следующий подход:

  1. Определяем «основные» детали, которые имеют высокую ценность. Им присваивается рыночная стоимость.
  2. Определяем «второстепенные» части (лом, ветошь). Им присваивается фиксированная минимальная доля.
  3. Остаточная стоимость распределяется на самые ликвидные позиции.

Техническая реализация через внешнюю обработку

Чтобы не изменять типовую конфигурацию УПП 1.3, наиболее правильным путем будет создание внешней обработки заполнения табличных частей. Это позволит пользователю нажать кнопку «Заполнить доли» и выбрать нужный алгоритм прямо в документе.

Посмотрим на структуру такой обработки:

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

Используйте функцию ОбщегоНазначения.ФорматСумм() для округления полученных долей, так как слишком большое количество знаков после запятой в колонке «Доля стоимости» иногда может приводить к ошибкам округления при проведении документа в режиме РАУЗ (Расширенная аналитика учета затрат).

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

← На главную