Почему склад не заполняется в движениях регистра 'Партии товаров на складах' после проведения документа 'Отчет производства за смену' в 1С:УПП?

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

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

На первый взгляд кажется, что если склад указан в шапке документа, то этого должно быть достаточно для оприходования готовой продукции на этот склад. Однако, логика учета в 1С:УПП, особенно в части производственных операций, значительно глубже и учитывает множество нюансов, которые определяют, как именно продукция будет отражена в системе. Ключевым моментом здесь является не только наличие склада в шапке, но и детализация выпуска продукции в табличной части документа, а также программный код, который обрабатывает эти детали.

Основная причина: Реквизит "Направление выпуска" в табличной части документа "Продукция"

Главная причина отсутствия склада в движениях регистра "Партии товаров на складах" кроется в реквизите "Направление выпуска", который находится в табличной части "Продукция" документа "Отчет производства за смену". Этот реквизит определяет, куда именно направляется произведенная продукция после завершения производственного цикла.

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

  1. "На склад": Это стандартное направление, при котором готовая продукция поступает на указанный склад. Именно при этом значении мы ожидаем формирования движений в регистре "Партии товаров на складах". Продукция учитывается на складе, и по ней формируются движения для дальнейшего использования или реализации.
  2. "На затраты": Продукция, выпущенная с таким направлением, не приходуется на склад. Вместо этого она сразу списывается на определенные статьи затрат, минуя этап хранения на складе. Это может использоваться для внутренних нужд производства, например, когда полуфабрикат сразу потребляется в следующем переделе, или для продукции, которая не подлежит складскому хранению, а сразу идет на потребление или выполнение услуг. В этом случае движения по складу формироваться не будут, так как товар на склад фактически не поступал.
  3. "В незавершенное производство": Иногда произведенная продукция является полуфабрикатом, который сразу передается в следующий этап производственного процесса без оприходования на склад. Такая продукция увеличивает стоимость незавершенного производства и учитывается уже в другом производственном подразделении или на другом этапе. В этом случае движения по складским регистрам также могут не формироваться, либо формироваться специфическим образом, не связанным с поступлением на конечный склад готовой продукции, а отражая передачу между подразделениями.

Таким образом, даже если в шапке документа "Отчет производства за смену" мы видим заполненное поле "Склад", это поле определяет предполагаемый или основной склад для выпуска, но окончательное решение о движении на склад принимается исходя из значения реквизита "Направление выпуска" для каждой отдельной номенклатурной позиции в табличной части. Это позволяет гибко управлять судьбой выпускаемой продукции в зависимости от производственных нужд.

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

Анализ логики формирования движений в конфигурации

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

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


