Как в СКД вывести остатки деталей, зависших в производстве между складами в 1С:УПП 1.3?

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

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

Сложность возникает тогда, когда часть запущенной партии застревает на промежуточном этапе обработки (например, на испытательном стенде или в термокамере). На складах этих деталей уже нет, а до следующего склада они еще не дошли. Как вывести это «зависшее» количество в отчет на схеме компоновки данных (СКД), если на самих производственных участках оперативный компьютерный учет не ведется? Выясним причину этой проблемы и подробно разберем два метода решения: расчетный (через сопоставление складских движений в СКД) и методологически верный (с использованием механизмов незавершенного производства).

---

Почему детали «исчезают» из складских отчетов?

Прежде чем приступать к написанию запросов, проанализируем движение документов и логику регистров в 1С:УПП. Когда мы передаем приборы в производство, мы оформляем документ Требование-накладная. Этот документ делает движение Расход по регистру накопления ТоварыНаСкладах (или ПартииТоваровНаСкладах). В этот момент для склада деталь перестает существовать.

Когда этап производства завершается, оформляется документ Отчет производства за смену (ОПзС), который приходует уже модифицированную деталь (например, с другим качеством) на Склад 2. Он делает движение Приход по складским регистрам.

Если со Склада 1 ушло 50 деталей, а на Склад 2 поступило только 40, разница в 10 штук физически находится в цехе. Пытаясь построить стандартный отчет по регистру ТоварыНаСкладахОстаткиИОбороты, мы увидим остатки только на самих складах, но не увидим то, что зависло «между» ними.

---

Вариант решения №1. Расчетный метод (через сопоставление складских приходов и расходов в СКД)

Этот способ незаменим, если на вашем предприятии учет в производстве ведется «упрощенно»: материалы списываются, выпуск оформляется, но распределение затрат и подетальное списание в НЗП в системе не отражаются. Наша задача в СКД — сопоставить расход со Склада 1 с приходом на Склад 2 по конкретной номенклатуре, проигнорировав при этом изменение реквизита Качество.

Разберем по шагам, как построить такой запрос в конструкторе СКД. Мы не можем просто связать приход и расход по номенклатуре и качеству, так как качество на первом и втором складе различается (например, «готовые к испытаниям» и «прошедшие термоциклы»). Мы должны сделать соединение таблиц только по полям Номенклатура и ХарактеристикаНоменклатуры (если она используется).

Рассмотрим структуру пакетного запроса, который решит эту задачу:


// ШАГ 1. Получаем расход по Складу-отправителю (Склад 1)
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК КоличествоПередано
ПОМЕСТИТЬ ВТ_РасходСклад1
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, , Склад = &Склад1) КАК ТоварыНаСкладахОбороты
ГРУППИРОВАТЬ ПО
	ТоварыНаСкладахОбороты.Номенклатура,
	ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
// ШАГ 2. Получаем приход по Складу-получателю (Склад 2)
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	СУММА(ТоварыНаСкладахОбороты.КоличествоПриход) КАК КоличествоПолучено
ПОМЕСТИТЬ ВТ_ПриходСклад2
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, , Склад = &Склад2) КАК ТоварыНаСкладахОбороты
ГРУППИРОВАТЬ ПО
	ТоварыНаСкладахОбороты.Номенклатура,
	ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
// ШАГ 3. Объединяем данные и рассчитываем разницу (остаток в производстве)
ВЫБРАТЬ
	ЕСТЬNULL(ВТ_РасходСклад1.Номенклатура, ВТ_ПриходСклад2.Номенклатура) КАК Номенклатура,
	ЕСТЬNULL(ВТ_РасходСклад1.ХарактеристикаНоменклатуры, ВТ_ПриходСклад2.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатуры,
	ЕСТЬNULL(ВТ_РасходСклад1.КоличествоПередано, 0) КАК КоличествоПередано,
	ЕСТЬNULL(ВТ_ПриходСклад2.КоличествоПолучено, 0) КАК КоличествоПолучено,
	ЕСТЬNULL(ВТ_РасходСклад1.КоличествоПередано, 0) - ЕСТЬNULL(ВТ_ПриходСклад2.КоличествоПолучено, 0) КАК ОстатокВПроизводстве
ИЗ
	ВТ_РасходСклад1 КАК ВТ_РасходСклад1
		ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ПриходСклад2 КАК ВТ_ПриходСклад2
		ПО ВТ_РасходСклад1.Номенклатура = ВТ_ПриходСклад2.Номенклатура
			И ВТ_РасходСклад1.ХарактеристикаНоменклатуры = ВТ_ПриходСклад2.ХарактеристикаНоменклатуры

Важное примечание к запросу: Мы применили ПОЛНОЕ СОЕДИНЕНИЕ вместо ЛЕВОГО СОЕДИНЕНИЯ. Это необходимо на случай, если на Склад 2 поступили детали, по которым не было зафиксировано расхода со Склада 1 за выбранный период (например, незавершенное производство перешло из прошлых периодов). Функция ЕСТЬNULL страхует нас от пустых значений (NULL), преобразуя их в нулевые показатели для корректного вычитания.

---

Вариант решения №2. Методологически верный (через оперативный учет НЗП)

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

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

  1. Настройка карточки номенклатуры. Откроем карточки производимых приборов. На вкладке «Настройки учета» обязательно должен быть установлен флаг «Вести оперативный учет остатков незавершенного производства».
  2. Документ «Требование-накладная». При передаче деталей в производство этот документ списывает их со склада и делает движение «Приход» в регистр накопления МатериалыВПроизводстве. Детали зависают в цехе на материально-ответственном лице (цеховая кладовая или мастер участка).
  3. Документ «Отчет производства за смену». При выпуске готового изделия с новым качеством на Склад 2 на вкладке «Материалы» обязательно указывается исходная номенклатура (которая была списана требованием-накладной). При проведении ОПзС делает движение «Расход» по регистру МатериалыВПроизводстве.

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


ВЫБРАТЬ РАЗРЕШЕННЫЕ
	МатериалыВПроизводствеОстатки.Номенклатура КАК Номенклатура,
	МатериалыВПроизводствеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	МатериалыВПроизводствеОстатки.Подразделение КАК Подразделение,
	МатериалыВПроизводствеОстатки.КоличествоОстаток КАК ОстатокВПроизводстве
ИЗ
	РегистрНакопления.МатериалыВПроизводстве.Остатки(&Период, ) КАК МатериалыВПроизводствеОстатки

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

Совет для баз с включенным РАУЗ (Расширенная аналитика учета затрат): Если в вашей базе УПП включен РАУЗ, регистр МатериалыВПроизводстве не задействуется. В этом случае все остатки НЗП хранятся в регистре УчетЗатратРегламентированный. Вам нужно будет получать остатки из таблицы РегистрНакопления.УчетЗатрат.Остатки, наложив отбор по разделу учета «Затраты» или «НЗП».

---

Оптимизация структуры складов и процессов

Анализируя ситуацию, когда для каждого этапа доработки создается отдельный склад (Склад 1, Склад 2, Склад 3 и т.д.) только ради изменения качества прибора, стоит задуматься о реинжиниринге бизнес-процесса в программе.

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

← На главную