При работе с товарными каталогами, особенно в таких нишах, как продажа запчастей для бензо- и электроинструмента, мы часто сталкиваемся с необходимостью связать одну деталь с множеством моделей техники. Например, один и тот же бензобак может подходить к пяти разным моделям бензопил. В терминах баз данных это называется связью «многие ко многим».
Ситуация осложняется, если учет ведется в Базовой версии 1С:Розница. В таких конфигурациях внесение изменений в структуру метаданных (добавление новых справочников или регистров сведений) запрещено на уровне лицензии. Разберем подробно, как решить эту задачу, используя только штатные механизмы и внешние обработки.
Проанализируем наиболее «чистый» с точки зрения архитектуры способ — механизм Сегменты номенклатуры. Этот инструмент позволяет объединять товары в группы по произвольным признакам, при этом один товар может одновременно находиться в неограниченном количестве сегментов.
Рассмотрим пошагово, как это применить для нашей задачи:
Преимущество этого метода в том, что данные хранятся в стандартном регистре сведений НоменклатураСегмента, что обеспечивает высокую скорость выборки даже при больших объемах данных.
Рассмотрим нестандартный, но эффективный подход, предложенный участниками обсуждения. Мы можем использовать регистр сведений Штрихкоды или КодыТоваровSKU для хранения меток совместимости.
Суть метода заключается в следующем: для каждой запчасти создается запись в таблице штрихкодов, где в качестве значения указывается не реальный код с упаковки, а артикул или ID основной техники. Таким образом, одной запчасти можно присвоить неограниченное количество «штрихкодов», каждый из которых будет служить ссылкой на модель техники.
Пример логики поиска запчастей для модели с кодом "BP-100":
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Номенклатура КАК Запчасть
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод = &КодМоделиТехники";
Запрос.УстановитьПараметр("КодМоделиТехники", "BP-100");
Результат = Запрос.Выполнить().Выгрузить();
Этот способ позволяет реализовать мгновенный поиск подходящих деталей в окне подбора без необходимости создания сложных структур.
В типовой «1С:Розница» существует штатный функционал для кросс-продаж. Хотя он предназначен для того, чтобы кассир предлагал батарейки к фонарику, мы можем использовать его для связи «Инструмент — Запчасти».
Разберем, как это реализовать:
Данный метод хорош тем, что он визуально понятен пользователю и не требует программирования для ввода данных. Информация хранится в регистре сведений СопутствующиеТовары. Для реализации удобного подбора в документах (например, в Заказе покупателя или Чек ККМ) достаточно будет написать небольшую внешнюю обработку заполнения, которая будет обращаться к этому регистру.
Если количество связей измеряется десятками тысяч (например, в автозапчастях), хранение их внутри объектов номенклатуры может замедлить работу базы. В этом случае проанализируем вариант с использованием внешних файлов данных.
Рассмотрим алгоритм реализации:
ДополнительныйРеквизит у номенклатуры с типом «Строка», куда будем записывать уникальный идентификатор для связи с внешней базой.Пример структуры JSON-файла для хранения связей:
[
{
"tool_id": "MOTO-001",
"parts": ["ZAP-10", "ZAP-11", "ZAP-15"]
},
{
"tool_id": "MOTO-002",
"parts": ["ZAP-10", "ZAP-22"]
}
]
Такой подход позволяет обходить ограничения Базовой версии по объему данных и сложности запросов, сохраняя при этом типовую конфигурацию в девственном виде.
Выясним еще одну возможность, скрытую в настройках. В «Рознице» можно включить использование номенклатуры поставщиков. Этот справочник по своей сути уже является механизмом сопоставления «один ко многим» (один ваш товар может соответствовать нескольким товарам разных поставщиков).
Мы можем перевернуть эту логику: использовать элементы справочника НоменклатураПоставщиков как аналоги или кросс-ссылки на модели техники. Это позволит хранить артикулы производителей и связывать их с вашей основной карточкой запчасти. Главный плюс здесь — наличие штатных отчетов, которые умеют работать с этими связями.
Выбор конкретного метода зависит от объема данных и требуемого удобства для персонала:
Важно: Помните, что в Базовой версии основной упор всегда идет на внешние обработки и отчеты. Именно они позволяют реализовать недостающую бизнес-логику (автоматический подбор аналогов, групповую проверку совместимости), не нарушая возможности автоматического обновления программы.