В процессе ведения учета в программе 1С:Розница (а также в смежных конфигурациях, таких как Управление нашей фирмой или Управление торговлей) пользователи часто совершают ошибку: включают ведение учета по характеристикам для товаров, которым это не требуется. Со временем, когда по товару уже накопилась история продаж и остатков, возникает необходимость вернуть учет к классическому виду — без использования характеристик. Однако просто так изменить вид номенклатуры в карточке товара система не позволит, а принудительный обход ограничений может привести к серьезным техническим ошибкам в базе данных.
В этой статье мы подробно рассмотрим, почему возникает эта проблема, проанализируем технические риски «быстрых» решений и разберем по шагам несколько безопасных и эффективных сценариев исправления ситуации.
Давайте выясним причину, по которой платформа блокирует изменение реквизитов, связанных с учетом по характеристикам, если по товару уже есть движения. При проведении документов (например, Поступление товаров, Реализация товаров или Чек ККМ) программа делает записи не только в сами документы, но и в специальные таблицы — регистры накопления. К ним относятся такие важные регистры, как Товары на складах, Запасы, Выручка и продажи.
Записи в этих регистрах хранятся в строгом разрезе аналитики. Если для товара были включены характеристики, то в регистре накопления остаток запишется по связке: Номенклатура + Характеристика (например, Сумка женская + Красная).
Если вы принудительно разблокируете реквизиты карточки товара и смените вид номенклатуры на «без характеристик», произойдет следующее:
Рассмотрим далее четыре способа решения этой проблемы — от простых и безопасных до сложных программных методов.
Если позиций с ошибочными характеристиками немного, лучшим решением будет проведение локальной инвентаризации. Этот метод позволяет сохранить исторические данные в полной чистоте и перевести текущий учет на рельсы без характеристик.
Разберем этот процесс по шагам:
Остатки на складах (или Остатки товаров) с детализацией до характеристик. Запишите или сохраните в файл текущие остатки по проблемной номенклатуре.Списание товаров (или воспользуйтесь документом Пересчет товаров). Внесите туда проблемный товар и обязательно укажите те характеристики, по которым числятся остатки. Проведите документ. Теперь текущие остатки по этой номенклатуре в системе равны нулю.Еще и выберите пункт Разрешить редактирование реквизитов. Система выдаст предупреждение, но позволит изменить вид номенклатуры на новый (тот, в котором характеристики отключены), поскольку текущих остатков в базе больше нет. Сохраните изменения.Оприходование товаров. Добавьте в него тот же товар, укажите количество, которое вы списали во втором шаге, но поле Характеристика оставьте пустым. Проведите документ.В результате этого маневра прошлые периоды и продажи остаются корректными, а весь новый учет, начиная с даты оприходования, ведется без использования характеристик.
Если товар активно продавался на протяжении долгого времени и документов по нему накопилось слишком много, ручная очистка истории может занять недели. В этом случае проще и надежнее завести новую позицию.
Проанализируем алгоритм этого метода:
[НЕ ИСПОЛЬЗОВАТЬ] Сумка женская. Также в карточке установите флаг Архив (или снимите галочку Использовать в продажах/закупках), чтобы менеджеры и кассиры не могли выбрать старую позицию в новых документах.Пересортица товаров. В качестве списываемого товара укажите старую позицию с характеристикой, а в качестве приходуемого — новую позицию без характеристики.Этот способ гарантирует, что база данных не пострадает, отчеты за прошлые периоды будут сходиться до копейки, а новые продажи пойдут по чистой аналитике.
Если руководство компании категорически настаивает на том, чтобы очистить характеристики во всей истории документов задним числом, вам придется прибегнуть к программным методам. Помните, что перед выполнением любых подобных операций создание резервной копии базы данных является строго обязательным!
Рассмотрим, как реализовать этот сценарий с помощью стандартной обработки Групповое изменение реквизитов:
Групповое изменение реквизитов (раздел Администрирование — Обслуживание — Корректировка данных).Изменять выберите тип документов, которые содержат продажи данного товара (например, Чек ККМ, Реализация товаров и услуг).Товары должна содержаться конкретная проблемная номенклатура.Дополнительные параметры и установите режим выполнения алгоритма. Нам потребуется выполнить произвольный код на языке 1С для обработки каждой строки табличной части.
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("ЦУ000000183") Тогда
// Очищаем характеристику в строке документа
СтрокаТЧ.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЕсли;
КонецЦикла;
Этот код перебирает строки табличной части Товары выбранного документа, находит нужную номенклатуру по коду и принудительно очищает ссылку на характеристику.
Важное предупреждение: После выполнения этого скрипта все обработанные документы необходимо обязательно перепровести стандартным образом (без использования режима загрузки данных). Только в этом случае платформа 1С пересчитает движения в регистрах накопления и уберет характеристики из остатков. Будьте готовы к тому, что на базе с большим объемом документов процесс перепроведения может занять длительное время.
Если у вас около 500 позиций номенклатуры, которые были ошибочно заведены с характеристиками, ручной или полуавтоматический поиск документов по каждой позиции через групповое изменение займет колоссально много времени. В таких ситуациях профессиональные разработчики используют встроенный инструмент Поиск и удаление дублей.
Рассмотрим схему работы этого метода:
Администрирование — Обслуживание — Корректировка данных — Поиск и удаление дублей.Номенклатура. Укажите в качестве «Оригинала» созданную новую карточку товара без характеристик, а в качестве «Дубля» — старую карточку с характеристиками.Данный метод работает значительно быстрее написания индивидуальных циклов под каждый документ и гарантирует корректное обновление большинства ссылок в базе данных.
Подводя итоги, дадим несколько практических советов для минимизации рисков при работе с характеристиками в 1С: