Как правильно удалить дубль товара и перенести его движения на другую номенклатуру в закрытом периоде 1С

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

В процессе эксплуатации крупных информационных систем на базе 1С, таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация 2 или 1С:Управление торговлей 11, нередко возникает ситуация с появлением дублей номенклатуры. Проблема кажется простой лишь на первый взгляд: заменить одну ссылку на другую. Однако наличие закрытых периодов (например, отчетность за 2018–2019 годы) и использование механизмов «ключей аналитики» превращают эту задачу в серьезное техническое испытание. Проанализируем, почему стандартные средства могут давать сбой и как корректно перенести движения товара, избежав отрицательных остатков.

Выясним причину: почему простая замена не работает?

В современных конфигурациях 1С связь между документом и регистрами накопления реализована через вспомогательные справочники. Рассмотрим подробнее механизм Ключи аналитики учета номенклатуры. Когда мы просто меняем номенклатуру в табличной части документа, ссылка в самом документе обновляется, но «Ключ аналитики» в движениях регистров может остаться прежним. В этом ключе жестко зафиксирована ссылка на старую (удаляемую) номенклатуру.

Второй важный аспект — техническая таблица Виды запасов. Она скрыта от глаз обычного пользователя, но именно она определяет, какой товар (собственный, комиссионный или под назначение) фактически списывается. Если в этой таблице остается старая номенклатура, программа будет продолжать «видеть» ее в отчетах, несмотря на изменения в основной табличной части документа. Это приводит к ситуации, когда по старой позиции висит положительный остаток, а по новой — отрицательный, хотя склад фактически один и тот же.

Разберем по шагам: использование типовой обработки «Поиск и замена дублей»

Первым делом всегда стоит попробовать штатный механизм. Рассмотрим, как это работает:

  1. Переходим в раздел Администрирование — Обслуживание — Корректировка данных.
  2. Выбираем Поиск и замена дублей.
  3. В поле «Искать в» указываем справочник Номенклатура.
  4. Выбираем дублирующуюся позицию и «правильную» карточку, на которую нужно перенести все данные.

Важный нюанс: в конфигурациях ERP и КА этот метод часто натыкается на «затык» в виде даты запрета редактирования. Обработка пытается перепровести документы, чтобы обновить движения по регистрам. Если период (например, 2018 год) закрыт, система выдаст ошибку и замена не будет завершена. Кроме того, типовая обработка иногда может «задвоить» ключи аналитики, что потребует последующей ручной очистки справочников Ключи аналитики учета номенклатуры и Ключи аналитики учета номенклатуры для складов. В качестве альтернативы можно использовать решение для аудита и безопасной замены дублирующихся ссылок.

Решение проблемы через «Групповое изменение реквизитов» в режиме разработчика

Если стандартный поиск дублей не помог из-за блокировки периодов, проанализируем альтернативный путь. Нам потребуется обработка Групповое изменение реквизитов. Чтобы она смогла обойти жесткие ограничения, необходимо включить специальные настройки.

Рассмотрим алгоритм действий:

  1. Открываем обработку Групповое изменение реквизитов.
  2. Нажимаем кнопку Дополнительные параметры и устанавливаем галочки «Включить режим разработчика» и «Выполнять в транзакции». Это позволит нам менять реквизиты объектов, которые защищены от редактирования.
  3. Выбираем нужные документы (например, Приобретение товаров и услуг или Перемещение товаров) и настраиваем отбор по старой номенклатуре.
  4. В списке реквизитов находим поле Номенклатура и устанавливаем новое значение.

Однако помните: изменение ссылки в документе через эту обработку не гарантирует автоматического пересчета регистров и обновления скрытых таблиц. Именно здесь многие сталкиваются с тем, что «количество не изменилось» или «программа ругается, что товара нет». Для устранения таких ошибок подойдёт инструмент для исправления ключей аналитики и видов запасов в проведенных документах.

Правка скрытой таблицы «Виды запасов»

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

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

Метод ручной корректировки через перепроведение (для исключительных случаев)

Как показала практика обсуждения, иногда самым действенным (хотя и трудоемким) методом оказывается следующий порядок действий, который можно автоматизировать с помощью платформы для создания программных роботов:

Шаг 1. В документе (например, перемещении) полностью удалить строку со старой номенклатурой.

Шаг 2. Записать и провести документ (если дата запрета позволяет или временно отключена для администратора).

Шаг 3. Вставить новую номенклатуру в ту же строку.

Шаг 4. Снова провести документ.

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

Программный метод исправления (для разработчиков)

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


// Пример упрощенной логики замены в движениях регистра
НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);
НаборЗаписей.Прочитать();

Для Каждого Запись Из НаборЗаписей Цикл
    Если Запись.Номенклатура = СтараяНоменклатура Тогда
        Запись.Номенклатура = НоваяНоменклатура;
    КонецЕсли;
КонецЦикла;

НаборЗаписей.Записать();

Внимание! При использовании этого метода необходимо обеспечить синхронность изменений во всех связанных регистрах. В ERP их может быть более десятка для одного документа. Особое внимание уделите регистру Аналитика учета номенклатуры, так как именно он является «фундаментом» для большинства складских отчетов.

Рекомендации по предотвращению проблемы

Чтобы в будущем не сталкиваться с необходимостью «хирургического» вмешательства в закрытые периоды, рекомендуем:

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

← На главную