|ИЗ
| Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ТабличнаяЧасть
|
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И Не ТабличнаяЧасть.Номенклатура.Услуга
| И (ТабличнаяЧасть.НаправлениеВыпуска = &НаправлениеВыпускаНаСклад
|    И ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска
|    ИЛИ
|    Не ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска)

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

  1. ТабличнаяЧасть.Ссылка = &Ссылка: Это стандартное и базовое условие, которое фильтрует строки табличной части "Продукция" по текущему документу "Отчет производства за смену", который мы проводим. Переменная &Ссылка содержит уникальный идентификатор (ссылку) на проводимый документ. Это гарантирует, что мы работаем только с данными нашего конкретного документа, избегая выборки данных из других документов.
  2. И Не ТабличнаяЧасть.Номенклатура.Услуга: Это очень важное условие, касающееся типа номенклатуры. Оно исключает из выборки все позиции, номенклатура которых в справочнике "Номенклатура" имеет признак "Услуга" (например, если ее вид номенклатуры классифицирован как "Услуга" или имеет соответствующий флаг). Услуги по своей природе не являются материальными активами, не могут храниться на складе и, следовательно, не формируют движений по регистру "Партии товаров на складах". Даже если услуга ошибочно попала в табличную часть "Продукция", это условие не позволит сформировать по ней складские движения.
  3. И (ТабличнаяЧасть.НаправлениеВыпуска = &НаправлениеВыпускаНаСклад И ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска ИЛИ Не ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска): Это критически важное и наиболее комплексное условие, которое прямо влияет на нашу проблему с незаполнением склада. Разберем его по логическим блокам:
    • Первая часть: ТабличнаяЧасть.НаправлениеВыпуска = &НаправлениеВыпускаНаСклад И ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска:
      • ТабличнаяЧасть.НаправлениеВыпуска = &НаправлениеВыпускаНаСклад: Эта часть условия проверяет, равно ли значение реквизита "Направление выпуска" в текущей строке табличной части константе (или предопределенному значению перечисления) "На склад". Переменная &НаправлениеВыпускаНаСклад является параметром запроса, который содержит ссылку на предопределенное значение перечисления, указывающее на выпуск продукции на склад. Если продукция должна быть оприходована на склад, это условие должно быть истинным для данной строки.
      • И ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска: Это условие проверяет значение флага "Использовать направления выпуска", который находится в шапке текущего документа (к нему обращаются через ссылку на документ). Если этот флаг установлен (то есть, его значение Истина), это означает, что система настроена на детальный учет направлений выпуска для каждой строки. В таком случае, для формирования движения по складу, одновременно с этим флагом, обязательно должно быть выполнено первое условие (т.е., НаправлениеВыпуска для строки должно быть "На склад"). Если флаг установлен, но в строке указано другое направление (например, "На затраты"), то эта часть условия будет ложной.
    • Вторая часть (альтернативная): ИЛИ Не ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска:
      • Эта часть условия является альтернативной веткой, которая срабатывает, если флаг "Использовать направления выпуска" в шапке документа не установлен (то есть, его значение Ложь). Если флаг снят, это означает, что детализация по направлениям выпуска для каждой строки не используется или не является обязательной. В этом случае, независимо от того, что указано в реквизите "Направление выпуска" в строках табличной части (или даже если оно не заполнено), система по умолчанию считает, что вся продукция предназначена для оприходования на склад, указанный в шапке документа. Это условие предоставляет "обратный" механизм, позволяющий избежать необходимости прописывать "На склад" в каждой строке, если производственный процесс подразумевает единообразный выпуск всей продукции на один склад.

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

    1. Если в документе установлен флаг "Использовать направления выпуска", И для данной строки табличной части "Направление выпуска" явно указано как "На склад". Оба условия должны быть истинными.
    2. Если в документе снят флаг "Использовать направления выпуска". В этом случае, значение реквизита "Направление выпуска" в строках табличной части становится неактуальным для формирования движений по складу (при условии, что номенклатура не является услугой), и все строки продукции документа рассматриваются как выпуск на склад по умолчанию.

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

Дополнительные факторы, влияющие на формирование движений

