При активном развитии розничного бизнеса часто возникает ситуация, когда первоначальная структура справочника Номенклатура перестает отвечать требованиям учета. Одной из самых сложных задач является переход от «плоского» списка товаров к использованию характеристик, особенно если база уже содержит данные за несколько лет, а количество новых позиций исчисляется десятками тысяч. Разберем подробно, как реализовать этот переход, сохранив историю и не нарушив работу магазинов.
Рассмотрим сценарий: в базе уже ведется учет, но возникла необходимость загрузить 50 000 позиций от поставщика, где на каждый товар приходится до 100 характеристик (размеры, цвета и т.д.). Общий объем записей в справочнике характеристик может составить до 5 000 000. Прежде чем приступать к загрузке, проанализируем технические аспекты.
Важный момент: Если в 1С:Розница у карточки товара уже были движения (продажи, поступления), система не позволит просто включить флаг ИспользоватьХарактеристики. Это связано с тем, что структура регистров накопления (например, ТоварыНаСкладах) жестко разделяет учет по номенклатуре и по паре «Номенклатура + Характеристика». Поэтому просто «догрузить» характеристики к старым карточкам не получится.
Этот метод подходит, если руководство настаивает на сохранении всех документов в одной базе. Разберем алгоритм действий по шагам:
Номенклатура группу «Z_Архив» или «Старая номенклатура». Переместим туда все текущие позиции.НоменклатураПоставщиков. Рассмотрим пример логики поиска при загрузке:
// Пример логики поиска при загрузке данных
Функция НайтиИлиСоздатьНоменклатуру(ДанныеФайла)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Артикул = &Артикул";
Запрос.УстановитьПараметр("Артикул", ДанныеФайла.Артикул);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
НовыйОбъект = Справочники.Номенклатура.СоздатьЭлемент();
// Заполнение реквизитов
НовыйОбъект.Записать();
Возврат НовыйОбъект.Ссылка;
Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецЕсли;
КонецФункции
Использование обработки «Поиск и замена значений»: Чтобы избавиться от старой номенклатуры в документах и отчетах, можно воспользоваться стандартной обработкой. Она найдет все ссылки на старый товар «Кроссовки» и заменит их на новый товар «Кроссовки» с выбранной пустой или конкретной характеристикой. После этого старые карточки можно пометить на удаление и физически удалить из базы через УдалениеПомеченныхОбъектов.
Проанализируем ситуацию, когда база сильно захламлена. Зачастую проще создать новую базу, чем пытаться вычистить старую. Выясним, почему это может быть эффективнее:
Инвентаризацию позволяет актуализировать данные на полках и сразу привязать их к новым характеристикам.Многие опасаются перехода из-за онлайн-касс (ККТ). Проанализируем этот страх: онлайн-касса не «привязана» к конкретной базе 1С. Она привязана к регистрационному номеру в ФНС и фискальному накопителю. Для 1С касса — это просто периферийное устройство. Достаточно прописать в новой базе настройки подключения (драйвер, порт), и касса продолжит работать без перерегистрации.
При таком огромном объеме (50 000 товаров) критически важно выбрать правильный тип характеристик. Выделим два подхода:
Рассмотрим, как технически перенести остатки со старой номенклатуры на новую в рамках одной базы. Посмотрим на алгоритм через документ ПересортицаТоваров:
ОтражениеРасхожденийПриИнвентаризации.Проанализируем ситуацию с автоматизацией этого процесса. Если соответствие между старым товаром и новой характеристикой нельзя установить программно (например, в старой базе не было данных о цвете), то единственный выход — ручная инвентаризация. Сотрудник магазина должен физически взять товар, найти его новую карточку с нужной характеристикой в системе и зафиксировать остаток.
Если вы решили остаться в старой базе, но хотите ее ускорить, выполним свертку. Свертка удаляет документы за прошлые периоды (например, за прошлый год) и создает один документ ВводОстатков. Это позволит:
Однако помните, что свертка не удаляет сами элементы справочников. Чтобы удалить старую номенклатуру, по ней не должно быть движений ни в одном периоде, включая те, что вошли в свертку. Поэтому использование обработки ПоискИЗаменаЗначений часто является более эффективным инструментом, чем просто свертка.
Выясним, какой путь выбрать именно вам. Если у вас есть возможность провести полную инвентаризацию и несколько часов на настройку торгового оборудования — создавайте новую базу. Это гарантирует отсутствие ошибок в будущем и правильную структуру характеристик (общих для вида номенклатуры). Если же важна непрерывная история продаж в одном отчете за 2-3 года — используйте метод архивирования и замены значений, предварительно сделав полную копию базы для тестов.