Приветствуем вас! Сегодня мы вместе разберем одну из важных и часто встречающихся задач в учете на предприятиях, использующих 1С: как отследить, из каких конкретных партий поступления состоят материалы, которые сейчас находятся в незавершенном производстве (НЗП). Эта задача критически важна для правильного расчета себестоимости, эффективного управления запасами и точного анализа затрат. Мы рассмотрим несколько подходов к решению этой проблемы, от общего алгоритма до детализированного запроса, а также углубимся в стандартные механизмы 1С, которые помогают в партионном учете. Приступим к совместной работе!
Давайте начнем с высокоуровневого алгоритма, который можно реализовать в виде внешнего отчета. Этот подход основан на логике последовательного сопоставления расхода материалов в НЗП с их поступлениями.
Суть метода: Мы ищем документы поступления, которые покрывают количество материалов, находящихся в НЗП, двигаясь от самых свежих поступлений к более ранним, пока не наберем требуемое количество.
ПоступлениеТоваровУслуг, ПриходныйОрдерНаТовары или аналогичный), в табличной части которого присутствует искомая номенклатура.Этот алгоритм позволяет нам определить, какие именно документы поступления (и, соответственно, партии) потенциально формируют текущие остатки материалов в незавершенном производстве, основываясь на хронологическом принципе списания (похожем на ФИФО, но в обратном порядке).
Теперь давайте рассмотрим более сложный, но и более точный подход с использованием запросов 1С. Этот метод позволяет не только найти партии поступления, но и связать их с различными видами списаний и движений материалов. Мы будем использовать временные таблицы для пошагового сбора и анализа данных.
Цель запроса: Выявить все движения материалов (списание в производство, передача, реализация), которые могли бы быть связаны с определенными партиями поступления, и затем сопоставить их с фактическими закупками.
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДоговорыКонтрагентов.Ссылка КАК Договор,
ДоговорыКонтрагентов.ОсновнойПроект КАК Проект,
НоменклатурныеГруппы.Ссылка КАК НГ,
НоменклатурныеГруппы.аркс_ЭтоСтроительныйОбъект
ПОМЕСТИТЬ мСоответсвиеПроектНГ
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НоменклатурныеГруппы КАК НоменклатурныеГруппы
ПО ДоговорыКонтрагентов.ОсновнойПроект = НоменклатурныеГруппы.Проект
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СУММА(УчетЗатратРегл.Количество) КАК Количество,
СУММА(УчетЗатратРегл.Стоимость) КАК Стоимость,
мАналитикаУчетаЗатрат.Затрата,
УчетЗатратРегл.КодОперации,
мАналитикаВидаУчета.Склад,
мАналитикаВидаУчета.СчетУчета
ПОМЕСТИТЬ мСписаниеВПроизводство
ИЗ
РегистрНакопления.УчетЗатратРегл КАК УчетЗатратРегл
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК мАналитикаВидаУчета
ПО УчетЗатратРегл.АналитикаВидаУчета = мАналитикаВидаУчета.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК мАналитикаУчетаЗатрат
ПО УчетЗатратРегл.АналитикаУчетаЗатрат = мАналитикаУчетаЗатрат.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаРаспределенияЗатрат КАК мКорАналитикаРаспределенияЗатрат
ПО УчетЗатратРегл.КорАналитикаРаспределенияЗатрат = мКорАналитикаРаспределенияЗатрат.Ссылка
ГДЕ
УчетЗатратРегл.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
И мАналитикаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.МПЗ)
И мКорАналитикаРаспределенияЗатрат.НоменклатурнаяГруппа В (&НоменклатурнаяГруппа)
И УчетЗатратРегл.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.СписаниеПартийВПроизводствоОперативно)
СГРУППИРОВАТЬ ПО
мАналитикаУчетаЗатрат.Затрата,
мАналитикаВидаУчета.Склад,
мАналитикаВидаУчета.СчетУчета,
УчетЗатратРегл.КодОперации
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СУММА(УчетЗатратРегл.Количество) КАК Количество,
СУММА(УчетЗатратРегл.Стоимость) КАК Стоимость,
мАналитикаУчетаЗатрат.Затрата,
УчетЗатратРегл.КодОперации,
мАналитикаВидаУчета.Склад,
мАналитикаВидаУчета.СчетУчета
ПОМЕСТИТЬ мПередача
ИЗ
РегистрНакопления.УчетЗатратРегл КАК УчетЗатратРегл
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК мАналитикаВидаУчета
ПО УчетЗатратРегл.АналитикаВидаУчета = мАналитикаВидаУчета.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК мАналитикаУчетаЗатрат
ПО УчетЗатратРегл.АналитикаУчетаЗатрат = мАналитикаУчетаЗатрат.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаРаспределенияЗатрат КАК мКорАналитикаРаспределенияЗатрат
ПО УчетЗатратРегл.КорАналитикаРаспределенияЗатрат = мКорАналитикаРаспределенияЗатрат.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПартий КАК мКорАналитикаУчетаПартий
ВНУТРЕННЕЕ СОЕДИНЕНИЕ мСоответсвиеПроектНГ КАК мСоответсвиеПроектНГ
ПО мКорАналитикаУчетаПартий.ДоговорКомиссионера = мСоответсвиеПроектНГ.Договор
ПО УчетЗатратРегл.КорАналитикаУчетаПартий = мКорАналитикаУчетаПартий.Ссылка
ГДЕ
УчетЗатратРегл.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
И мАналитикаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.МПЗ)
И мСоответсвиеПроектНГ.НГ В (&НоменклатурнаяГруппа)
И УчетЗатратРегл.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.ПередачаВПереработку)
СГРУППИРОВАТЬ ПО
УчетЗатратРегл.КодОперации,
мАналитикаВидаУчета.СчетУчета,
мАналитикаУчетаЗатрат.Затрата,
мАналитикаВидаУчета.Склад
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СУММА(УчетЗатратРегл.Количество) КАК Количество,
СУММА(УчетЗатратРегл.Стоимость) КАК Стоимость,
мАналитикаУчетаЗатрат.Затрата,
УчетЗатратРегл.КодОперации,
мАналитикаВидаУчета.Склад,
мАналитикаВидаУчета.СчетУчета
ПОМЕСТИТЬ мРеализация
ИЗ
РегистрНакопления.УчетЗатратРегл КАК УчетЗатратРегл
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК мАналитикаВидаУчета
ПО УчетЗатратРегл.АналитикаВидаУчета = мАналитикаВидаУчета.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК мАналитикаУчетаЗатрат
ПО УчетЗатратРегл.АналитикаУчетаЗатрат = мАналитикаУчетаЗатрат.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.УчетПродажИСебестоимости КАК УчетПродажИСебестоимости
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПартий КАК мАналитикаУчетаПартий
ВНУТРЕННЕЕ СОЕДИНЕНИЕ мСоответсвиеПроектНГ КАК мСоответсвиеПроектНГ
ПО мАналитикаУчетаПартий.ДоговорКомиссионера = мСоответсвиеПроектНГ.Договор
ПО УчетПродажИСебестоимости.АналитикаУчетаПартий = мАналитикаУчетаПартий.Ссылка
ПО УчетЗатратРегл.Регистратор = УчетПродажИСебестоимости.Регистратор
И УчетЗатратРегл.НомерСтроки = УчетПродажИСебестоимости.НомерСтроки
ГДЕ
УчетЗатратРегл.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
И мАналитикаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.МПЗ)
И УчетЗатратРегл.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.Реализация)
И мСоответсвиеПроектНГ.НГ В (&НоменклатурнаяГруппа)
СГРУППИРОВАТЬ ПО
УчетЗатратРегл.КодОперации,
мАналитикаВидаУчета.Склад,
мАналитикаВидаУчета.СчетУчета,
мАналитикаУчетаЗатрат.Затрата
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
мСписаниеВПроизводство.Склад,
мСписаниеВПроизводство.СчетУчета,
мСписаниеВПроизводство.Затрата
ПОМЕСТИТЬ мСписокДляОтбораЗакупок
ИЗ
мСписаниеВПроизводство КАК мСписаниеВПроизводство
ОБЪЕДИНИТЬ
ВЫБРАТЬ
мПередача.Склад,
мПередача.СчетУчета,
мПередача.Затрата
ИЗ
мПередача КАК мПередача
ОБЪЕДИНИТЬ
ВЫБРАТЬ
мРеализация.Склад,
мРеализация.СчетУчета,
мРеализация.Затрата
ИЗ
мРеализация КАК мРеализация
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Контрагент,
ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаПриход,
ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК КоличествоПриход,
ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Склад,
ХозрасчетныйОборотыДтКт.СубконтоДт2 КАК Затрата,
ХозрасчетныйОборотыДтКт.СчетДт КАК СчетУчета
ПОМЕСТИТЬ мЗакупка
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(, , Авто, , &СубконтоДТ, , &СубконтоКТ, ) КАК ХозрасчетныйОборотыДтКт
ГДЕ
(ХозрасчетныйОборотыДтКт.СчетДт, ХозрасчетныйОборотыДтКт.СубконтоДт1, ХозрасчетныйОборотыДтКт.СубконтоДт2) В
(ВЫБРАТЬ
Таб.СчетУчета,
Таб.Склад,
Таб.Затрата
ИЗ
мСписокДляОтбораЗакупок КАК Таб)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СУММА(Таб.Количество) КАК Количество,
СУММА(Таб.Стоимость) КАК Стоимость,
Таб.Затрата,
Таб.КодОперации,
мЗакупка.Контрагент,
СУММА(мЗакупка.СуммаПриход) КАК СуммаПриход,
СУММА(мЗакупка.КоличествоПриход) КАК КоличествоПриход,
Таб.Склад,
Таб.СчетУчета
ИЗ
(ВЫБРАТЬ
мСписаниеВПроизводство.Количество КАК Количество,
мСписаниеВПроизводство.Стоимость КАК Стоимость,
мСписаниеВПроизводство.Затрата КАК Затрата,
мСписаниеВПроизводство.КодОперации КАК КодОперации,
мСписаниеВПроизводство.Склад КАК Склад,
мСписаниеВПроизводство.СчетУчета КАК СчетУчета
ИЗ
мСписаниеВПроизводство КАК мСписаниеВПроизводство
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
мПередача.Количество,
мПередача.Стоимость,
мПередача.Затрата,
мПередача.КодОперации,
мПередача.Склад,
мПередача.СчетУчета
ИЗ
мПередача КАК мПередача
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
мРеализация.Количество,
мРеализация.Стоимость,
мРеализация.Затрата,
мРеализация.КодОперации,
мРеализация.Склад,
мРеализация.СчетУчета
ИЗ
мРеализация КАК мРеализация) КАК Таб
ЛЕВОЕ СОЕДИНЕНИЕ мЗакупка КАК мЗакупка
ПО Таб.Затрата = мЗакупка.Затрата
И Таб.Склад = мЗакупка.Склад
И Таб.СчетУчета = мЗакупка.СчетУчета
СГРУППИРОВАТЬ ПО
Таб.КодОперации,
Таб.Затрата,
мЗакупка.Контрагент,
Таб.Склад,
Таб.СчетУчета
Давайте разберем этот запрос по шагам, чтобы понять его логику:
мСоответсвиеПроектНГ:
Мы начинаем с создания вспомогательной таблицы, которая связывает договоры контрагентов с их основными проектами и номенклатурными группами. Это позволяет нам в дальнейшем фильтровать данные по конкретным проектам или группам номенклатуры, что часто бывает необходимо для детализированного анализа.
Используются справочники Справочник.ДоговорыКонтрагентов и Справочник.НоменклатурныеГруппы.
мСписаниеВПроизводство:
Здесь мы собираем информацию о материалах, списанных непосредственно в производство. Мы используем РегистрНакопления.УчетЗатратРегл, который хранит движения по затратам. Фильтруем по ВидДвиженияНакопления.Расход, РазделыУчета.МПЗ (материально-производственные запасы) и КодыОперацийПартииТоваров.СписаниеПартийВПроизводствоОперативно. Это позволяет нам увидеть количество и стоимость материалов, переданных в НЗП.
Соединяемся с регистрами сведений АналитикаВидаУчета, АналитикаУчетаЗатрат и АналитикаРаспределенияЗатрат для получения детальной аналитики по складу, счету учета и самой затрате.
мПередача:
Аналогично предыдущей, эта таблица собирает данные о материалах, переданных в переработку (что также может рассматриваться как часть НЗП, но у внешних контрагентов). Здесь также используется РегистрНакопления.УчетЗатратРегл, но с фильтром по КодыОперацийПартииТоваров.ПередачаВПереработку. Важным дополнением является соединение через АналитикаУчетаПартий с нашей первой таблицей мСоответсвиеПроектНГ для фильтрации по договорам и проектам.
мРеализация:
Эта таблица собирает данные о материалах, которые были реализованы. Хотя реализация напрямую не связана с НЗП, она может быть частью общего цикла движения материалов и помогает в комплексном анализе партий. Фильтр здесь — КодыОперацийПартииТоваров.Реализация. Также используется РегистрНакопления.УчетПродажИСебестоимости для дополнительной связи.
мСписокДляОтбораЗакупок:
Мы объединяем ключевые аналитические разрезы (склад, счет учета, затрата) из всех предыдущих таблиц списаний/передач/реализаций. Эта таблица будет использоваться как фильтр для следующего шага – поиска фактических закупок.
мЗакупка:
Здесь мы обращаемся к РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт, чтобы получить информацию о приходах материалов. Используя фильтр по мСписокДляОтбораЗакупок, мы выбираем только те закупки, которые относятся к нашим списаниям. Мы получаем контрагента, сумму и количество прихода, а также склад, затрату и счет учета.
Параметры &СубконтоДТ и &СубконтоКТ позволяют нам гибко настроить отбор по субконто дебета и кредита, что критически важно для корректного анализа бухгалтерских проводок.
В завершение мы объединяем все наши движения (списания, передачи, реализации) из первых трех временных таблиц. Затем с помощью ЛЕВОЕ СОЕДИНЕНИЕ мы связываем эти обобщенные движения с данными о закупках из таблицы мЗакупка. Соединение происходит по полям Затрата, Склад и СчетУчета. Это позволяет нам увидеть, какие списанные материалы потенциально соответствуют каким закупкам, и тем самым определить партии поступления.
Группировка по КодОперации, Затрата, Контрагент, Склад, СчетУчета позволяет получить сводные данные по каждому типу движения и связанной с ним закупке.
Этот запрос дает нам мощный инструмент для анализа движения партий и их связи с различными операциями. Он требует хорошего понимания структуры данных в вашей конфигурации 1С, особенно регистров и аналитик учета затрат и партий.
Помимо создания собственных отчетов и запросов, важно использовать и понимать стандартные возможности 1С, которые по умолчанию предназначены для партионного учета и определения партий в НЗП. Давайте выясним, как система решает эту задачу.
Методы оценки и списания материалов:
Система 1С поддерживает различные методы оценки стоимости запасов при их списании в производство. Эти методы напрямую влияют на то, как "партии" материалов учитываются в НЗП и как их стоимость формируется:
Автоматизация партионного учета в 1С:
Для автоматического определения партий поступления, используемых в НЗП, 1С использует мощный механизм расчета себестоимости, который запускается регламентными операциями, чаще всего при выполнении процедуры "Закрытие месяца". Этот механизм анализирует движения по специализированным регистрам накопления, таким как Затраты или ПартииТоваровНаСкладах, и сопоставляет расход материалов с их поступлением согласно выбранному в учетной политике методу оценки.
Детализация партионного учета обеспечивается за счет ведения аналитики по:
ПоступлениеТоваровУслуг) может рассматриваться как отдельная партия.Это позволяет отслеживать путь конкретной единицы материала от поставщика до готовой продукции, даже если для стоимостного учета используется усреднение.
Особенности учета в НЗП:
Материалы, переданные в производство, но еще не использованные для создания готовой продукции, остаются в НЗП. Их стоимость продолжает учитываться на соответствующих счетах затрат (например, на счетах 20, 23, 25, 26 в бухгалтерском учете). Для определения конкретных партий, находящихся в НЗП, необходимо анализировать остатки по регистрам, которые ведут учет в разрезе партий (например, регистр ПартииТоваровНаСкладах или специализированные регистры по материалам в производстве).
Если материалы передаются в НЗП, но их потребление не привязано к конкретным партиям до момента выпуска продукции, то на счетах НЗП они могут учитываться по средней стоимости или другим методам, а уже при фактическом списании в производство или выпуске продукции происходит детализация по партиям в соответствии с выбранной учетной политикой.
Инструменты для анализа:
Помимо внешних отчетов и сложных запросов, как мы рассмотрели выше, для анализа партий в НЗП в 1С используются стандартные отчеты. Мы рекомендуем обратить внимание на следующие:
Таким образом, для более глубокого понимания и контроля партий поступления материалов в НЗП в 1С, помимо предложенных нами методов, важно учитывать стандартные возможности системы по партионному учету, выбранные методы оценки запасов и активно использовать специализированные отчеты для анализа движений и остатков в разрезе партий. Сочетание этих подходов позволит вам получить полную и точную картину.
← К списку