При разработке, тестировании или демонстрации работы интернет-магазинов, интегрированных с 1С, часто возникает потребность в заполнении базы данных большим объемом реальных или максимально приближенных к реальности товаров. Наполнить базу вручную невозможно, парсить сторонние сайты "с нуля" долго и трудоемко, а простые генераторы случайных строк создают нечитаемый контент, который портит визуальное восприятие каталога на сайте.
Для полноценного нагрузочного и интеграционного тестирования требуется структурированная база номенклатуры объемом от 20 000 позиций, желательно содержащая логическое дерево категорий, артикулы, характеристики и ссылки на изображения товаров. Рассмотрим подробнее несколько эффективных, быстрых и бесплатных способов решения этой задачи.
Отрасль торговли автозапчастями характеризуется огромными каталогами (десятки и сотни тысяч позиций). Дистрибьюторы часто выкладывают свои прайс-листы в открытый доступ без авторизации. Это идеальный источник для тестирования производительности поиска, производительности импорта/экспорта и работы с большими объемами данных.
Разберем, где можно взять такие файлы:
Основным недостатком баз автозапчастей является отсутствие изображений в стандартных плоских файлах Excel. Как решить эту проблему, мы рассмотрим в следующих шагах.
Если для тестирования интернет-магазина критически важно наличие картинок (например, для проверки верстки карточек товаров, работы галереи изображений и скорости загрузки медиа на сайт), отличным решением станет использование каталогов производителей одежды.
Крупные бренды (например, производители женского белья, такие как Милавица) предоставляют своим оптовым партнерам структурированные каталоги. В этих выгрузках файлы Excel содержат не только артикулы и размеры, но и ссылки на скачивание архивов с фотографиями, где имена файлов соответствуют кодам или артикулам товаров. Мы можем настроить загрузку таким образом, чтобы 1С автоматически сопоставляла файл картинки с создаваемым элементом справочника Справочники.Номенклатура по ключевому полю (артикулу).
Если тестирование проводится в конфигурациях, поддерживающих современные стандарты интеграции (например, 1С:Управление торговлей, 1С:УНФ или 1С:ERP), самым чистым техническим решением будет подключение встроенного сервиса 1С:Номенклатура.
Многие пользователи считают регистрацию в сервисе избыточной для тестов, однако у платформы есть бесплатный тариф «Старт», который предоставляет доступ к каталогу на 10 000 карточек сроком на 1 год. Преимущество этого метода заключается в том, что карточки товаров загружаются напрямую из облака фирмы 1С. Они имеют идеальную структуру: заполнены штрихкоды, артикулы, единицы измерения, производители, текстовые описания и оригинальные изображения высокого качества. Это позволяет проверить работу сайта в условиях, максимально приближенных к реальной эксплуатации.
Отличным источником данных являются XML или YML (Yandex Market Language) файлы реальных интернет-магазинов. Крупные игроки e-commerce часто держат свои фиды для маркетплейсов в открытом доступе. Подобный файл содержит древовидную структуру категорий, характеристики товаров (свойства) и прямые ссылки на фотографии, размещенные на стабильных серверах (CDN).
Для получения такого файла достаточно воспользоваться поисковым запросом в Яндексе или Google: "filetype:xml yml каталог товаров" или обратиться к открытым партнерским программам крупных мебельных или строительных сетей. Написав простой парсер XML на стороне 1С, вы сможете за пару минут загрузить в базу десятки тысяч товаров с готовой иерархией каталога.
Если вам не требуется реальный смысл в названиях товаров, но важна скорость генерации и наличие уникальных изображений, лучшим решением будет написание собственной обработки генерации данных в 1С. Чтобы не засорять жесткий диск гигабайтами картинок, мы можем использовать публичные API для генерации изображений-заглушек (placeholders).
Проанализируем пример кода, который создает элементы номенклатуры в цикле и привязывает к ним ссылки на генератор случайных картинок:
Процедура СгенерироватьТестовуюНоменклатуру(КоличествоТоваров) Экспорт
РодительскаяГруппа = Справочники.Номенклатура.НайтиПоНаименованию("Тестовый каталог");
Если РодительскаяГруппа.Пустая() Тогда
ГруппаОбъект = Справочники.Номенклатура.СоздатьГруппу();
ГруппаОбъект.Наименование = "Тестовый каталог";
ГруппаОбъект.Записать();
РодительскаяГруппа = ГруппаОбъект.Ссылка;
КонецЕсли;
Для Индекс = 1 По КоличествоТоваров Цикл
// Создаем новый элемент справочника
НовыйТовар = Справочники.Номенклатура.СоздатьЭлемент();
НовыйТовар.Наименование = "Тестовый товар № " + Формат(Индекс, "ЧГ=0");
НовыйТовар.Артикул = "TEST-" + Формат(Индекс, "ЧГ=0");
НовыйТовар.Родитель = РодительскаяГруппа;
// Генерируем случайные характеристики для реалистичности
НовыйТовар.Описание = "Это описание для тестового товара под номером " + Индекс + ". Используется для проверки выгрузки на сайт.";
// Записываем товар, чтобы получить ссылку
НовыйТовар.Записать();
// Привязываем ссылку на внешнее изображение (генератор заглушек)
// Пример использования сервиса Lorem Picsum для получения картинок 640x480
ШиринаИзображения = 640;
ВысотаИзображения = 480;
СсылкаНаКартинку = "https://picsum.photos/" + Строка(ШиринаИзображения) + "/" + Строка(ВысотаИзображения) + "?random=" + Индекс;
// Записываем полученный URL в реквизит номенклатуры (в зависимости от вашей конфигурации)
// Если в конфигурации используется БСП (Библиотека Стандартных Подсистем),
// запись файла обычно идет через регистр сведений "ПрисоединенныеФайлы" или справочник "НоменклатураПрисоединенныеФайлы"
КонецЦикла;
ПоказатьПредупреждение(, "Генерация завершена. Создано элементов: " + КоличествоТоваров);
КонецПроцедуры
При использовании данного подхода интернет-магазин (например, на базе 1С-Битрикс, WooCommerce или CS-Cart) при синхронизации получит XML-файл обмена CommerceML, где в качестве пути к картинке будет указан URL-адрес. Большинство современных CMS умеют автоматически скачивать изображения по внешним ссылкам во время импорта данных из 1С, что избавляет вас от необходимости хранить локальную папку с десятками тысяч файлов картинок на компьютере разработчика.