Помимо реквизита "Направление выпуска" и программной логики, существуют и другие аспекты, которые могут влиять на поведение документа "Отчет производства за смену" в 1С:УПП и вызывать неожиданное отсутствие движений по складу:

  1. Настройки номенклатуры: Как мы уже рассмотрели в запросе, номенклатура, определенная как "Услуга" (условие И Не ТабличнаяЧасть.Номенклатура.Услуга), категорически исключается из формирования движений по складам. Крайне важно убедиться, что тип номенклатуры, по которой вы ожидаете складские движения, правильно классифицирован в справочнике "Номенклатура" и не имеет признака услуги. Если номенклатура является услугой, то она никогда не будет формировать движения по регистру "Партии товаров на складах", поскольку услуги не имеют количественного или стоимостного складского учета в традиционном понимании товарно-материальных ценностей. Проверьте Вид номенклатуры, а также другие специфические настройки в карточке номенклатуры, которые могут влиять на ее учет.
  2. Специфика учета в 1С:УПП: Документ "Отчет производства за смену" в 1С:УПП является комплексным инструментом, предназначенным для отражения всех аспектов производственного цикла за определенный период. Он не только фиксирует выпуск готовой продукции, но и управляет списанием материалов в производство, учетом брака, возвратных отходов и т.д. Документ может заполняться как автоматически на основе плановых данных, маршрутных карт или данных цехового учета, так и вручную корректироваться оператором. В сложной производственной среде важно понимать, что каждое поле и каждая настройка документа имеет свою специфическую роль и может влиять на конечный результат проведения. Простое указание склада в шапке является лишь одним из многих параметров, и оно может быть переопределено, дополнено или даже проигнорировано более детализированными настройками в табличных частях или в алгоритмах проведения документа, особенно если речь идет о нестандартных производственных сценариях.
  3. Плановые и фактические цены: В 1С:УПП продукция, как правило, приходуется на склад в течение месяца по плановым ценам (например, по нормативной себестоимости). Фактическая себестоимость произведенной продукции рассчитывается только при выполнении регламентных операций закрытия месяца. Хотя отсутствие плановой стоимости обычно не препятствует формированию количественных движений по складу (т.е. записи о количестве поступившего товара), оно может вызывать сложности с формированием стоимостных движений или приводить к некорректному расчету себестоимости, что, в свою очередь, может стать причиной ошибок в других регистрах или отчетах. Убедитесь, что для номенклатуры, по которой выпускается продукция, корректно установлены плановые цены или другие необходимые параметры для стоимостной оценки в системе.
  4. Ошибки или нетиповые доработки конфигурации: В редких случаях, проблема может быть вызвана ошибками в самой конфигурации или неаккуратными доработками, которые изменили стандартную логику проведения документа. Если система сильно модифицировалась, стоит рассмотреть возможность анализа различий с типовой конфигурацией.

