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

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

При проведении операции разукомплектации в документе Комплектация номенклатуры себестоимость исходного товара или сырья распределяется между получаемыми комплектующими согласно указанным долям. Частая практическая задача — автоматически заполнить колонку Доля на основе фиксированных цен или фиксированной стоимости побочной продукции, чтобы не рассчитывать коэффициенты вручную.

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

Анализ задачи: почему не нужны итерации

Идея использовать рекурсивный подбор или итерационные циклы для распределения долей является избыточной. Расчет пропорций — это простая математическая задача, решаемая за один или два обхода табличной части.

Проанализируем математическую модель расчета:

  1. Для каждой получаемой позиции определяем ее расчетную стоимость: СтоимостьСтроки = Цена * Количество.
  2. Находим общую стоимость всех выходящих позиций: ОбщаяСтоимость = Сумма(СтоимостьСтроки).
  3. Рассчитываем расчетную долю каждой позиции относительно общей суммы.
  4. Относим возникшую погрешность округления (копейки) на основную номенклатуру или последнюю строку документа.

Алгоритм прямого расчета долей стоимости

Разберем вариант реализации кнопки или внешней обработки для заполнения табличной части документа Комплектация номенклатуры.

Для предотвращения обнуления долей у позиций с низкой стоимостью важно учитывать разрядность реквизита Доля. Если реквизит имеет тип Число(10, 0), доли должны выражаться в целых числах (например, в пропорциях или масштабироваться на множитель 1000 или 10 000).

Посмотрим на пример логики расчета с отношением фиксированной стоимости отходов и расчетных долей:


// 1. Получаем прайсовые цены для номенклатуры из табличной части
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТЧ.Номенклатура КАК Номенклатура,
    |	ТЧ.Количество КАК Количество,
    |	ЕСТЬNULL(Цены.Цена, 0) КАК Цена
    |ИЗ
    |	&ТаблицаКомплектующие КАК ТЧ
    |	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаDoc, ТипЦен = &ТипЦен) КАК Цены
    |	ПО ТЧ.Номенклатура = Цены.Номенклатура";

// 2. Расчет расчетной стоимости и формирование долей
ОбщаяРасчетнаяСумма = 0;
Для Каждого Стр Из ТаблицаДокумента Цикл
    Стр.РасчетнаяСтоимость = Стр.Цена * Стр.Количество;
    ОбщаяРасчетнаяСумма = ОбщаяРасчетнаяСумма + Стр.РасчетнаяСтоимость;
КонецЦикла;

// 3. Заполнение реквизита Доля в табличной части
СуммаРаспределенныхДолей = 0;
ВсегоСтрок = ТаблицаДокумента.Количество();

Для Индекс = 0 По ВсегоСтрок - 2 Цикл
    Стр = ТаблицаДокумента[Индекс];
    Если ОбщаяРасчетнаяСумма > 0 Тогда
        // Масштабируем долю, чтобы избежать потери точности
        Стр.Доля = Цел((Стр.РасчетнаяСтоимость / ОбщаяРасчетнаяСумма) * 10000);
    Иначе
        Стр.Доля = 1;
    КонецЕсли;
    СуммаРаспределенныхДолей = СуммаРаспределенныхДолей + Стр.Доля;
КонецЦикла;

// Корректировку округления относим на последнюю или первую позицию
Если ВсегоСтрок > 0 Тогда
    ТаблицаДокумента[ВсегоСтрок - 1].Доля = 10000 - СуммаРаспределенныхДолей;
КонецЕсли;

Методологические нюансы: учет возвратных отходов

Выясним причину, почему документ Комплектация номенклатуры не всегда подходит для задач переработки (например, при очистке зерна и получении зерноотходов):

  1. Перерасчет при закрытии месяца: Документ разукомплектации задает только соотношение (доли). Если регламентная операция Корректировка стоимости номенклатуры пересчитает себестоимость исходного сырья по итогам месяца, фактическая себестоимость списания отходов также изменится пропорционально, и она не останется жестко фиксированной.
  2. Использование производственных документов: Для отражения процессов очистки и переработки с фиксацией стоимости отходов методологически правильно применять документ Отчет производства за смену.
  3. Заполнение возвратных отходов: В документе Отчет производства за смену на закладке Возвратные отходы побочная продукция (зерноотходы) приходуется по фиксированной (плановой) цене. Эта сумма напрямую уменьшает затраты на выпуск, а весь остаток себестоимости относится на основной продукт (очищенное зерно).

Рекомендации по реализации

Если требуется сохранить текущую схему учета без изменения конфигурации:

  1. Создайте внешнюю обработку заполнения табличной части для документа Комплектация номенклатуры.
  2. Используйте механизм регистра сведений ЦеныНоменклатуры для автоматической подтяжки цен.
  3. При расчете долей учитывайте формат поля Доля и всегда компенсируйте погрешности округления на строке с основным продуктом.
← На главную