Как изменить "Вид запасов" у материалов в документе "Производство без заказа" в 1С:ERP после схлопывания номенклатуры?

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

Мы сталкиваемся с достаточно распространенной и сложной проблемой в 1С:ERP, когда после таких операций, как объединение номенклатуры (или "схлопывание", как ее называет автор темы) с помощью стандартной обработки Поиск и удаление дублей, документ "Производство без заказа" перестает корректно проводить материалы из-за неверного "Вида запасов". Стандартное перепроведение документа, к сожалению, не решает эту проблему, что может привести к отрицательным остаткам и затруднениям в учете. Давайте вместе разберемся в причинах такого поведения системы и рассмотрим возможные пути решения.

Понимание природы "Вида запасов" в 1С:ERP и причины проблемы

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

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

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

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

Что это означает для нас? Это означает, что при отмене проведения документа и его повторном проведении (как предлагает Сообщение 8), система не перезаполняет автоматически Вид запасов материалов на актуальный (в таких случаях часто помогает заполнение передачи материалов в производство по отрицательным остаткам). Она использует тот Вид запасов, который был зафиксирован в документе при его первом проведении. Именно это объясняет проблему, описанную в Сообщении 9, когда, несмотря на наличие остатков, документ не проводится или формирует минусы по "старому" Виду запасов.

Дополнительно отметим, что изменение Группы финансового учета в карточке номенклатуры не повлияет на уже проведенные документы, так как ГФУ была зафиксирована в Виде запасов в момент поступления. Это еще один аспект, который может приводить к расхождениям.

Причины возникновения проблемы после "схлопывания номенклатуры"

Автор темы упоминает, что проблемы стали возникать после "схлопывания номенклатуры" с использованием стандартной обработки Поиск и удаление дублей (Сообщение 6). Давайте подробнее рассмотрим, как эта операция влияет на наш учет.

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

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

Стандартные подходы к решению и почему они могут не сработать

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

1. Отмена проведения и повторное проведение документа

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

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

2. Отключение контроля остатков

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

  1. Минусовые остатки по некорректному Виду запасов.
  2. "Зависшие" остатки по корректному Виду запасов, которые система не смогла списать.

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

Эффективные решения для корректировки "Вида запасов" в 1С:ERP

Поскольку стандартные методы не позволяют нам решить проблему, давайте рассмотрим подходы, которые действительно помогут исправить некорректный Вид запасов в документе Производство без заказа.

1. Ручная корректировка "Вида запасов" через интерфейс (если доступно)

В некоторых документах 1С:ERP, предназначенных для списания или реализации товаров, предусмотрена возможность ручной корректировки Вида запасов. Например, в документе Реализация товаров и услуг можно найти команду Еще – Открыть виды запасов или Указать виды запасов вручную. Эти опции позволяют нам выбрать из имеющихся на остатке Видов запасов тот, который нам нужен, и скорректировать количество.

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

Действия:

  1. Откройте документ Производство без заказа.
  2. Перейдите на вкладку Материалы и работы.
  3. Нажмите кнопку Еще в командной панели табличной части или правой кнопкой мыши по строке с материалом.
  4. Ищите команды, связанные с "видами запасов" (например, "Указать виды запасов").
  5. Если найдете, выберите нужную команду и укажите актуальный Вид запасов из доступных остатков.
  6. Проведите документ.

2. Использование внешних обработок для массовой корректировки

Если проблема затрагивает большое количество документов или ручной способ неудобен, особенно после крупной операции по объединению номенклатуры, наиболее эффективным решением является разработка или использование специализированной внешней обработки — для этого подойдёт внешняя обработка исправления видов запасов и ГТД. Автор темы в Сообщении 17 также пришел к выводу о необходимости такой обработки.

Как работает такая обработка:

  1. Анализ документов: Обработка просматривает выбранные документы Производство без заказа, идентифицируя материалы с некорректными Видами запасов.
  2. Анализ остатков: Для каждой номенклатурной позиции обработка анализирует фактические остатки на складе в разрезе всех доступных Видов запасов на дату документа.
  3. Перераспределение: На основе анализа остатков обработка корректирует табличные части документов, распределяя количество материалов по корректным Видам запасов, которые фактически есть в наличии.
  4. Перепроведение: После корректировки табличных частей обработка перепроводит документы, уже с учетом обновленной аналитики Вид запасов.