Пошаговое решение и отладка проблемы

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

  1. Проверка реквизита "Направление выпуска" в табличной части "Продукция"

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

    • Если вы обнаружили, что вместо "На склад" указано "На затраты" или "В незавершенное производство", это и есть непосредственная причина отсутствия движений по складу.
    • Действие: Измените значение реквизита "Направление выпуска" на "На склад" для всех необходимых строк, перепроведите документ и проверьте движения в регистре "Партии товаров на складах".
  2. Анализ флага "Использовать направления выпуска" в шапке документа

    В том же документе "Отчет производства за смену", который вы анализируете, внимательно изучите поля в шапке или на основных вкладках. Найдите флаг (чекбокс) с названием "Использовать направления выпуска". Этот флаг определяет общий подход к учету выпуска продукции в данном документе.

    • Если этот флаг установлен (галочка стоит): это означает, что система ожидает явного указания "Направления выпуска" для каждой строки табличной части. В этом случае, если вы не изменили значение "Направление выпуска" в пункте 1, то оно должно быть "На склад" для каждой строки.
    • Если этот флаг снят (галочки нет): тогда система по умолчанию должна оприходовать всю продукцию на склад, указанный в шапке документа, независимо от того, что указано в колонке "Направление выпуска" в строках (или если оно вообще не заполнено). Если при этом движения по складу все равно не формируются, то причина, скорее всего, кроется в типе номенклатуры (см. пункт 3) или в более сложной логике, которую необходимо отлаживать (см. пункт 4).
    Действие: Попробуйте изменить состояние этого флага (например, снять его, если он был установлен) и перепровести документ, чтобы проверить, как это повлияет на движения. Не забудьте вернуть флаг в исходное состояние, если это типовая настройка для вашего предприятия.
  3. Проверка настроек номенклатуры

    Как мы выяснили из анализа кода, номенклатура типа "Услуга" исключается из движений по складу. Для каждой номенклатурной позиции в документе "Отчет производства за смену", по которой не формируются движения, откройте карточку элемента справочника "Номенклатура".

    • Внимательно изучите "Вид номенклатуры" и другие параметры, которые могут указывать на тип товара. Убедитесь, что для нее не установлен вид номенклатуры "Услуга" или какой-либо другой вид, который по своим свойствам исключает складской учет (например, "Работы", "Вспомогательный" без учета по количеству).
    • Если номенклатура является услугой, то она не будет формировать движения по регистру "Партии товаров на складах", поскольку услуги не имеют материально-вещественной формы.
    • Действие: При необходимости, если номенклатура ошибочно классифицирована как услуга, измените ее вид на соответствующий материальным запасам (например, "Материал", "Полуфабрикат", "Продукция", "ГотоваяПродукция"). После изменения перепроведите документ.
  4. Отладка кода проведения документа

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

    1. Подготовка к отладке:
      • Откройте конфигуратор 1С.
      • Найдите Общий модуль УправлениеПроизводствомДвиженияПоРегистрам. Это можно сделать через дерево объектов конфигурации, раздел "Общие" -> "Общие модули".
      • Внутри этого модуля найдите функцию СформироватьТекстЗапросаПоВыпускуПродукцииНаСкладОтчетПроизводстваЗаСмену(). Используйте поиск по тексту модуля (Ctrl+F) для быстрого нахождения.
      • Установите точку останова (F9) в начале этой функции. Также полезно установить точки останова на ключевых условиях внутри запроса.
    2. Запуск отладки:
      • Запустите 1С в режиме отладки (обычно F5 в конфигураторе, если подключена отладка клиентского приложения, или запуск пользовательского режима через меню "Отладка").
      • В пользовательском режиме откройте проблемный документ "Отчет производства за смену" и попробуйте его перепровести.
    3. Анализ в отладчике:
      • Когда выполнение кода остановится на установленной точке останова, мы сможем пошагово (F10 - шаг через, F11 - шаг в) пройтись по коду и проанализировать значения переменных.
      • Проверьте параметры запроса: Обратите внимание на значение параметра &НаправлениеВыпускаНаСклад. Оно должно соответствовать предопределенному значению перечисления "На склад".
      • Изучите данные документа: Отслеживайте значения ТабличнаяЧасть.НаправлениеВыпуска для каждой строки, а также состояние флага ТабличнаяЧасть.Ссылка.ИспользоватьНаправленияВыпуска, которые поступают из вашего документа.
      • Анализ формирующегося запроса: Особое внимание уделите тому, как формируется текст запроса. Часто полезно скопировать сформированный функцией текст запроса (в том виде, в каком он передается для выполнения) и выполнить его отдельно в "Консоли запросов", подставив свои параметры (ссылку на документ, значение направления выпуска на склад). Это позволит увидеть, какие строки табличной части попадают в итоговую выборку для формирования движений. Если нужные строки не попадают в выборку, это означает, что условия в секции ГДЕ не выполняются для них.
    4. Вывод: Таким образом, с помощью отладки мы точно выясним, какое из условий (по "Направлению выпуска", по флагу "Использовать направления выпуска", по типу "Номенклатуры.Услуга", или, возможно, другие, если есть доработки) не выполняется и препятствует формированию движений по регистру "Партии товаров на складах".
  5. Ревизия типовых настроек и доработок конфигурации

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

    • Действие: Проведите сравнение текущей конфигурации с типовой версией (например, с версией поставщика, на которую вы опираетесь) или с рабочими копиями конфигурации, где документ работал корректно. Используйте инструмент "Сравнить/объединить конфигурации" в конфигураторе. Особое внимание уделите модулю документа "Отчет производства за смену", а также общему модулю УправлениеПроизводствомДвиженияПоРегистрам. Иногда даже небольшое изменение в условии запроса или в логике обработки данных может кардинально изменить его поведение и привести к таким проблемам. Если обнаружены нетиповые изменения, проанализируйте их назначение и оцените возможность отката или корректировки.

Следуя этим всесторонним шагам, мы не только найдем причину отсутствия движений по складу, но и получим глубокое понимание логики работы документа "Отчет производства за смену" в части оприходования готовой продукции в 1С:УПП. Часто, кажущиеся "волшебными" расхождения в поведении документов, объясняются внимательным и методичным изучением настроек и программного кода. Это позволит вам эффективно решать подобные задачи в будущем и поддерживать корректный учет на вашем предприятии.

← На главную