В процессе эксплуатации крупных информационных систем на базе 1С, таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация 2 или 1С:Управление торговлей 11, нередко возникает ситуация с появлением дублей номенклатуры. Проблема кажется простой лишь на первый взгляд: заменить одну ссылку на другую. Однако наличие закрытых периодов (например, отчетность за 2018–2019 годы) и использование механизмов «ключей аналитики» превращают эту задачу в серьезное техническое испытание. Проанализируем, почему стандартные средства могут давать сбой и как корректно перенести движения товара, избежав отрицательных остатков.
В современных конфигурациях 1С связь между документом и регистрами накопления реализована через вспомогательные справочники. Рассмотрим подробнее механизм Ключи аналитики учета номенклатуры. Когда мы просто меняем номенклатуру в табличной части документа, ссылка в самом документе обновляется, но «Ключ аналитики» в движениях регистров может остаться прежним. В этом ключе жестко зафиксирована ссылка на старую (удаляемую) номенклатуру.
Второй важный аспект — техническая таблица Виды запасов. Она скрыта от глаз обычного пользователя, но именно она определяет, какой товар (собственный, комиссионный или под назначение) фактически списывается. Если в этой таблице остается старая номенклатура, программа будет продолжать «видеть» ее в отчетах, несмотря на изменения в основной табличной части документа. Это приводит к ситуации, когда по старой позиции висит положительный остаток, а по новой — отрицательный, хотя склад фактически один и тот же.
Первым делом всегда стоит попробовать штатный механизм. Рассмотрим, как это работает:
Поиск и замена дублей.Номенклатура.Важный нюанс: в конфигурациях ERP и КА этот метод часто натыкается на «затык» в виде даты запрета редактирования. Обработка пытается перепровести документы, чтобы обновить движения по регистрам. Если период (например, 2018 год) закрыт, система выдаст ошибку и замена не будет завершена. Кроме того, типовая обработка иногда может «задвоить» ключи аналитики, что потребует последующей ручной очистки справочников Ключи аналитики учета номенклатуры и Ключи аналитики учета номенклатуры для складов. В качестве альтернативы можно использовать решение для аудита и безопасной замены дублирующихся ссылок.
Если стандартный поиск дублей не помог из-за блокировки периодов, проанализируем альтернативный путь. Нам потребуется обработка Групповое изменение реквизитов. Чтобы она смогла обойти жесткие ограничения, необходимо включить специальные настройки.
Рассмотрим алгоритм действий:
Групповое изменение реквизитов.Приобретение товаров и услуг или Перемещение товаров) и настраиваем отбор по старой номенклатуре.Номенклатура и устанавливаем новое значение.Однако помните: изменение ссылки в документе через эту обработку не гарантирует автоматического пересчета регистров и обновления скрытых таблиц. Именно здесь многие сталкиваются с тем, что «количество не изменилось» или «программа ругается, что товара нет». Для устранения таких ошибок подойдёт инструмент для исправления ключей аналитики и видов запасов в проведенных документах.
Проанализируем ситуацию, когда замена в шапке документа произошла, но остатки не «переехали». Проблема кроется в таблице Виды запасов. Посмотрим, как найти и поправить эти данные:
Виды запасов содержит старую номенклатуру, ее нужно актуализировать. Иногда для этого достаточно удалить строку с товаром из основной части, сохранить документ (без проведения), а затем добавить новую номенклатуру и провести.Товары на складах, Товары организаций, Выручка и себестоимость продаж).Как показала практика обсуждения, иногда самым действенным (хотя и трудоемким) методом оказывается следующий порядок действий, который можно автоматизировать с помощью платформы для создания программных роботов:
Шаг 1. В документе (например, перемещении) полностью удалить строку со старой номенклатурой.
Шаг 2. Записать и провести документ (если дата запрета позволяет или временно отключена для администратора).
Шаг 3. Вставить новую номенклатуру в ту же строку.
Шаг 4. Снова провести документ.
Этот цикл заставляет систему заново сгенерировать правильные ключи аналитики и заполнить Виды запасов актуальными данными. Если же период закрыт окончательно и перепроводить нельзя, единственным выходом остается программная запись в наборы записей регистров.
Если вы обладаете навыками программирования, можно написать небольшую внешнюю обработку, которая заменит ссылку на номенклатуру непосредственно в движениях, не затрагивая сам документ и не требуя его перепроведения. Рассмотрим пример логики:
// Пример упрощенной логики замены в движениях регистра
НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.Номенклатура = СтараяНоменклатура Тогда
Запись.Номенклатура = НоваяНоменклатура;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
Внимание! При использовании этого метода необходимо обеспечить синхронность изменений во всех связанных регистрах. В ERP их может быть более десятка для одного документа. Особое внимание уделите регистру Аналитика учета номенклатуры, так как именно он является «фундаментом» для большинства складских отчетов.
Чтобы в будущем не сталкиваться с необходимостью «хирургического» вмешательства в закрытые периоды, рекомендуем:
Подводя итог, можно сказать: перенос движений в 1С — это не просто замена ссылок, а работа с целостностью данных в сложных регистрах. Использование Группового изменения реквизитов в режиме разработчика в сочетании с контролем таблицы Виды запасов является наиболее эффективным способом решения проблемы без тотального пересчета себестоимости за прошлые годы.