Как изменить вид номенклатуры и отключить характеристики у товара с движениями в 1С:Розница

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

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

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

В чем опасность простого изменения вида номенклатуры?

Давайте выясним причину, по которой платформа блокирует изменение реквизитов, связанных с учетом по характеристикам, если по товару уже есть движения. При проведении документов (например, Поступление товаров, Реализация товаров или Чек ККМ) программа делает записи не только в сами документы, но и в специальные таблицы — регистры накопления. К ним относятся такие важные регистры, как Товары на складах, Запасы, Выручка и продажи.

Записи в этих регистрах хранятся в строгом разрезе аналитики. Если для товара были включены характеристики, то в регистре накопления остаток запишется по связке: Номенклатура + Характеристика (например, Сумка женская + Красная).

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

  1. Появление «фантомных» остатков. Система перестанет видеть поле «Характеристика» в карточке товара, но в таблицах регистров накопления остатки по прошлым операциям так и останутся лежать на характеристике «Красная». В результате в отчетах по складам вы начнете видеть расхождения, а при попытке продать или списать этот товар программа будет выдавать ошибку: «Недостаточно товара на складе».
  2. Нарушение расчета себестоимости. Партионный учет и расчет себестоимости в 1С строятся на основе полной аналитики учета. Смена вида номенклатуры задним числом приведет к тому, что расчет себестоимости за прошлые периоды начнет выдавать ошибки, а финансовые результаты «поплывут».
  3. Проблема режима «Обмен данными = Истина». Запись документов с этим флагом (который часто советуют на форумах для ускорения процесса) действительно позволяет быстро очистить реквизиты в документах. Но при этом движения по регистрам не пересчитываются. База данных фактически теряет ссылочную целостность: в документе характеристики нет, а в движениях этого документа она осталась.

Рассмотрим далее четыре способа решения этой проблемы — от простых и безопасных до сложных программных методов.

Способ 1. Учетный путь через инвентаризацию (Рекомендуемый и самый безопасный)

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

Разберем этот процесс по шагам:

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

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

Способ 2. Создание новой карточки товара (Альтернативный чистый способ)

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

Проанализируем алгоритм этого метода:

  1. Создайте новую карточку номенклатуры. Назовите ее так же, но задайте ей правильный вид номенклатуры (без характеристик).
  2. Для старой карточки измените наименование, добавив в начало префикс, например: [НЕ ИСПОЛЬЗОВАТЬ] Сумка женская. Также в карточке установите флаг Архив (или снимите галочку Использовать в продажах/закупках), чтобы менеджеры и кассиры не могли выбрать старую позицию в новых документах.
  3. Перенесите остатки со старой карточки на новую с помощью документа Пересортица товаров. В качестве списываемого товара укажите старую позицию с характеристикой, а в качестве приходуемого — новую позицию без характеристики.

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

Способ 3. Программная корректировка документов через групповое изменение реквизитов

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

Рассмотрим, как реализовать этот сценарий с помощью стандартной обработки Групповое изменение реквизитов:

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

Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    Если СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("ЦУ000000183") Тогда
        // Очищаем характеристику в строке документа
        СтрокаТЧ.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
    КонецЕсли;
КонецЦикла;

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

Важное предупреждение: После выполнения этого скрипта все обработанные документы необходимо обязательно перепровести стандартным образом (без использования режима загрузки данных). Только в этом случае платформа 1С пересчитает движения в регистрах накопления и уберет характеристики из остатков. Будьте готовы к тому, что на базе с большим объемом документов процесс перепроведения может занять длительное время.

Способ 4. Использование обработки «Поиск и замена дублей»

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

Рассмотрим схему работы этого метода:

  1. Создайте новую правильную номенклатуру без характеристик (для каждой из 500 позиций). Чтобы автоматизировать этот процесс, можно написать простую обработку, которая скопирует наименования и создаст новые карточки с правильным видом номенклатуры.
  2. Перейдите в раздел Администрирование — Обслуживание — Корректировка данных — Поиск и удаление дублей.
  3. В качестве области поиска выберите справочник Номенклатура. Укажите в качестве «Оригинала» созданную новую карточку товара без характеристик, а в качестве «Дубля» — старую карточку с характеристиками.
  4. Запустите процесс объединения. Платформа 1С самостоятельно найдет все упоминания старой карточки во всех документах, регистрах, заказах и ценах, после чего заменит ее на новую карточку. Поле характеристики при этом автоматически очистится, так как новая карточка не поддерживает ведение характеристик на уровне метаданных.

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

Резюме и рекомендации

Подводя итоги, дадим несколько практических советов для минимизации рисков при работе с характеристиками в 1С:

← На главную