Как реализовать учет сборки компьютеров и расчет себестоимости в 1С

Программист 1С v8.3 (Обычные формы) Управленческий учет IT и автоматизация бизнеса
← На главную

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

Проектирование структуры справочников и свойств номенклатуры

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

Для разделения типов номенклатуры создадим перечисление ВидыНоменклатуры со значениями Товар (или Деталь) и Компьютер. В самом справочнике Номенклатура добавим реквизит ВидНоменклатуры. Это позволит нам в дальнейшем накладывать фильтры в документах и отчетах.

Согласно условию, нам необходимо организовать хранение свойств (например, «Производитель») с использованием Плана видов характеристик (ПВХ). Разберем по шагам, как это сделать:

  1. Создадим ПВХ ДополнительныеСвойстваНоменклатуры. В качестве типа значения характеристик выберем составной тип, включающий справочник ЗначенияСвойств (который нужно создать и подчинить этому ПВХ) и стандартные типы (строка, число).
  2. Для связи свойств с товарами создадим регистр сведений ЗначенияСвойствНоменклатуры.
    • Измерения: Номенклатура (ссылка на справочник), ВидСвойства (ссылка на ПВХ).
    • Ресурс: Значение (тип — Характеристика.ДополнительныеСвойстваНоменклатуры).

Реализация спецификаций с ограничением «раз в неделю»

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

Для этого идеально подходит периодический регистр сведений Спецификации. Рассмотрим его структуру:

Чтобы обеспечить контроль периодичности «раз в неделю», проанализируем программную проверку в модуле набора записей регистра или в форме записи. Нам нужно запретить запись, если в текущем календарном недельном интервале уже есть записи для данной модели. Посмотрим на пример реализации проверки:


Процедура ПередЗаписью(Отказ, Замещение)
    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    НачалоТекНедели = НачалоНедели(Период);
    КонецТекНедели = КонецНедели(Период);

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |   Спецификации.Период
        |ИЗ
        |   РегистрСведений.Спецификации КАК Спецификации
        |ГДЕ
        |   Спецификации.МодельКомпьютера = &МодельКомпьютера
        |   И Спецификации.Период МЕЖДУ &НачалоНедели И &КонецНедели
        |   И Спецификации.Период <> &ТекущийПериод";

    Запрос.УстановитьПараметр("МодельКомпьютера", МодельКомпьютера);
    Запрос.УстановитьПараметр("НачалоНедели", НачалоТекНедели);
    Запрос.УстановитьПараметр("КонецНедели", КонецТекНедели);
    Запрос.УстановитьПараметр("ТекущийПериод", Период);

    Если НЕ Запрос.Выполнить().Пустой() Тогда
        Сообщить("Состав данной модели можно изменять не чаще одного раза в неделю!");
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Механика документа «Сборка» и расчет себестоимости

Документ Сборка — это ключевой узел системы. Он должен одновременно списывать детали и приходовать готовый компьютер. Разберем подробнее, как организовать его проведение.

В документе две табличные части: СборкаКомпьютеров и ДополнительныеДетали. При проведении программа должна сформировать полный список списываемых комплектующих. Он состоит из:

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

Важный момент: учет ведется в разрезе подразделений. Поэтому при списании мы должны контролировать остатки именно в том подразделении, которое указано как отправитель в шапке документа.

Для расчета себестоимости используем регистр накопления ОстаткиНоменклатуры (вид — Остатки) с измерениями Номенклатура и Подразделение, и ресурсами Количество и Стоимость. Рассмотрим логику расчета:

Сначала мы рассчитываем среднюю стоимость (или стоимость по ФИФО) каждой детали. Суммируем общую стоимость всех деталей, затраченных на сборку. Полученная итоговая сумма станет себестоимостью поступивших на склад системных блоков. Выясним причину важности этого шага: если мы просто оприходуем компьютер без стоимости, наша прибыль в отчетах будет завышена.

Реализация «Расходной накладной» и отчетности

При продаже готового компьютера или периферии в документе Расходная накладная мы также должны рассчитать себестоимость списания. Это делается стандартным запросом к остаткам регистра ОстаткиНоменклатуры с учетом фильтра по подразделению.

Теперь проанализируем построение отчета «Ведомость». Особенность в том, что группировка должна идти по Производителю, который является свойством из ПВХ. В запросе отчета мы должны выполнить левое соединение остатков с регистром сведений ЗначенияСвойствНоменклатуры. Посмотрим на пример структуры запроса:


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

Важные рекомендации:

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

← На главную