Такие обработки могут быть разработаны самостоятельно или найдены на специализированных ресурсах. Они требуют знаний платформы 1С и структуры данных 1С:ERP, поэтому часто их создают или адаптируют программисты.


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

// Получаем ссылку на проблемный документ "Производство без заказа"
ДокументОбъект = СсылкиНаПроблемныеДокументы.ПолучитьОбъект();

// Отменяем проведение документа для возможности его изменения
ДокументОбъект.ОтменитьПроведение();

// В ERP "ВидыЗапасов" обычно хранятся неявно или их корректировка происходит через движения.
// Здесь потребуется более глубокий анализ структуры метаданных и регистров.
// Например, мы можем пересоздать строки табличной части "Материалы" или использовать служебные методы,
// которые влияют на выбор партий при проведении.

Для Каждого СтрокаМатериалов Из ДокументОбъект.Материалы Цикл
    Номенклатура = СтрокаМатериалов.Номенклатура;
    КоличествоНеобходимое = СтрокаМатериалов.Количество;
    
    // Получаем актуальные ВидыЗапасов по этой номенклатуре на складе на дату документа.
    // Этот шаг требует запроса к регистрам "ТоварыОрганизаций", "ПартииТоваровНаСкладах" и т.д.
    // Пример функции (заглушка):
    // АктуальныеВидыЗапасов = ПолучитьАктуальныеВидыЗапасовПоНоменклатуре(Номенклатура, ДокументОбъект.Дата, ДокументОбъект.Склад);
    
    // В реальной обработке здесь могла бы быть сложная логика:
    // - формирование временных движений
    // - вызов служебных процедур проведения с параметрами,
    //   позволяющими выбрать конкретный вид запасов из доступных остатков.
    // - возможное прямое редактирование записей регистров (только с полным пониманием!)
    //   или использование стандартных механизмов переопределения партий.

    // В большинстве случаев потребуется не просто изменить поле в табличной части,
    // а создать механизм, который на уровне проведения документа заставит его
    // выбрать правильный ВидЗапасов из доступных остатков.
    // Это может быть связано с переопределением источников партий.

    // Если бы ВидЗапасов был напрямую в ТЧ материалов и его изменение влияло на проведение:
    // СтрокаМатериалов.ВидЗапасов = НовыйКорректныйВидЗапасов;
    
    // Для более глубокой работы с видами запасов в ERP часто используют
    // механизмы управления партиями (например, через функционал "Перемещение товаров")
    // или специальные служебные функции.
КонецЦикла;

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

3. Использование "Редактора объектов ИБ" (IB Object Editor) как крайней меры

В случае, когда никакие другие методы не помогают, а количество документов незначительно, некоторые специалисты прибегают к прямому редактированию данных с помощью "Редактора объектов ИБ" (Сообщение 15) или аналогичных инструментов.

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

Если вы все же решаетесь на этот шаг, обязательно выполните полное резервное копирование информационной базы перед началом работы. Через "Редактор объектов ИБ" можно будет найти проблемный документ, открыть его табличные части и попытаться вручную изменить значение поля ВидЗапасов. Однако, стоит помнить, что ВидЗапасов — это ссылка на элемент справочника, и его изменение требует аккуратности. Кроме того, после изменения данных таким образом потребуется перепроведение документа для формирования движений, и нет гарантии, что система не перезапишет ВидЗапасов обратно, если логика проведения жестко привязана к старым данным.

4. Инструмент "Закрытие месяца"

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

Рекомендации и важность тестирования

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

  1. Работайте на копии базы: Прежде чем применять любые изменения в рабочей информационной базе, обязательно протестируйте их на актуальной копии. Это позволит избежать непредвиденных проблем и потери данных.
  2. Резервное копирование: Перед любыми серьезными изменениями или использованием прямого редактирования данных (например, через Редактор объектов ИБ) всегда создавайте полное резервное копирование базы.
  3. Консультация со специалистами: Если вы не уверены в своих действиях или не имеете достаточного опыта работы с внутренней структурой 1С:ERP, обратитесь за помощью к квалифицированным специалистам или разработчикам 1С.
  4. Проверка после изменений: После внесения корректировок обязательно проверьте корректность учета: остатки по складам и в регистрах, движения документов, отсутствие отрицательных остатков.

Проблема некорректного Вида запасов, особенно после объединения номенклатуры, требует внимательного и системного подхода. Понимание внутренних механизмов работы 1С:ERP помогает выбрать наиболее подходящее и безопасное решение.

← На главную