Начало работы

Регистрация компании

Регистрация на сайте — это заявка на подключение. Менеджер свяжется с вами, обсудит задачи и после

договора создаст аккаунт компании вместе с первым пользователем — администратором. Если у вашей

компании уже есть аккаунт, регистрироваться не нужно: попросите администратора завести вам учётную

запись на странице «Пользователи».

Как оставить заявку

  1. На стартовой странице нажмите «Регистрация» в правом верхнем углу.

  2. Заполните форму: обязательны e-mail и номер телефона (не короче 7 символов), имя и фамилия — по желанию.

  3. Отправьте форму. Появится сообщение «Ваши данные успешно сохранены! Наш менеджер свяжется с вами в

    ближайшее время», а на e-mail придёт письмо «Регистрация в catalog.app».

Сразу войти после заявки нельзя — аккаунта ещё нет. Его создаёт менеджер, когда договор заключён, и

подсказывает, как войти.

Если на этот e-mail уже заведён пользователь, форма так и ответит: «Адрес электронной почты уже

используется другим аккаунтом». Тогда заявка не нужна — войдите или сбросьте пароль.

Если забыли пароль

На странице входа есть ссылка «Сбросить пароль» (/forgot-password). Введите e-mail аккаунта — придёт письмо со ссылкой на форму нового пароля. Сбросить пароль так можно только если аккаунт привязан к почте; иначе обратитесь к администратору компании.

Посмотреть без регистрации

  • Демо — кнопка «Демо» на стартовой странице открывает демонстрационный аккаунт: там можно всё потрогать, изменения откатываются раз в сутки.

  • Утилиты без входа — конвертер YML ↔ Excel, база штрихкодов, генератор инфографики и анализ вопросов Wildberries доступны прямо с лендинга.

Дальше

Общие принципы работы

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

Компания и пользователи

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

Подробнее: Управление пользователями.

Каталог

Каталог — это ваш перечень товаров. Каталогов может быть несколько, и обычно они бывают двух видов:

  • Собственный каталог — вы ведёте его в catalog.app: создаёте товары, заполняете свойства и изображения, а наружу отдаёте готовые карточки и цены.

  • Каталог маркетплейса («забирать с Ozon», Wildberries, Яндекс Маркет, Мегамаркет, Авито) — его содержимое приезжает из кабинета площадки по API. Такой каталог лучше не редактировать вручную: он отражает то, что уже опубликовано.

Каталоги связываются между собой: собственный каталог может быть источником для каталога маркетплейса, а цены одного каталога — поставщиком для другого.

Подробнее: Создание каталога, Обновление каталога.

Товар и его карточка

Товар — это строка каталога: бренд, название, цвет, артикул, штрихкод, категория. Карточка — всё, что к товару прилагается: свойства, изображения, описание.

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

Подробнее: Работа со свойствами категорий, Карточка товара.

Поставщики и конкуренты

Поставщик — источник закупочных цен и наличия. Их файлы приходят из почты, по ссылке, с диска или загружаются вручную; понимаются xls, xlsx, csv, xml. Поставщик настраивается один раз: дальше система сама узнаёт его файл по содержимому, поэтому имя файла значения не имеет.

Конкурент — источник цен, с которыми вы сравниваетесь. Кроме файлов, цены конкурентов умеет собирать парсер по ссылкам на карточки.

Подробнее: Настройка поставщика и конкурента, Автоматическое обновление цен поставщиков.

Сопоставление

Строки в файле поставщика — это не ваши товары: у поставщика своё название и свой артикул. Сопоставление связывает строку прайса с товаром каталога. В основном это происходит автоматически; спорные случаи система показывает человеку — подтвердить или исправить.

Так же сопоставляются карточки библиотеки и товары связанных каталогов. Всё это делается в одном месте — в режимах вкладки «Товары».

Библиотека

Библиотека — это большой набор чужих карточек (общая библиотека сервиса и ваша приватная), с которыми сопоставляются ваши товары. Подтверждённое сопоставление наполняет вашу карточку: переносит свойства, изображения и описания по правилам, которые вы задаёте для каждого источника. Это основной способ заполнить каталог быстро.

Ценообразование

Зная закупочные цены, цены конкурентов, МРЦ и сроки поставки, система считает ваши исходящие цены. Правила расчёта собраны в профиль ценообразования; профилей может быть сколько угодно — розница, опт, отдельные условия для площадки. Результат профиля — цена на каждый товар, и её можно отдать на маркетплейс, в интернет-магазин или использовать как цену поставщика в другом каталоге.

Подробнее: Алгоритм ценообразования, Настройки профилей ценообразования.

Задачи

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

Выгрузка

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

Дальше

Как устроен интерфейс

Одна страница, чтобы дальше не искать, где что лежит. Всё, что вы делаете в catalog.app, происходит внутри одного выбранного каталога — почти каждая страница показывает данные именно его.

Шапка

Сверху, слева направо:

  • Логотип — возвращает на «Доску» каталога: сводка по товарам, ценам и последним задачам.

  • Переключатель каталогов — если каталогов несколько. Выбранный каталог запоминается: все разделы дальше открываются для него.

  • Главное меню — «Каталог», «Аналитика» (только для каталогов Wildberries и Ozon), «Задачи», «Цены», «Разное» и шестерёнка «Настройки».

  • Поиск — ищет товары по всем вашим каталогам сразу.

  • Переключатель валют — появляется, если у каталога заданы курсы. Суммы пересчитываются, исходная остаётся в скобках.

  • Аватар — меню профиля: язык, счёт, общие настройки компании, общая и приватная библиотеки, профиль, справка, выход.

Путь и заголовок страницы

Под шапкой каждая страница показывает путь — например, «Мой каталог → Товары → Библиотека». Читается справа налево: последний элемент — то, где вы сейчас, остальные — ссылки, по которым можно подняться на уровень выше. Первый элемент всегда каталог, а страницы уровня компании начинаются с «Общие настройки».

Путь заменяет заголовок: отдельного крупного названия у страницы нет, потому что оно уже есть в пути. Исключение — страницы товара: у них имя написано ещё и заголовком, который при прокрутке остаётся вверху.

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

Разделы

«Каталог»

Товары и всё, что их описывает. Вкладки: «Товары», «Категории», «Бренды», «Описания товаров», «Свойства», «Теги».

Под фильтром на вкладке «Товары» — ряд режимов: «Товары», «Изображения», «Цены поставщиков», «Цены конкурентов», «Библиотека», «Связанные каталоги». Это один и тот же список товаров, показанный рядом с разным: первые два переключают, что вы редактируете в строке, остальные — с чем сопоставляете. Заданный фильтр переносится между режимами, поэтому отбирайте товары один раз, а потом переключайтесь.

«Аналитика»

Только для каталогов Wildberries и Ozon: продажи, прибыль, себестоимость, советы и отчёты.

«Задачи»

Всё, что делается долго, делается фоновой задачей: обновление цен, ценообразование, экспорт, обновление каталога, сопоставление. На главной — последние задачи каталога, списки по типам переключаются выпадающим меню. Одновременно у компании выполняется одна задача, остальные ждут очереди.

«Цены»

Поставщики, конкуренты, пакеты и профили ценообразования: откуда берутся закупочные цены и как из них считаются ваши розничные.

«Разное»

Хаб редких инструментов: отчёты, управление каталогом (дубликаты, наборы товаров, удаление устаревших товаров, штрихкоды), публичные конвертеры, документация API.

Шестерёнка «Настройки»

Настройки текущего каталога: поставщики и конкуренты, парсинг, наличие, сроки доставки, стоп-слова, пакеты, экспорт, автоимпорт, ценообразования, сценарии.

Работа с таблицей

Таблицы товаров, цен и настроек устроены одинаково:

  • Поиск — поле слева над таблицей. Начните печатать: список подсказок покажет, что в этой таблице есть — названия пакетов, профилей, поставщиков, брендов и категорий, смотря какая таблица открыта. Страницы настроек ищут так же, как страницы товаров.

  • Страницы — на странице сто строк, переключатель появляется под кнопками справа, когда строк больше. Поиск и страницы держатся в адресе, поэтому ссылку на найденное можно послать коллеге.

  • Фильтр — кнопка «Фильтр» справа над таблицей раскрывает форму. Условия применяются кнопкой «Применить», «Сбросить» возвращает пустой фильтр. Фильтр сохраняется в адресе страницы, поэтому ссылку на отобранные товары можно послать коллеге.

  • Выделение строк — галочка в первой колонке; можно выделить всю страницу и все страницы фильтра сразу.

  • Массовые операции — панель внизу, когда что-то выделено: перенести в категорию, сменить бренд, проставить теги и свойства, удалить выбранные товары и так далее. Это основной способ делать что-то со многими товарами.

  • Шестерёнка справа над таблицей — какие колонки показывать; выбор запоминается за вами.

  • Выгрузка — стрелка вниз рядом с постраничной навигацией выгружает выбранное в Excel.

ИИ-ассистент

В правом нижнем углу — кнопка-пузырь. Ассистент отвечает на вопросы по работе сервиса и выполняет операции в текущем каталоге, а если вы прямо назовёте другой каталог компании — и в нём, в пределах ваших прав; понимает вложенные файлы и учитывает товары, которые вы выделили в таблице. Кнопка ↗ раскрывает чат во весь экран со списком прошлых обсуждений.

Кнопка «Новый чат» начинает разговор с чистого листа, но прошлые чаты не пропадают, и на них можно сослаться: «сделай как мы вчера делали», «как в прошлый раз». Ассистент сам найдёт тот разговор, скажет, на какой чат опирается, а если подходят несколько — спросит, какой вы имели в виду. Он видит только ваши собственные чаты, и только в каталогах, к которым у вас есть доступ. Старые просьбы он сам не выполняет: прошлый чат для него — образец, а не задание.

В одно сообщение помещается до 20 000 символов. Длинные списки артикулов и таблицы удобнее прикрепить файлом — ассистент прочитает его целиком; если вставленный текст не поместился, над полем ввода появится плашка «Вставленный текст обрезан».

Большое задание — заполнить десятки карточек, разобрать прайс — ассистент выполняет минутами, и всё это время в переписке видно, что он думает. О готовых частях работы он пишет по ходу дела: промежуточные сообщения появляются в чате обычными репликами, до итогового ответа. Страницу при этом можно закрыть — задание не прервётся, а ответ будет ждать вас в чате. Длинная переписка открывается с последних сообщений; более ранние догружаются при прокрутке вверх или кнопкой «Показать предыдущие сообщения».

У компании общая квота на работу ассистента — за последние 5 часов и за 7 дней. Её остаток можно посмотреть в меню «⋮» чата во весь экран; когда в любом окне остаётся меньше 10%, над полем ввода появляется плашка, а пока квота исчерпана, отправить новое задание нельзя. Если квота заканчивается посреди задания, ассистент ставит его на паузу и сам продолжит, когда квота освободится; ожидание можно отменить кнопкой «Отменить ожидание». Если ассистент вашей компании работает на выделенном сервере, квоты ориентировочные: остаток в меню «⋮» и плашка показывают примерный расход, но отправку не запрещают и работу не останавливают — ограничивают только лимиты самого сервиса. После перевода компании на выделенный сервер или обратно квота считается заново, а начатые чаты продолжаются: ассистент получает краткий пересказ переписки.

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

Ассистент останавливается вместе с задачами компании, когда баланс опускается ниже порогового значения: над полем ввода появляется плашка «Баланс израсходован. Пополните баланс для возобновления работы ассистента.», а отправить новое задание нельзя — история чатов при этом остаётся доступной. Уже выполняющееся задание доходит до конца, а приостановленное продолжается само после пополнения. Как только баланс снова выше порога, отправка возвращается без перезагрузки страницы.

Дальше

Создание каталога

Каталоги создаёт администратор компании: меню профиля (аватар в шапке) → «Общие настройки» → вкладка «Каталоги» → кнопка «Создать».

Заполнение формы

  • Название — как каталог будет называться в переключателе и в путях страниц.

  • Тип каталога — главное решение, после сохранения тип не меняется:

    • «Свой каталог» — вы ведёте товары в catalog.app;

    • «Синхронизировать с Озон», «…с Wildberries», «…с Yandex Market», «…с Avito», «…с Мегамаркетом» — товары приезжают из кабинета площадки. Avito отдаёт по объявлению только название, категорию и ссылку: описания, фото и характеристики заполняются уже в catalog.app, объявления из архива и отклонённые приходят в архив каталога, удалённые не приходят;

    • «Забирать с Онлайнера» — каталог берётся из каталога Onliner.

  • Ключи доступа — появляются под выбранный тип: «Client Id» и «API key» для Ozon, Yandex Market и Avito; «API key» для Wildberries и Мегамаркета; для Ozon дополнительно «Performance client Id» и «Performance API key» — это рекламный кабинет. Инструкции: ключи Wildberries, ключи Ozon.

  • Категории — для каталогов маркетплейсов и Онлайнера можно ограничить импорт списком категорий, по одной в строке. Рядом ссылка «Скачать список категорий»: она работает, когда ключи уже заполнены. Для Онлайнера так же ограничиваются бренды.

  • Возможность редактирования — только для «Своего каталога». Включено — товары правятся руками в catalog.app; выключено — каталог целиком обновляется из файла или по ссылке, и тогда появляются поля «URL», «Не удалять отсутствующие записи при обновлении каталога» и «Разрешить изменение товаров при обновлении каталога».

  • Шаблон внешнего адреса — ссылка на товар в вашей системе, например https://your-domain.com/products/{externalId}. Для маркетплейсов подставляется сама.

  • Заполнять свойства и Стратегия обработки изображений — как наполнять карточки из связанных источников и сколько изображений брать («Уникальные изображения из всех источников», «Изображения из лучшего источника», «Максимум 5/8/13» и другие). Здесь же минимальные ширина и высота картинок — мелкие отбрасываются.

  • Обрезать фон изображений — включено по умолчанию: при публикации карточек в Ozon и Wildberries мы обрезаем белый фон вокруг товара, увеличиваем сам товар и центрируем его на белом холсте 3:4, чтобы он выглядел крупнее в выдаче. Снимите флажок, если картинки собраны вручную и отступы вокруг товара — часть макета: тогда кадр останется таким, каким его собрал источник, и изображение только увеличится целиком и дополнится белым полем до пропорции 3:4. Настройка применяется в момент публикации: уже опубликованные карточки сохранят текущие изображения до следующей публикации.

  • Тип алгоритма сопоставления — «Только ручное», «Ручное и точное автоматическое» или «Сопоставление по алгоритму неполного соответствия» (по умолчанию).

  • Искать подозрительные цены — проверка адекватности новых цен; начинает работать через сутки, когда наберётся статистика.

  • Мастер каталог — только для «Своего каталога»: такой каталог собирается поверх других. После сохранения появляется ссылка «Настройки мержа мастер каталога», где перечисляются каталоги-источники и поле, по которому их товары склеиваются в одну карточку. Это же поле — «Артикул товара на маркетплейсах» — мастер показывает в карточке товара, колонкой в таблице товаров и в окне редактирования товара: товару, заведённому в мастере вручную, ключ склейки проставляют там, иначе синхронизация его не подхватит.

Нажмите «Сохранить». Дальше каталог нужно наполнить — см. Обновление каталога.

Синхронизация мастер-каталога

Кнопка «Запустить синхронизацию» на странице «Настройки мержа мастер каталога» (или шаг в расписании задач) переносит в мастер новые товары источников. Порядок строк в таблице — приоритет: первая строка важнее.

Синхронизация устроена как обновление каталога маркетплейса. Обычная создаёт новые карточки сразу со значениями свойств, фото и описанием, а существующие карточки мастера не трогает — ваши правки в мастере сохраняются. Фото новой карточки выстраиваются по очереди: первое фото каждого источника, потом второе и так далее. Если одно и то же фото есть в нескольких источниках, оно встаёт на самое раннее из своих мест в этой очереди, а там, где встретилось бы ещё раз, остаётся пропуск. При каждой синхронизации с карточки снимается тег кабинета («Тег товаров»), если товаров этого кабинета в ней больше нет. Если товар удалили из каталога-источника, его связь с карточкой мастера помечается как «товар источника удалён» и больше не используется: карточка, у которой не осталось живых источников, синхронизацией не меняется.

Чтобы существующие карточки снова совпали с источниками — источник поменял фото или характеристики, к карточке приклеился товар нового источника, — нажмите «Запустить синхронизацию», выберите режим «Принудительная», отметьте, что обновить, и введите пароль текущего аккаунта:

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

  • Принудительно обновить фотографии — фото всех карточек выстраиваются в точности как в источниках. Фото, которых нет ни в одном источнике, в том числе загруженные вручную, переносятся в исключённые — их можно вернуть в карточке товара. Исключённое вручную фото, которое есть в источнике, вернётся. С фото снимаются «Теги изображений» источников, у которых этого фото больше нет, — выгрузка в другие каталоги не отправит его в чужой кабинет. Теги, поставленные вручную под другими именами, остаются.

По расписанию синхронизация всегда обычная.

Удаление каталога

Корзина в списке каталогов удаляет в два шага: первое нажатие помечает каталог («Может быть удален» и время через час), повторное после этого времени ставит фоновую задачу удаления. Пока час не прошёл, пометку можно снять — «Отменить удаление». Удаление необратимо.

Форматы файла каталога

Импортировать каталог не обязательно — его можно вести с нуля. Если импортируете, подойдёт Excel по образцу (ссылка «Пример файла» есть в каждом диалоге загрузки), YML или XML в формате Онлайнера.

YML — привычный формат выгрузки для Яндекс Маркета:


<?xml version="1.0" encoding="windows-1251"?>

<yml_catalog date="24.04.2019 11:15:15">

  <shop>

    <name>Мебель-Импэкс</name>

    <categories>

      <category id="748864907">Кресла</category>

      <category id="1001203373" parentId="748864907">Кресла-качалки</category>

    </categories>

    <offers>

      <offer id="2000026631446" available="true">

        <price>27330</price>

        <currencyId>RUB</currencyId>

        <quantity>25</quantity>

        <categoryId>748864907</categoryId>

        <name>Стол раздвижной Leset Денвер 1Р МИ, Капучино лак, стекло Капучино</name>

        <vendor>ООО "Лесет Рус"</vendor>

        <description>Стол Денвер выполнен в современном стиле...</description>

        <param unit="м" name="Длина">1,2</param>

        <param unit="кг" name="Вес">48</param>

        <barcode>2000026631446</barcode>

        <picture>http://yml.mebelimpex.ru/images/all/2000026631446.jpg</picture>

      </offer>

    </offers>

  </shop>

</yml_catalog>

XML Онлайнера (актуальный каталог — осторожно, файл около 100 МБ):


<?xml version="1.0" encoding="UTF-8"?>

<onliner version="1.1">

  <category name="SSD">

    <vendor name="A-Data">

      <model id="1345419" name="GAMMIX S11 240GB AGAMMIXS11-240GT-C">

        <articles>

          <article>AGAMMIXS11-240GT-C</article>

        </articles>

      </model>

    </vendor>

  </category>

</onliner>

Обновление каталога

Товары попадают в каталог фоновой задачей. Откройте «Задачи» → выпадающее меню списков → «Обновление каталога» (или страницу «Создать задачу», блок «Обновление каталога»).

Сверху — таблица доступных действий: их состав зависит от типа каталога.

| Действие | Для каких каталогов | Что делает |

|---|---|---|

| «Обновление каталога» — кнопка «Обновить сейчас» | Ozon, Wildberries, Яндекс Маркет, Авито, Мегамаркет | Забирает товары, бренды, категории и свойства категорий из кабинета площадки по API |

| «Принудительно забрать каталог … вместе с обновлениями в карточках» — «Запустить» | каталоги маркетплейсов | То же, но карточки приводятся к состоянию на площадке, даже если вы правили их в catalog.app. Требует пароль текущего аккаунта |

| «Обновить каталог целиком по URL» — «Запустить» | «Свой каталог» без редактирования, с заполненным URL | Скачивает файл по адресу из настроек каталога |

| «Обновить каталог целиком из файла» — «Загрузить файл» | «Свой каталог» без редактирования | Загружает YML или файл по образцу. Товары, которых нет в файле, по умолчанию удаляются — это меняется флажком в настройках каталога |

| «Добавить товары в каталог» — «Загрузить файл» | редактируемый каталог и каталоги маркетплейсов | Добавляет новые товары из Excel, существующие не трогает |

| «Обновить товары в каталоге» — «Загрузить файл» | редактируемый каталог и каталоги маркетплейсов | Обновляет уже существующие товары из Excel |

В каждом диалоге загрузки есть ссылка «Пример файла» — образец под ваш тип каталога. Начинайте с него: колонки должны совпадать.

Как следить за результатом

Ниже на той же странице — «Последние задачи — Обновление каталога»: статус, кто запустил, время, тип изменения. Строка раскрывается в журнал задачи — там видно, что именно произошло и на чём задача споткнулась. В меню строки: «Скачать загруженный файл» и «Скачать результат». Задачу в статусе «Создана» или «В очереди» можно отменить.

Помните, что у компании одновременно выполняется одна задача — остальные ждут очереди.

Другие способы

Работа с каталогом маркетплейса

Сценарий на примере Ozon: от пустого каталога до заведённых карточек и обновляемых цен. Для Wildberries, Яндекс Маркета, Мегамаркета и Авито порядок тот же — отличаются только названия форматов экспорта.

Перед началом создайте каталог нужного типа и укажите ключи доступа к кабинету.

1. Забрать то, что уже есть на площадке

«Задачи» → выпадающее меню списков → «Обновление каталога» → «Обновить сейчас».

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

2. Загрузить цены поставщика

Сначала настройте поставщика. Дальше цены обновляются одним из трёх способов:

  • Автоимпорт — «Настройки» каталога → вкладка «Автоимпорт прайсов» → «Создать»: название, источник (почта, ссылка, FTP, диск, внешнее API), поставщик. Профиль запускается кнопкой «Запустить» или по расписанию.

  • Файл вручную — «Задачи» → «Обновление цен», загрузка прайса.

  • Цены другого каталога — источником может быть профиль ценообразования соседнего каталога.

Ход загрузки виден в «Задачи» → «Обновление цен».

3. Отобрать то, что ещё не заведено

Откройте «Цены» → поставщика → его прайс и отфильтруйте строки «Не сопоставленные» — это товары поставщика, которых у вас на площадке нет. Выгрузите их в Excel кнопкой скачивания. Для каталогов Ozon, Wildberries, Яндекс Маркета и Мегамаркета есть отдельная кнопка «Скачать с GPT-рекомендациями категорий» — в файле уже будут предложенные категории.

4. Подготовить файл

В файле заполните «Категория» и «Производитель» и проверьте названия. Название должно начинаться с типа товара, иначе площадка не пропустит карточку модерацию: «DQ650-M 650W» — не пройдёт, «Блок питания DQ650-M 650W» — пройдёт.

5. Завести товары в каталог

«Задачи» → «Обновление каталога» → «Добавить товары в каталог» → «Загрузить файл». Формат — по ссылке «Пример файла» в том же диалоге.

После этого ещё раз обновите цены (шаг 2), чтобы строки прайса сопоставились с новыми товарами.

6. Заполнить карточки из библиотеки

«Задачи» → «Сопоставление с библиотекой»: отметьте источники (кнопки «Выбрать все» и «Как в прошлый раз» ускоряют дело) и нажмите «Запустить сопоставление с библиотекой». Подтверждённые совпадения переносят в карточки свойства, изображения и описания — по правилам, которые задаются кнопкой «Настройки сопоставления».

Результат смотрите в режиме «Библиотека» на вкладке «Товары»: там видно, что нашлось у каждого товара, и там же сопоставления подтверждаются и правятся руками.

7. Отправить карточки на площадку

«Настройки» каталога → вкладка «Экспорт» → «Создать»: название и формат «Обновление каталога на Ozon». Запуск — «Задачи» → «Экспорт» → кнопка «Запустить» в строке профиля.

Задача создаёт карточки для новых товаров и обновляет существующие; результат и ошибки модерации видны в журнале задачи.

Запуск профиля берёт все товары, изменившиеся с прошлой успешной выгрузки, а если профиль запускается впервые — весь каталог. Товары делятся на партии по 200, и на каждую партию создаётся своя задача: в каталоге на 14 000 товаров вы увидите в списке 72 строки с одинаковым названием, у каждой в журнале первой строкой «Партия N из M». Это нормально. Если какая-то партия упала, нажмите «Запустить повторно» в меню её строки: заново уйдут только товары этой партии, а кнопка «Запустить» у профиля начнёт новую выгрузку всех изменений. Если нужно отправить только отмеченные товары, запускайте не профиль, а «Выгрузить на маркетплейс» из таблицы «Товары» — такие задачи попадают в список «Разное».

8. Обновлять цены и остатки

Ещё один профиль экспорта — формат «Обновление цен и остатков на Ozon»: в варианте «(цены поставщиков)» цены берутся прямо у поставщиков, в варианте «(ценообразование)» — из профиля ценообразования.

Дальше этот профиль ставится на расписание: «Общие настройки» → «Расписание». Обычная цепочка на ночь — автоимпорт прайса, ценообразование, экспорт цен и остатков.

Дальше

Каталог

Товары — главная таблица каталога

Это страница, на которой вы проведёте больше всего времени. Здесь лежат все товары каталога: найти нужные, поправить, создать новые, выделить пачку и что-то с ней сделать — всё отсюда.

Открывается так: «Каталог» → вкладка «Товары». Та же таблица показывается, когда вы проваливаетесь в категорию или в бренд, — просто уже отфильтрованная.

Три ряда над таблицей

Сверху вниз:

  1. Вкладки каталога — «Товары», «Категории», «Бренды», «Свойства», «Теги». Это разные сущности каталога.

  2. Фильтр — раскрывается кнопкой «Фильтр» справа. Отбирает товары.

  3. Режимы — «Товары», «Изображения», «Описания», «Цены поставщиков», «Цены конкурентов», «Библиотека», «Связанные каталоги». Это один и тот же список товаров, показанный с разных сторон.

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

Фильтр

Фильтр применяется кнопкой «Применить», кнопка «Сбросить» убирает всё разом. Самое нужное:

  • «Запрос» — обычный поиск по названию, не короче трёх символов. Если ничего не нашлось, система предложит похожие товары.

  • «Категория», «Производитель», «Поставщик», «Профиль ЦО» — начните печатать, подсказки появятся сами. Выбрав категорию, вы получите внизу ещё и фильтр по свойствам этой категории.

  • «Кол-во заполненных свойств», «Кол-во изображений» — диапазоны «От» и «До». Так находят недоделанные карточки: например, изображений «До 1».

  • «Обязательные свойства» — «Не все обязательные свойства заполнены» показывает товары, которые площадка не пропустит.

  • «Описание», «В наличии», «Архивирован», «Заморожен» — простые «Да/Нет».

  • «Теги» — отдельное окно, где условия складываются через «И» / «ИЛИ».

  • «Фильтр по свойствам» — условия по значениям свойств: текст, число «От»/«До», выбор из перечисления, и у каждого свойства есть галочка «Не заполнено». Заданные условия видны над кнопкой, и править их можно прямо там, не раскрывая фильтр: поменяйте значение и нажмите Enter — фильтр применится, а курсор останется в поле, так что следующий код товара можно вводить сразу. Крестик убирает условие, значок ∅ — это «Не заполнено».

Что показывает таблица

Набор колонок настраивается шестерёнкой в строке над таблицей — и он один и тот же во всех режимах, различается только то, что открыто сразу. По умолчанию здесь видно:

  • «Фото» — главное изображение; наведите курсор, чтобы посмотреть остальные.

  • «Полное название» — категория, бренд, название, цвет, артикул и EAN одной строкой. Клик открывает карточку товара.

  • «Категория» и «Бренд» — ссылки, отбирающие товары этой категории или бренда.

  • «Налич.» — «Да», если у товара есть подтверждённая цена поставщика с ненулевым количеством.

  • «Св-ва» — три счётчика: сколько свойств заполнено из всех, сколько из них заполнено вручную и сколько заполнено обязательных. Клик по счётчику обязательных открывает окно быстрого заполнения — прямо в нём можно ввести недостающие значения, не открывая карточку.

  • «Изобр.» — сколько изображений подтверждено вручную из всех подтверждённых.

Много полезного спрятано и включается той же шестерёнкой: «Id», «Артикул», «EAN», «Теги», «Внешний Id», даты изменения номенклатуры и карточки, «Контент-рейтинг» для Ozon, Wildberries и Яндекс Маркета.

Что можно делать

Создать товар — кнопка «Создать товар» в строке над таблицей. В окне заполняются категория, производитель, название, цвет, артикул, EAN; справа система сразу показывает похожие товары, чтобы вы не завели дубль.

В мастер-каталоге в этом же окне есть «Артикул товара на маркетплейсах» — то поле, по которому мастер склеивает товары своих каталогов-источников. Заполните его сразу: товар без этого артикула останется сам по себе, и сборка мастер-каталога не привяжет к нему ни одного товара источника. Тот же артикул виден в карточке товара и колонкой в таблице — см. Создание каталога.

Завести или обновить много товаров файлом — три точки рядом с кнопкой «Создать товар». Там четыре пункта, и они делятся на две пары:

  • «Массовое добавление товаров» и «Массовое обновление товаров» — это про номенклатуру: категория, бренд, название, цвет, артикул, EAN. Значения свойств такой файл не трогает.

  • «Массовое добавление карточек товаров» и «Массовое обновление карточек товаров» — это про товары вместе со значениями свойств. Заполняются только глобальные свойства: свойства конкретной категории задаются таким же файлом, но из меню самой категории.

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

Поправить один товар — карандаш в строке. Кебаб-меню (три точки) в той же строке — всё остальное: заполнить карточку из библиотеки вне очереди, сгенерировать описание, дозаполнить свойства искусственным интеллектом, отправить в кабинет маркетплейса, создать копию, заморозить, архивировать, удалить.

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

Выделять по одному не обязательно: в панели можно вставить готовый список — идентификаторов, артикулов, EAN — и система отметит эти товары сама.

Выгрузить таблицу — кнопка «Скачать» в той же строке: в файл уйдёт текущая выборка со всеми видимыми колонками. Три точки рядом с ней открывают выбор формата (XLSX или CSV) и ещё две выгрузки. Какой формат выбран сейчас, написано на самой кнопке справа от слова «Скачать», так что открывать меню ради этого не нужно:

  • «Скачать карточки товаров» — те же отобранные товары, но со значениями свойств и изображениями. Файл выгружается сразу, без вопросов, в том же формате, который принимает «Массовое обновление карточек товаров»: поправьте в нём что нужно и загрузите обратно.

  • «Скачать шаблон для карточек товаров» — пустой файл с колонкой на каждое глобальное свойство. С него начинают, когда товаров ещё нет и их надо завести списком.

Дальше

Изображения товаров

Режим вкладки «Товары», в котором под строкой каждого товара во всю ширину разворачиваются все его подтверждённые изображения. Сама строка — обычная, с теми же колонками, что и в остальных режимах.

Открывается так: «Каталог» → «Товары» → ряд режимов под фильтром → «Изображения». Фильтр при переключении сохраняется.

Зачем это нужно

Картинки удобно проверять не по одному товару, а сразу пачкой: видно, где изображений нет вовсе, где они не в том порядке, где затесалось чужое фото. Для площадок порядок важен — первое изображение становится главным в карточке.

Хороший способ начать: в фильтре поставьте «Кол-во изображений» → «До 1». Останутся товары, которым картинок не хватает.

Что можно делать

  • Перетащить изображение мышью — меняет порядок. Заодно картинка помечается как подтверждённая вручную: дальше автоматика её не тронет и не переставит.

  • Корзина на изображении — исключить его у этого товара.

  • «+» — открыть окно «Добавить изображения в карточки» и загрузить свои файлы.

  • Клик по изображению — открыть просмотрщик. В нём есть карандаш (открывает графический редактор в новой вкладке: обрезка, яркость, фильтры, водяной знак, надписи, размер) и значок обрезки фона — фон обрезается сразу, без редактора.

Под каждым фото показаны его теги. Здесь они только видны; назначаются теги на вкладке «Карточка» самого товара.

Учтите: сохранение в редакторе заменяет файл изображения без истории. Прежнюю версию вернуть нельзя.

Дальше

Сопоставление с ценами поставщиков и конкурентов

Режим вкладки «Товары»: тот же список товаров, но у каждого видно, какие цены к нему привязаны и подтверждены ли они.

Открывается так: «Каталог» → «Товары» → ряд режимов под фильтром → «Цены поставщиков» или «Цены конкурентов». Фильтр при переключении сохраняется.

Зачем это нужно

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

В ценообразование и в колонку «Налич.» попадают только подтверждённые цены. Поэтому по новым товарам полезно пройтись глазами.

Есть два пути к одной и той же цели:

  • От прайса — раздел «Цены», один поставщик, его строки по порядку. Удобно сразу после загрузки нового прайса.

  • От товаров — этот режим: идёте по своим товарам и видите цены сразу всех поставщиков. Удобно, когда нужно убедиться, что у товаров категории вообще есть цены.

Что в таблице

Слева — привычные колонки товара: фото, полное название со ссылкой в карточку, категория, бренд. Справа — колонка «Сопоставленные цены поставщиков» (или конкурентов), а в ней — список привязанных строк прайса.

В каждой строке списка: цветной маркер состояния, название поставщика, фото из прайса, название строки прайса и её данные — цена, МРЦ, количество. Корзина справа убирает связь.

Маркер показывает одно из трёх:

  • подтверждена вручную — человек проверил; следующие загрузки прайса эту связь не тронут;

  • подтверждена автоматически — система уверена в совпадении;

  • не подтверждена — система нашла похожее, но не уверена; в расчётах не участвует.

В фильтре есть галочка «Только товары без подтвержденных сопоставлений» — с неё и стоит начинать: она оставит те товары, с которыми действительно нужно поработать.

Что можно делать

  • «Подтвердить сопоставления» — сохраняет список цен товара как проверенный вами. Всё, что вы убрали корзиной, отвяжется. С этого момента цены участвуют в ценообразовании.

  • «Очистить сопоставления» — отвязывает от товара все цены разом.

  • «+» под списком — найти строку прайса вручную по названию (ищет по всем поставщикам или конкурентам каталога) и привязать её к товару. Это выручает, когда автоматика ничего не нашла: например, поставщик пишет название совсем по-своему.

  • Галочки в строках открывают панель массовых операций — ту же, что на вкладке «Товары».

Дальше

Сопоставление с библиотекой

Режим вкладки «Товары»: рядом с каждым вашим товаром показаны найденные для него карточки библиотеки, и вы решаете, какие из них подходят.

Открывается так: «Каталог» → «Товары» → ряд режимов под фильтром → «Библиотека». Фильтр при переключении сохраняется.

Зачем это нужно

Библиотека — это большой набор чужих карточек: общая библиотека сервиса и ваша приватная. Когда ваш товар связан с подходящей карточкой, из неё в вашу карточку переносятся свойства, изображения и описание. Это самый быстрый способ заполнить каталог: руками столько не набьёшь.

Связи находит фоновая задача сопоставления («Задачи» → «Сопоставление с библиотекой»). Но найденное — это предположение системы. Данные переносятся только из подтверждённых карточек, поэтому предположения нужно просмотреть.

Что на странице

Сверху — обычный фильтр товаров и галочка «Только товары без подтвержденных сопоставлений»: с неё удобно начинать, она оставляет незакрытые товары.

Ниже — блок «Поиск по»: здесь отмечаются источники библиотеки, среди которых будет искать ручное добавление карточки.

В таблице слева ваш товар (фото, полное название, счётчики свойств и изображений), справа — колонка «Сопоставленные товары библиотеки» со списком найденных карточек. В каждой строке: маркер состояния, название источника, фото, полное название карточки со ссылкой, иконка перехода на сайт-источник и корзина.

Маркер означает то же, что и в ценах: подтверждена вручную, подтверждена автоматически или не подтверждена.

Что можно делать

  • «Подтвердить сопоставления» — принять список карточек товара. Сразу после этого запускается перенос: свойства, изображения и описания приезжают в вашу карточку по правилам, заданным для каждого источника. Счётчики «Св-ва» и «Изобр.» в строке обновятся у вас на глазах.

  • «Очистить сопоставления» — отвязать все карточки товара.

  • Корзина у карточки — убрать одну; изменение применится, когда вы нажмёте «Подтвердить сопоставления».

  • «+» — найти карточку вручную по названию среди отмеченных в «Поиск по» источников. Пригодится, когда автоматика не нашла ничего подходящего.

  • Рядом с названием товара — иконки поиска в Google и Яндексе: посмотреть, что это вообще за товар, не уходя со страницы.

Статистика по источникам

Над таблицей есть кнопки «Статистика по источникам общей библиотеки» и «Статистика по источникам приватной библиотеки». Это отдельная страница со сводкой: по каждому источнику видно, сколько связей подтверждено, сколько исключено и сколько всего. Любое число — ссылка на список этих записей, а первая кнопка на странице статистики возвращает обратно в режим сопоставления.

Там же, в кебаб-меню строки источника, лежит массовая уборка: удалить неподтверждённые связи, удалить подтверждённые автоматически, удалить всё кроме подтверждённых вручную. Это создаёт фоновую задачу — пригодится, когда источник оказался неудачным и его результаты хочется убрать целиком.

Дальше

Связанные каталоги

Режим вкладки «Товары»: рядом с каждым товаром показано, каким товаром он является в других ваших каталогах.

Открывается так: «Каталог» → «Товары» → ряд режимов под фильтром → «Связанные каталоги». Фильтр при переключении сохраняется.

Зачем это нужно

Один и тот же товар обычно живёт в нескольких каталогах: собственный каталог, каталог Ozon, каталог Wildberries. Связь между ними позволяет вести карточку в одном месте, а на площадки отдавать готовое: свойства, изображения и описания переносятся из каталога-источника так же, как из библиотеки.

Устроено это как и сопоставление с библиотекой — только источником выступает не чужая карточка, а ваш собственный товар в соседнем каталоге. Связь создаётся сразу с двух сторон: подтвердив её здесь, вы увидите её и в каталоге-источнике.

Что на странице

Слева — ваш товар, справа — колонка «Товар в других каталогах». В каждой строке видно иконку и название каталога-источника, фото и название товара; ссылка ведёт в его карточку в том каталоге.

Кнопка «+» ищет товар по другим каталогам компании — по одному на каждый каталог-источник. Если связь уже есть со всеми, кнопка неактивна.

Галочка «Только товары без подтвержденных сопоставлений» в фильтре оставит товары, которые ещё ни с чем не связаны.

Что можно делать

  • «Подтвердить сопоставления» — принять список; данные начнут переноситься, а связь появится и в соседнем каталоге.

  • «Очистить сопоставления» — отвязать все связи товара.

  • Корзина — убрать одну связь; применится при подтверждении.

  • «Статистика по каталогам» над таблицей — сводка по каждому каталогу-источнику: сколько связей подтверждено, исключено, сколько всего.

Чего здесь нет

Блока «Поиск по» нет: источники — это каталоги, а не библиотеки. То, по какому именно полю каталоги склеиваются между собой (артикул, внешний Id и так далее), настраивает администратор в общих настройках, в разделе сопоставлений.

Дальше

Категории каталога

Категории — это дерево, по которому разложены товары. Открывается вкладкой «Категории» в разделе «Каталог».

Почему категории важнее, чем кажется

Категория — не просто папка. К ней привязано почти всё, что система знает о товаре:

  • свойства — какие характеристики бывают у товаров этой категории и какие из них обязательны;

  • наценки в ценообразовании;

  • значения свойств по умолчанию.

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

Что на странице

Таблица показывает категории одного уровня. Клик по категории с подкатегориями открывает следующий уровень, клик по категории без подкатегорий — её товары. Стрелка слева в строке раскрывает подкатегории прямо в таблице, не уходя со страницы.

Поиск над таблицей ищет по всему дереву, а не только по текущему уровню, — так быстрее всего добраться до нужной категории.

Колонки: название, единственное число, «Кол-во товаров» (с учётом вложенных категорий) и «Кол-во свойств». Оба числа — ссылки: на товары и на свойства этой категории.

Как создать и изменить

Кнопка «Создать» открывает окно новой категории; в кебаб-меню рядом есть массовое добавление — списком.

Поля категории:

  • «Название» — не короче трёх символов. Система не даст завести две одинаковые категории у одного родителя.

  • «Родительская категория» — место в дереве; оставьте пустым, чтобы категория стала корневой.

  • «Единственное число» — используется при сборке названий товаров: «Блоки питания» → «Блок питания».

  • «Внешний Id», «Комментарий», «Фото» — по желанию.

Рядом с формой показываются похожие категории с полным путём в дереве — чтобы вы не завели второй «Аксессуары» рядом с первым.

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

Что ещё умеет категория

Кебаб-меню категории (и в строке таблицы, и у заголовка открытой категории):

  • «Скачать шаблон для добавления товаров» — Excel под структуру именно этой категории; в него удобно вносить новые товары.

  • «Добавить карточки товаров» — загрузка товаров из файла.

  • «Скачать карточки товаров», «Обновить карточки товаров» — выгрузка и отправка на площадку.

  • «Заполнить карточки из библиотеки вне очереди» — не дожидаясь общей задачи.

  • «Перенести товары и подкатегории в другую категорию», «Удалить».

В файле добавления товаров категорию можно указывать путём через стрелку: Электроника -> Аксессуары. Если имя конечной категории уникально, достаточно одного имени.

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

Вкладки внутри категории

Провалившись в категорию, вы увидите её собственные вкладки: «Товары», «Подкатегории», «Поставщики», «Бренды», «Конкуренты», «Свойства». Три статистические вкладки отвечают на вопрос «кто и чем торгует в этой категории»: какие поставщики дают цены на её товары, какие в ней бренды, какие конкуренты.

В больших категориях (больше тысячи товаров) статистика поставщиков не считается на лету — вместо неё появится кнопка «Скачать статистику», и результат придёт файлом через задачу.

Каталоги маркетплейсов

В каталогах Ozon и Wildberries категории только для чтения: они приезжают из кабинета площадки при обновлении каталога. Менять их у себя бессмысленно — площадка всё равно работает со своим деревом.

Дальше

Бренды каталога

Справочник производителей. Открывается вкладкой «Бренды» в разделе «Каталог».

Зачем нужен

Бренд — не просто поле в карточке. Он входит в полное название товара, участвует в сопоставлении прайсов (система знает, что «Самсунг» и «Samsung» — одно и то же) и может нести собственные настройки: наценки, значения свойств по умолчанию.

Поэтому за чистотой справочника стоит следить: два бренда-близнеца («DeLuxe» и «DELUXE») — это две несвязанные кучи товаров.

Что на странице

Фильтр наверху: поиск по названию и период последнего изменения.

В таблице — название бренда, «Кол-во товаров» (ссылка на товары этого бренда) и действия. Через шестерёнку включаются скрытые колонки: логотип, «Id», «Внешний Id».

Кнопка «Создать» заводит бренд; в кебаб-меню рядом — массовое добавление списком. В форме нужно только название; рядом система покажет похожие бренды, чтобы вы не завели дубль. По желанию — внешний Id и до двух изображений.

Как объединить дубли

Если один и тот же производитель завёлся дважды, не удаляйте лишний бренд — сначала перенесите товары.

Кебаб-меню бренда → «Перенести товары к другому бренду» → выберите бренд-приёмник. После этого пустой бренд можно удалить.

Удаление бренда удаляет вместе с ним и все его товары, а также привязанные к нему правила наценок и опции поставщиков. Это необратимо, поэтому порядок именно такой: сначала перенос, потом удаление.

Wildberries: синхронизация брендов

У WB-каталогов над таблицей появляется кнопка «Синхронизировать бренды с WB» и пояснение к ней.

Wildberries не отдаёт список своих брендов по API и не даёт создать товар с брендом, которого он не знает, — из-за этого часть товаров может не уехать на площадку. Кнопка приводит названия к тому виду, в котором их знает WB; чаще всего это исправление регистра: «DeLuxe» → «DELUXE».

Ozon: только чтение

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

Дальше

Описания товаров

Режим вкладки «Товары» под одну задачу — довести описания до заполненного состояния.

Открывается так: «Каталог» → «Товары» → ряд режимов под фильтром → «Описания». Фильтр при переключении сохраняется: отобрали товары категории и пошли по режимам — картинки, описания, цены — глядя на ту же выборку.

В обычной таблице товаров описание видно только внутри карточки. Здесь оно выведено прямо в строку и правится на месте: прошли список сверху вниз — и закрыли вопрос.

С чего начать

Проще всего прийти сюда с «Доски»: счётчик «Нет описания» в блоке «Требует внимания» открывает эту страницу с уже выставленным фильтром.

Если пришли сами — поставьте в фильтре «Описание» → «Не заполнено». Фильтр здесь общий, товарный, так что доступны и все остальные условия: категория, бренд, теги, свойства, «Замороженные», «Архивные».

Одно предупреждение про поиск: на этой странице он ищет только по вашим полям. Запрос, который в таблице товаров находил товар по артикулу поставщика, здесь может не найти ничего. Главный инструмент отбора тут — фильтр по заполненности, а не текстовый поиск.

Цвет строки

Над таблицей — три маркера, объясняющие подсветку строк. Описание может быть заполнено:

  • вручную — человеком;

  • автоматически — при сопоставлении с библиотекой;

  • нейросетью — генерацией.

Цвет меняется сразу после сохранения, так что видно, где текст живой, а где приехал сам.

Что можно делать

Править на месте. Последняя колонка — текстовое поле с описанием. Кнопка «Сохранить» становится активной, как только вы что-то изменили; сохранённое описание получает статус «заполнено вручную». Кнопка «Удалить» очищает описание.

Сгенерировать одно описание. Меню строки → «Сгенерировать описания». В окне отмечаются свойства товара, которые стоит передать нейросети, и добавляются ключевые фразы. «Сгенерировать» покажет текст, «Применить» запишет его в товар.

Сгенерировать много. Отметьте строки галочками (или выберите всю выборку, или вставьте список артикулов) → «Сгенерировать описания». Откроется страница запуска, а после старта задачи вы вернётесь сюда же, на ту же страницу списка. За раз можно взять не больше 10 000 товаров; большие выборки система сама разложит на несколько задач.

Удалить описания у выбранных товаров — там же, с подтверждением.

Загрузить описания из файла. Кнопка «Загрузить описания»: xlsx и ваш пароль для подтверждения. Дальше работает фоновая задача.

Дальше

Теги товаров и изображений

Теги — цветные метки, которыми вы группируете товары и изображения как вам удобно. Открывается вкладкой «Теги» в разделе «Каталог».

Внутри два ряда: «Теги товаров» и «Теги изображений». Справочники у каждого каталога свои.

Зачем нужны теги товаров

Категория отвечает на вопрос «что это за товар», а тег — на любой другой ваш вопрос: «распродажа», «привезти к сентябрю», «проверить фото», «хиты». Отметив товары тегом, вы дальше можете:

  • найти их фильтром — в фильтре есть окно «Теги», где условия «Содержит» и «Не содержит» складываются через «И» / «ИЛИ», и есть галочка «И не содержит других тегов»;

  • применить к ним массовую операцию — теги проставляются и снимаются пачкой прямо из таблицы товаров;

  • учесть их в ценообразовании — сценарий может назначить особую наценку товарам с тегом или, наоборот, обойти их стороной;

  • вести по ним ручные цены — списки ручных цен ведутся в разрезе тега.

Зачем нужны теги изображений

Ими размечают фотографии внутри карточки: «главное», «инфографика», «на белом фоне». Дальше шаблон экспорта может отобрать в выгрузку именно нужные изображения.

Назначаются такие теги в карточке товара, на вкладке «Карточка», кнопкой «Назначить теги изображениям» — там сетка «изображение × тег» с галочками. В режиме «Изображения» вкладки «Товары» теги видно под каждым фото, но назначить их оттуда нельзя.

Что на странице

Таблица тегов с поиском по названию. Название показано на плашке своего цвета (цвет надписи подбирается сам, чтобы читалось). Рядом — «Кол-во товаров»; клик по числу открывает товары с этим тегом.

Кнопка «Создать» заводит тег: название и цвет из палитры. Одинаковых названий система не допустит. Карандаш переименовывает и меняет цвет, корзина удаляет.

Удаление тега безопасно: метка снимается с товаров и изображений, сами товары остаются на месте.

Дальше

Товары и карточки

Работа со свойствами категорий

Свойства описывают, какие характеристики бывают у товаров: «Ширина», «Цвет», «Мощность». Задаются они не по одному товару, а по категории — и все товары категории получают этот набор.

Как устроено наследование

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

Если одноимённое свойство есть на нескольких уровнях, действует самое глубокое. Для дерева «Бытовая техника → Встраиваемая техника → Варочные панели» работает «Ширина» из «Варочных панелей».

Где это редактируется

Вкладка «Свойства» раздела «Каталог» — единое рабочее пространство. Наверху фильтр области:

  • «Все» — просмотр всех свойств каталога сразу;

  • «Глобальные свойства» — свойства всего каталога;

  • конкретная категория — свойства этой категории.

Рядом фильтр по названию и флажок «Только обязательные». В карточку категории свойства открываются тем же экраном с уже выбранной областью.

Внутри — вкладки: «Свойства», «Группы свойств», «Параметры свойств», а также словари «Синонимы свойств» и «Синонимы значений свойств».

Создать свойство

  1. Выберите область — глобальные свойства или нужную категорию (в области «Все» создавать нельзя, непонятно куда).

  2. Кнопка «Создать» над таблицей открывает форму свойства.

  3. Заполните поля и сохраните.

Поля формы:

  • Название — как свойство называется в карточке.

  • Внешний Id — идентификатор для выгрузок и API.

  • Описание и как заполнять — подсказки тому, кто заполняет карточку.

  • Тип — от него зависят остальные поля.

  • Единица измерения — для числовых типов, из общего справочника.

  • Обязательное — свойство учитывается в контент-рейтинге товара.

  • Не заполнять автоматически — свойство не будет заполняться из библиотеки, только руками.

  • Группа — в каком блоке карточки показывать свойство; «Свойства без группы» убирает его из группы. У глобального свойства или свойства родительской категории, открытого из подкатегории, группа своя для каждой категории: там меняются только она и значение по умолчанию.

Типы свойств

| Тип | Что хранит |

|---|---|

| Логическое значение (да/нет) | галочку |

| Целое число, Дробное число | число с единицей измерения |

| Диапазон значений | «от — до» |

| Строковое значение | произвольный текст |

| Взаимоисключающий выбор | ровно одно значение из списка |

| Множественный выбор | несколько значений из списка |

| Выражение | значение, вычисляемое из других свойств — см. Вычисляемые свойства |

| Файл | приложенный файл |

| Список товаров | ссылки на другие товары каталога |

Для двух типов выбора список допустимых значений (перечисление) задаётся в той же форме; флажок «Размерность» превращает значения в числа с единицей измерения.

Дубли значений: удалить с переносом

Бывает, что в списке значений одно и то же записано по-разному: «Красный» и «красный», «Серо голубой» и «Серо-голубой». Корзина тут не подходит — она удаляет значение и у всех товаров, где оно было указано. Вместо неё нажмите значок «Удалить с переносом в другое значение» (два квадрата, сходящиеся в один) рядом с корзиной и выберите, какое значение оставить. Значение, которое отличается только регистром или пробелами, окно предлагает первым.

До сохранения строка остаётся на месте зачёркнутой, под ней написано, какое значение получат её товары; передумали — нажмите круглую стрелку справа. Значение, в которое переносят, пока нельзя ни удалить, ни перенести. Перенос выполняется по кнопке «Сохранить»: товары, значения по умолчанию категорий и брендов получают выбранное значение. У всех товаров, где значение встречалось, обновляется дата изменения карточки — ровно как при удалении корзиной: значение пропало или стало другим, карточка в обоих случаях изменилась.

Что учесть:

  • переносить можно только в уже сохранённое значение — только что добавленное появится в списке после сохранения;

  • если дублей, отличающихся только регистром, несколько, перенесите все сразу — иначе свойство не сохранится из-за оставшихся дублей;

  • внешний ID удаляемого значения (связь со справочником маркетплейса) не переносится — окно предупредит об этом.

Порядок и группы

Порядок свойств влияет на то, как они выводятся в карточке товара и передаются по API. Порядок и состав групп удобнее всего править в редакторе «Редактирование всех свойств сразу» — свойства там перетаскиваются мышью, в том числе между группами. Кнопка с этим названием стоит над таблицей вкладки «Свойства», когда в фильтре выбраны «Глобальные свойства» или конкретная категория: редактор, как и импорт, работает с одним уровнем.

Группы объединяют свойства в блоки карточки: вкладка «Группы свойств», кнопка «Создать». Группы глобальных свойств показываются в карточке любого товара — после групп его категории.

Импорт и экспорт

Импорт и экспорт работают с набором свойств одного уровня, поэтому они доступны, когда в фильтре выбраны «Глобальные свойства» или конкретная категория. В области «Все» их нет — непонятно, куда импортировать и что выгружать.

Кнопка «Импортировать свойства» над таблицей:

  • из файла — Excel по образцу. Режим «Только добавление» добавляет новое, «Полная замена» удаляет всё, чего нет в файле;

  • из общей или приватной библиотеки — модель свойств берётся у выбранного источника и его категории. Свойства, которых нет в источнике, будут удалены.

Импорт выполняется фоновой задачей — следите за ней в «Задачи» → «Разное».

Экспорт — в меню за тремя точками у кнопки «Скачать» над таблицей (сама кнопка скачивает строки таблицы, а пункты меню — набор свойств в формате импорта):

  • «Скачать свойства для редактирования» — с идентификаторами, чтобы поправить файл и вернуть его через импорт;

  • «…со значениями списков из сопоставлений» — то же, а в словарях ещё и значения, накопленные в сопоставлениях;

  • «Скачать свойства для переноса» — без идентификаторов, чтобы залить модель в другую категорию или каталог.

Скопировать свойство в другую категорию

Свойство переносится клонированием — исходное остаётся на месте.

  1. Найдите свойство в списке — в любой области фильтра, «Все» или конкретная категория.

  2. Кебаб-меню строки → «Клонировать свойство в другую категорию». Несколько свойств сразу — отметьте их галочками и выберите тот же пункт в панели массовых операций; они могут быть из разных категорий.

  3. В открывшейся форме выберите категорию-приёмник и, если нужно перенести и внешние идентификаторы, отметьте «Клонировать вместе с ExternalId».

Свойства с перечислением («Взаимоисключающий выбор», «Множественный выбор») копируются вместе со списком значений. Если в категории-приёмнике уже есть свойство с тем же названием и типом — своё или унаследованное, — копия не создаётся. Глобальные свойства клонировать нельзя: у них нет категории-источника.

Что ещё есть в строке свойства

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

Особый случай — каталоги Ozon

В каталоге типа «Синхронизировать с Озон» набор свойств категории задаёт сама площадка: локально его не редактируют, свойства обновляются кнопкой «Обновить структуру категории из Ozon». Менять можно единицу измерения, автозаполнение и параметры.

Группы свойств

Группы собирают свойства в блоки, чтобы карточка товара не выглядела сплошной простынёй из сотни строк. Открывается так: «Каталог» → «Свойства» → вкладка «Группы свойств».

Группы существуют только ради удобства чтения: на расчёты, выгрузку и сопоставление они не влияют.

Область действия

Как и сами свойства, группы принадлежат либо глобальным свойствам каталога, либо одной категории. Поэтому в общем фильтре сверху нужно выбрать одно из двух — «Глобальные свойства» или конкретную категорию. Пока выбрано «Все», редактировать группы нельзя: непонятно, чьи они.

Что на странице

Таблица групп: «Название», «Порядок» и действия. Через шестерёнку включается скрытая колонка «Внешний Id».

  • «Создать» — новая группа: название (обязательно) и внешний Id (по желанию).

  • Карандаш — переименовать; там же кнопка «Задать порядок группы свойств», которая ведёт в редактор всех свойств.

  • Корзина — удалить группу. Свойства при этом никуда не денутся, просто окажутся вне групп.

Как наполнить группу

Состав группы задаётся не здесь, а одним из двух способов:

  • в редакторе всех свойств (кнопка «Редактирование всех свойств сразу») — свойства перетаскиваются мышью между группами, там же задаётся их порядок;

  • в форме отдельного свойства — полем «Группа»; пункт «Свойства без группы» убирает свойство из группы.

Каталоги Ozon

В каталогах Ozon структуру свойств задаёт площадка, поэтому создавать и удалять группы нельзя.

Дальше

Параметры свойств

Открывается так: «Каталог» → «Свойства» → вкладка «Параметры свойств».

Свойство и параметр — не одно и то же

Легко перепутать, поэтому проще всего на примере:

  • Свойство описывает товар: «Мощность» = 900 Вт. У каждого товара своё значение.

  • Параметр описывает само свойство: «Выводить в фид» = да, «Приоритет» = 2. Значение задаётся один раз на свойство, а не на каждый товар.

Параметры — это ваши собственные пометки на свойствах. Система ими сама ничего не решает: она их хранит, показывает и даёт по ним отбирать. Пригождаются, когда свойств много и нужно как-то отметить «эти выводим в фид», «эти заполняет контентщик», «эти пришли от площадки».

Две страницы

Справочник параметров — какие пометки вообще бывают в этом каталоге. Открывается кнопкой «Редактировать параметры свойств». Параметр заводится кнопкой «Создать»:

  • «Параметр» — название;

  • «Тип» — «Логическое значение (да/нет)», «Строковое значение» или «Целое число»;

  • «Отображать на карточке товара» — только для логических: тогда у свойства в карточке появится цветной бейдж;

  • «Цвет» — цвет этого бейджа.

Таблица значений — сама вкладка: строки это свойства, а колонки — параметры. Проставили галочки и числа, нажали «Сохранить» — записывается всё разом.

Кроме параметров, в этой же таблице удобно проставить два важных признака свойства: «Обязательное» и «Не заполнять автоматически». Второй защищает свойство от перезаписи при заполнении из библиотеки — им отмечают то, что вы ведёте руками.

Что показывается в таблице

Только свойства, заданные непосредственно в выбранной категории. Унаследованные от родительских категорий сюда не попадают — их параметры проставляются там, где они заданы.

Если таблица пустая, страница сама предложит выход: кнопка «Перейти к созданию свойств» или «Перейти к созданию параметров».

Удаление параметра из справочника убирает его значения у всех свойств. В каталогах Ozon страница значений недоступна.

Дальше

Синонимы свойств и значений

Два словаря, которые помогают системе понимать чужие карточки и прайсы. Открываются вкладками «Синонимы свойств» и «Синонимы значений свойств» в разделе «Свойства».

Зачем это нужно

Когда карточка заполняется из библиотеки, система сопоставляет чужие пары «название — значение» с вашими свойствами. Названия при этом почти никогда не совпадают дословно: у вас «Диагональ экрана», у источника — «Размер экрана». Часть таких пар система знает сама, остальное вы досказываете словарём.

  • Синонимы свойств связывают название вашего свойства с тем, как это же называют в источниках: «Диагональ экрана» ↔ «Размер экрана».

  • Синонимы значений делают то же со значениями перечислений: «чёрный» ↔ «black». Задаются на каталог целиком, без привязки к конкретному свойству.

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

Что на странице

Таблица с поиском: слева ваше название (или значение), справа — синоним, каким он встречается в источнике. Видно также, кто и когда добавил пару.

  • «Создать» — добавить пару вручную.

  • «Добавить из файла» — загрузить сразу много пар из xlsx; в окне есть ссылка «(пример)» с готовым форматом файла. Загрузка выполняется сразу, без фоновой задачи.

  • Корзина — удалить пару.

Удаление синонима не трогает уже записанные значения товаров — оно влияет только на будущие сопоставления.

Дальше

Тип свойства: выражение

Иногда бывает полезно вычислять некоторые значения свойств на основе уже имеющихся. Например, объем упаковки (параллелепипеда со сторонами a, b и c) вычисляется по формуле V = a * b * c.

Пример посложнее: вычислить массу автомобильной шины с пригодной для практического применения точностью можно по формуле

M = 0.000014 * (D ^ 1.6) * (W * 17 + W * (H - 15) * 0.69),

где D - посадочный диаметр в дюймах, W - ширина в миллиметрах, H - высота в процентах от ширины.

Для вычисления таких значений в catalog.app есть тип свойства "выражение". Впрочем, его возможности гораздо шире, это полноценный язык программирования.

Свойство создаётся обычным порядком — вкладка «Свойства», кнопка «Создать», тип «Выражение». Сам текст выражения пишется в поле «Значение по умолчанию»; для длинных формул у поля есть полноэкранный редактор.

Для описания выражений мы используем язык Scriban — быстрый, безопасный и лёгкий язык сценариев. Подробнее о нём здесь.

Дополнительно доступна функция возведения в степень pow.

Данные товара доступны в объекте model. Проверить выражение можно кнопкой «Тест»: укажите Id товара, который послужит тестовым, — в окне «Результаты» появится вычисленное значение или сообщение об ошибке. Кнопка «Модель» показывает сам объект model для этого товара, чтобы было видно, как называются поля и свойства.

Все сохранения и тесты выражений попадают в историю шаблонов Scriban — туда можно вернуться, если формула перестала считать то, что нужно.

В объект с данными товара другие вычисляемые свойства не добавляются.

Пример модели данных:


{

    "Category": "Шины",

    "Vendor": "Formula",

    "Name": "Шина зимняя(Ice 235/55R17 103T,шипы)",

    "Article": null,

    "Color": null,

    "Ean": "8019227278347",

    "Properties": {

        "Ширина профиля": 235.000000,

        "Диаметр": 17.000000,

        "Шипы": true,

        "Возможность ошиповки": false,

        "Тип автомобиля": ["легковой"],

        "Способ герметизации": ["бескамерные"],

        "Конструкция": "радиальные",

        "Страна производства": "Китай",

        "Высота профиля": 55,

        "Производитель": "Formula",

        "Импортер": "ООО ПОКРЫШКИНО Минский р-н, Щомыслицкий с/с, 31-1 район аг. Озерцо, каб. 107",

        "Ставка НДС": 20.000000

    },

    "Tags": [

        {

            "Id": 1,

            "Name": "Черная пятница"

        },

        {

            "Id": 2,

            "Name": "11.11"

        }

    ]

}

Пример вычисления массы шины по представленной модели:


d = model.Properties["Диаметр"];

w = model.Properties["Ширина профиля"];

h = model.Properties["Высота профиля"];

ret 0.000014 * pow(d, 1.6) * (w * 17 + w * (h - 15) * 0.69);

Результат:


13,653658330880194600000000000

Карточка товара

Карточка — это всё содержимое товара: изображения, свойства и описание. Открывается из таблицы товаров кликом по названию, дальше — вкладка «Карточка».

Вкладки товара: «Главная» (номенклатура, категория, бренд, наборы), «Цены», «Карточка», «Библиотека», «Связанные товары», «Изменения», у каталогов маркетплейсов — «Аналитика» и «Контент-рейтинг».

Название товара написано над вкладками и не уезжает при прокрутке: когда страница уходит вверх, заголовок сжимается в узкую полосу и остаётся на виду — на любой вкладке видно, чей это товар. Значки Google и Яндекса сразу за названием ищут товар в интернете по бренду, названию и артикулу — поиск открывается в новой вкладке, пригодится, когда нужно найти описание, фото или цены у других продавцов. Когда заголовок сжат в полосу, у её правого края появляется кнопка «Перейти в каталог» — она ведёт к таблице товаров каталога, не нужно прокручивать страницу обратно к хлебным крошкам.

Заполнять карточку руками приходится не всё: товар сопоставляется с карточками библиотеки, и часть свойств и изображений переносится оттуда автоматически. Что именно нашлось — видно на вкладке «Библиотека».

Изображения

Две области: «Подтвержденные» — те, что уйдут в выгрузку, и «Исключенные» — кандидаты и отклонённые.

Фон подсказывает, откуда взялось изображение: бежевый — подобрано автоматически, голубой — решение принял человек. Зелёная кнопка на картинке подтверждает её, красная — исключает; изображения перетаскиваются между областями и внутри области — порядок в подтверждённых и есть порядок в карточке.

Кнопки под изображениями:

  • «Добавить изображение» — загрузить свои файлы (.jpg, .bmp, .png);

  • «Исключить все изображения» — начать подбор заново;

  • «Назначить теги изображениям» — пометить картинки тегами, в том числе все сразу;

  • «Добавить инфографику» — сгенерировать картинку с надписями поверх выбранного изображения и добавить её в карточку.

Вместо превью может стоять статус: «Обрабатывается…», «Битое фото», «Нет в библиотеке».

Свойства

Свойства идут блоками: сначала группы категории, потом группы глобальных свойств, потом «Свойства без группы». Блок сворачивается кликом по названию, в шапке есть «Свернуть все» и «Развернуть все» — состояние запоминается и восстановится в следующей карточке.

Над таблицей — фильтр «Только обязательные свойства» и фильтры по параметрам свойств. Легенда «Статусы свойства» объясняет цвет значения: заполнено вручную, заполнено автоматически, значение по умолчанию, заполнено ИИ, скопировано, не заполнено.

Ввод зависит от типа свойства. Зелёная кнопка подтверждает значение, красная — сбрасывает. В колонке «Подсказки» собраны значения из привязанных карточек библиотеки и из прайсов поставщиков: клик подставляет значение, а несовпадающие написания можно тут же занести в синонимы.

Важное правило: подтверждённое человеком значение автоматика больше не перезаписывает.

Описание

Редактор со счётчиком символов. Рядом ссылки: «варианты» — описания из привязанных карточек библиотеки, «сгенерировать описание» — генерация по ключевым свойствам и фразам, «заполнять автоматически» — вернуть описанию автоматический статус.

Документы

В каталогах Wildberries под описанием есть блок «Документы» — сертификаты и декларации карточки в том виде, в каком их хранит Wildberries: «Тип», «Номер», «Номер продукции», «Торговое наименование», «Заявитель», «Действует с» и «Действует по»; у бессрочного документа вместо даты окончания написано «Бессрочный».

Ссылка «добавить документ» рядом с заголовком открывает окно, где заполняются те же поля; карандаш в конце строки открывает то же окно для уже заведённого документа. Флажок «Бессрочный» гасит поле «Действует по» — у такого документа срока нет. «Сохранить» возвращает в таблицу сразу, страница не перезагружается; если что-то не заполнено, окно останется открытым и красной строкой скажет, что поправить.

Корзина рядом с карандашом удаляет документ — сначала спросит «Удалить документ?». Удаляется строка в каталоге; на карточку в кабинете Wildberries это подействует при следующей выгрузке.

Пока ни одного документа не заведено, вместо таблицы написано «Документы не загружены».

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

При выгрузке в карточку уходят документы из этой таблицы. Если в ней пусто, номера берутся из свойств товара «Номер сертификата соответствия» и «Номер декларации соответствия» — их заполняют в таблице свойств, как любое другое свойство, а срок действия берётся из свойств «Дата регистрации сертификата/декларации» и «Дата окончания действия сертификата/декларации» (пустая дата окончания означает бессрочный документ). Если пусто и там, и там, выгрузка документы не трогает и в кабинете Wildberries остаются те, что уже есть.

Панель действий сверху

  • «Заполнить свойства из библиотеки» — заполнить этот товар стандартным алгоритмом, дозаполнить оставшееся искусственным интеллектом, заполнить сразу много товаров, а также переходы к синонимам и настройкам сопоставления.

  • «Копировать» / «Вставить» — перенести содержимое другого товара: свойства, изображения или всё сразу.

  • «Экспорт в другие каталоги» — скопировать карточку в соседние каталоги компании.

  • «Заморозить карточку» — замороженная карточка меняется только руками, автоматика её не трогает.

  • «Запретить экспорт карточек» (Ozon, Wildberries, Яндекс, Мегамаркет) — товар продолжит участвовать в обновлении цен и остатков, но его карточка на площадку уходить не будет.

Если у товара есть модификации, у изображений и свойств появляется меню «Применить ко всем модификациям» — не нужно заполнять каждый цвет и размер отдельно.

Контент-рейтинг

Для каталогов Ozon, Wildberries и Яндекс Маркета есть вкладка «Контент-рейтинг»: оценка заполненности карточки самой площадкой, средний рейтинг категории и список замечаний — ошибки, предупреждения и рекомендации с потенциальным приростом рейтинга. Кнопка «Обновить контент-рейтинг» запрашивает свежие данные.

Дальше

Модификации товаров

Модификации — это вариации одного товара: цвет, объём памяти, диагональ экрана. В модификациях могут участвовать свойства следующих типов:

  • Взаимоисключающий выбор

  • Логическое значение

  • Строковое значение

  • Дробное число

  • Целое число

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

Операции непосредственно с модификациями

Создание модификаций

Создание модификаций товаров доступно двумя способами:

  • На главной странице товара (вкладка "Главная")

    Нажать кнопку "+" в блоке основной информации товара, затем выбрать свойства для модификаций, заполнить недостающие значения и добавить другие товары.

  • На вкладке "Товары" через массовые операции

    Выбрать необходимые товары, выбрать пункт "Объединить товары в модификации" в массовых операциях, затем выбрать свойства для модификаций, заполнить недостающие значения, проверить и подтвердить список товаров.

Удаление товара из модификаций

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

Добавление товара к существующим модификациям

Добавление товара к существующим модификациям доступно двумя способами:

  • На главной странице товара (вкладка "Главная")

    Нажать на значок карандаша вверху справа в блоке "Модификации" (возле значка корзины), проверить и подтвердить список товаров.

  • На вкладке "Товары" через массовые операции, с добавлением как минимум одного нового свойства

    Выбрать необходимый товар и, как минимум, один товар уже состоящий в модификациях, выбрать пункт "Объединить товары в модификации" в массовых операциях, затем выбрать новые свойства для модификаций, заполнить недостающие значения, проверить и подтвердить список товаров.

Удаление свойства из модификаций

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

Добавление свойства к существующим модификациям

Добавление свойства к существующим модификациям доступно двумя способами:

  • На главной странице товара (вкладка "Главная")

    Нажать на значок "+" в блоке основной информации товара, затем выбрать новые свойства для модификаций, заполнить недостающие значения, проверить и подтвердить список товаров.

  • На вкладке "Товары" через массовые операции

    Выбрать как минимум один товар уже состоящий в модификациях, выбрать пункт "Объединить товары в модификации" в массовых операциях, затем задать новые свойства для модификаций, заполнить недостающие значения, проверить и подтвердить список товаров.

Вспомогательные операции с модификациями

Применение одинакового набора изображений к модификациям

Чтобы применить одинаковый набор изображений к модификациям, необходимо зайти на вкладку "Карточка" товара, нажать на значок трех вертикальных точек вверху справа в блоке "Подтвержденные" и выбрать нужный пункт меню.

Применение значения свойства к модификациям

Чтобы применить значение свойства к модификациям, необходимо зайти на вкладку "Карточка" товара, нажать на значок "▼" возле галочки подтверждения значения и выбрать нужный пункт меню.

Цены и ценообразование

Настройка поставщика и конкурента

Поставщик — тот, у кого вы покупаете. Из его прайса система берёт закупочные цены и наличие.

Конкурент — тот, с чьими ценами вы сравниваетесь. Настраивается точно так же, только на соседней вкладке, поэтому дальше всё сказанное про поставщика верно и для конкурента.

Настроить поставщика нужно один раз. Дальше система сама узнаёт его файл: когда придёт очередной прайс, объяснять, чей он, уже не придётся — файлы можно складывать пачкой или забирать из почты, не глядя, с какого адреса и с какой темой пришло письмо.

Где создать

Шестерёнка «Настройки» каталога → вкладка «Поставщики» (или «Конкуренты») → кнопка «Создать» над таблицей.

К настройкам уже созданного поставщика есть и короткий путь: раздел «Цены» → кебаб-меню (три точки) в строке поставщика → «Перейти к настройкам поставщика».

Главное поле — «Источник»

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

| Источник | Когда выбирать |

|---|---|

| «Из файла xlsx(csv) построчно» | обычный прайс таблицей — самый частый случай |

| «Из файла xml(yml) стандартного формата» | выгрузка в формате YML |

| «Из файла xml произвольного формата» | любой другой XML — система разберёт его по шаблону |

| «Из другого каталога» | цены берутся из профиля ценообразования вашего же соседнего каталога |

| «Из общей библиотеки» / «Из приватной библиотеки» | цены того источника, из которого приходят карточки библиотеки |

| «Актуальные цены Ozon» / «Рекомендуемые цены Ozon» | цены забираются прямо из кабинета Ozon. Если это кабинет самого каталога, цена привязывается к товару по его Id на Ozon, поэтому переименование карточки на Ozon сопоставление не сбивает; цены другого кабинета сопоставляются по названию |

| «Актуальные цены Wildberries» | цены забираются из кабинета Wildberries |

| «Актуальные цены Яндекс Маркета» | цены забираются из кабинета Яндекс Маркета |

Остальные поля вкладки «Главная»

  • «Название» — как поставщик будет называться в списках, отчётах и на страницах цен. Двух одинаковых названий быть не может.

  • «Время доставки по умолчанию» — за сколько дней товар обычно приезжает от этого поставщика. Срок участвует в ценообразовании: товар со склада и товар, который едет неделю, — разные предложения, даже если цена у них одинаковая.

  • «Календарь» — по каким дням поставщик работает. Нужен, чтобы срок доставки считался по рабочим дням, а не по календарным.

  • «Время, которое цены актуальны (дней)» — сколько дней предложение считается живым. Если поставщик давно не присылал прайс, его старые цены после этого срока перестанут участвовать в расчётах — так вы не продадите товар по цене, которой уже нет.

  • «Использовать как источник приватной библиотеки» — галочка для поставщиков, которые присылают не только цены, но и описания, свойства, изображения. Тогда строки прайса, прошедшие фильтры, будут пополнять вашу приватную библиотеку, и из неё потом можно заполнять карточки товаров.

Если выбран источник YML, добавится ещё одно поле — «Имя магазина в xml». Впишите в него то, что стоит внутри элемента <shop><name> в файле поставщика: именно по этому имени файл и связывается с поставщиком, больше ничего настраивать не нужно.


<shop>

    <name>amd</name>

</shop>

Как система узнаёт поставщика по файлу

С обычными прайсами-таблицами всё устроено иначе. Имя файла ни на что не влияет — система заглядывает внутрь и узнаёт поставщика по тому, как файл устроен: какие в нём колонки и что в них лежит. Поэтому настройки одного поставщика должны хоть чем-то отличаться от настроек другого, иначе система не поймёт, чей прайс перед ней.

Чаще всего колонки у всех разные, и делать ничего не нужно. Но если два поставщика присылают одинаковые по структуре файлы, дайте системе зацепку — что-нибудь, что есть в одном файле и чего нет в другом. Для этого на вкладке «Настройки парсинга» есть два поля:

  • «Уникальное поле» — ячейка, которая встречается только в этом прайсе: телефон или почта поставщика, название компании в шапке файла.

  • «Уникальный фрагмент имени файла» — кусочек названия, который всегда есть в имени файла именно этого поставщика.

Вкладка «Настройки парсинга» — для таблиц

Здесь вы объясняете системе, что означает каждая колонка прайса: в какой лежит название, в какой цена, в какой артикул, штрихкод, остаток, МРЦ, валюта, срок доставки. Всё это выбирается из списков — писать формулы не нужно.

У одного поставщика может быть несколько таких настроек. Это нужно, когда он присылает разные файлы (например, отдельно склад и отдельно распродажа) или один файл с несколькими листами: у каждой настройки своё название и, если нужно, имя листа.

Вкладка «Настройки шаблона» — для произвольного XML

Появляется только у поставщика с источником «Из файла xml произвольного формата». Колонок в таком файле нет, поэтому и размечать нечего: вместо этого пишется небольшой сценарий на языке Scriban, который достаёт из XML нужные значения.

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

Остальные вкладки

Они появляются после того, как поставщик сохранён в первый раз. Заполнять сразу все не нужно — беритесь за ту, которая понадобится:

  • «Настройки фильтра при парсинге» и «Стоп слова» — что из прайса не брать вообще: например, товары дешевле определённой суммы или строки с ненужными словами. Подробнее — Настройка фильтров парсинга.

  • «Настройки создания товаров из не сопоставленных» — что делать со строками прайса, для которых у вас ещё нет товара: их можно автоматически заводить в каталог.

  • «Дополнительные данные» — реквизиты и контакты поставщика. На расчёты не влияют, но попадают в отчёты и выгрузки.

  • «Обновление приватной библиотеки» — куда складывать данные поставщика, если вы поставили галочку «Использовать как источник приватной библиотеки».

Дальше

Настройка фильтров парсинга цен поставщика/конкурента

Фильтр отсеивает строки прайса ещё до сопоставления: то, что он отбросил, в каталог не попадёт.

Настраивается он так: шестерёнка «Настройки» каталога → вкладка «Поставщики» или «Конкуренты» → карандаш в строке продавца → вкладка «Настройки фильтра при парсинге». Вкладка появляется только у сохранённого продавца. Рядом вкладка «Стоп слова» — там отсеиваются строки по словам в названии.

Доступны два типа фильтров, и работает только один из них: при переключении значения второго очищаются.

  • Фильтр по умолчанию

  • Фильтр по шаблону

Настройка фильтра по умолчанию:

  • Выберите тип фильтра "Фильтр по умолчанию"

  • Задайте пары «От» / «До» для полей «Цена», «МРЦ», «В наличии» и «Время доставки (0 - на складе)»

  • Нажмите "Сохранить"

Настройка фильтра по шаблону:

  • Выберите тип фильтра "Фильтр по шаблону"

  • Задайте шаблон

  • Нажмите "Сохранить"

Для написания шаблона мы используем язык Scriban. Scriban - это быстрый, мощный, безопасный и легкий язык сценариев.

Подробнее с языком можно ознакимиться здесь.

Шаблон на вход должен получать объект offer(описание смотри ниже), а возращать один из трех типов данных:

  • true

  • false

  • модифицированный объект offer (можно оставлять только изменяемые поля, остальные сохранят свои значения)

Пример модифицированного объекта offer


{

	Category: offer.Category,

	Vendor: offer.Vendor,

	Name: offer.Name,

	Ean: offer.Ean,

	Article: offer.Article,

	SellerCode:offer.SellerCode,

	Price: offer.Price,

	InitialPrice: offer.InitialPrice,

	MinRetailPrice: offer.MinRetailPrice,

	MinRetailPriceCurrency: offer.MinRetailPriceCurrency,

	MaxRetailPrice: offer.MaxRetailPrice,

	MaxRetailPriceCurrency: offer.MaxRetailPriceCurrency,

	InStockAmount: offer.InStockAmount,

	DeliveryTime: offer.DeliveryTime

}

Пример шаблона


if offer.Price > 10 && offer.InStockAmount> 40

	ret {

		Category: "Новая Категория",

		Vendor: "Новый бренд"

	}

else

	ret false

end

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

Кроме того у всех товаров, удовлетворяющих первому условию категория будет заменена на "Новая категория", а бренд "Новый бренд".

Все остальные свойства (Name, Article, SellerCode, Price, MinRetailPRice, InStockAmount, DeliveryTime) будут взяты из исходных данных.

Помимо данных, которые есть в модели, можно вернуть значение специального свойства "SellerId".

Это требуется, если нужно разбить общий файл на несколько поставщиков в зависимости от некоторого условия.

Пример:


if offer.OriginalRecord.Param["Гарантия"] == "12"

    ret {SellerId: 4}

end



ret true

В результате всем товарам с гарантией в 12 месяцев будет назначен поставщик с Id=4.

Настройка шаблонов парсинга цен поставщика

Шаблон нужен, когда поставщик присылает XML произвольного формата — не YML и не таблицу. Для обычных таблиц (xlsx, csv) колонки размечаются на вкладке «Настройки парсинга», шаблон там не нужен.

Настройка выполняется так: шестерёнка «Настройки» каталога → вкладка «Поставщики» → карандаш в строке поставщика → вкладка «Настройки шаблона». Вкладка появляется у поставщика с источником «Из файла xml произвольного формата».

Для распознавания файла на вкладке нужно указать уникальную подстроку в названии файла и задать шаблон.

Для написания шаблона мы используем язык Scriban. Scriban - это быстрый, мощный, безопасный и легкий язык сценариев.

Подробнее с языком можно ознакимиться здесь.

Шаблон на вход получает объект сформированный из xml-файла, а возращать должен объект PriceRecord.

Объект PriceRecord состоит из следующих полей:

  • Name - название товара

  • Category - категория товара

  • Vendor - бренд товара

  • Article - артикул бренда

  • Ean - EAN

  • SellerCode - внешний Id

  • Price - цена товара (можно передавать как строку и в качестве разделитля дробной части использовать '.' или ',')

  • PriceCurrency - валюта цены (поддерживаются значения "BYN", "RUB", "USD", "EUR", "UAH", "KZT", регистр не учитывается)

  • MinRetailPrice - МРЦ товара (можно передавать как строку и в качестве разделитля дробной части использовать '.' или ',')

  • MinRetailPriceCurrency - валюта МРЦ (поддерживаются значения "BYN", "RUB", "USD", "EUR", "UAH", "KZT", регистр не учитывается)

  • InStockAmount - количество товаров на складе

  • DeliveryTime - время доставки, дней (если не указано, то значение по умолчанию возьмется из настроек поставщика)

  • DeliveryCountryPrice - цена доставки по стране (можно передавать как строку и в качестве разделитля дробной части использовать '.' или ',')

  • DeliveryTownPrice - цена доставки по городу (можно передавать как строку и в качестве разделитля дробной части использовать '.' или ',')

  • Source - внешняя ссылка (URL) на товар

  • CodeForExactMatching - код для точного сопоставления со свойством каталога, указанным в настройках

Исходный xml-файл будет предбразован в scriban-объект согласно вложенности файла. Более подробно разберем на примере.

Пример xml-файла:


<?xml version="1.0" encoding="UTF-8"?>

<supplier_catalog date="2022-05-23 13:44" version="1.2">

	<supplier>

		<company>catalog.app</company>

		<post_address>109428, Москва г</post_address>

		<legal_address>109428, Москва г</legal_address>

		<address>109428, Москва г</address>

		<website>https://catalog.app</website>

		<phone>(123)456-78-90</phone>

		<platform>1C</platform>

		<platform_version>8.2</platform_version>

		<email>example@catalog.app</email>

		<currencies>

			<currency id="RUR" rate="1"/>

		</currencies>

		<categories>

			<category id="28255779">09.01.02 Бассейны, игровые центры BESTWAY</category>

			<category id="28274064">18.01 Кухня</category>

			<category id="28266257">313.18.12 Разное</category>

			<category id="28266266">313.18.13 Пластиковые горшки</category>

		</categories>

		<offers>

			<offer id="28263223">

				<currencyId>RUR</currencyId>

				<categoryId>28266257</categoryId>

				<Article>44695</Article>

				<name>Антилед Гуд Хим Стронг 4л, арт. 44695</name>

				<description/>

				<url/>

				<stock1>0</stock1>

				<stock2>2</stock2>

				<price_rrc>172</price_rrc>

				<price_opt>125.06</price_opt>

				<price_opt1>121.43</price_opt1>

				<price_opt2>117.91</price_opt2>

				<price_opt3>114.48</price_opt3>

				<VAT>20</VAT>

				<multi>120</multi>

				<unit>шт.</unit>

				<brand>ГудХим</brand>

				<SHK>4623721344695</SHK>

			</offer>

			<offer id="28266353">

				<currencyId>RUR</currencyId>

				<categoryId>28274064</categoryId>

				<Article/>

				<name>Ручка для стеклянной банки d-82, 5шт.</name>

				<description/>

				<url/>

				<stock1>0</stock1>

				<stock2>&gt;50</stock2>

				<price_rrc>48</price_rrc>

				<price_opt>34.96</price_opt>

				<price_opt1>33.94</price_opt1>

				<price_opt2>32.96</price_opt2>

				<price_opt3>32</price_opt3>

				<VAT>20</VAT>

				<multi>40</multi>

				<unit>шт.</unit>

				<brand>Нет бренда</brand>

				<SHK>4665299490220</SHK>

			</offer>

			<offer id="28261987">

				<currencyId>RUR</currencyId>

				<categoryId>28266266</categoryId>

				<Article>П-12TX</Article>

				<name>Корона для орхидей МИНИ с поддоном</name>

				<description/>

				<url/>

				<stock1>>50</stock1>

				<stock2>32</stock2>

				<price_rrc>230</price_rrc>

				<price_opt>167.14</price_opt>

				<price_opt1>162.29</price_opt1>

				<price_opt2>157.59</price_opt2>

				<price_opt3>153</price_opt3>

				<VAT>20</VAT>

				<multi>24</multi>

				<unit>шт.</unit>

				<brand>Нет бренда</brand>

				<SHK>4607021018777</SHK>

			</offer>

			<offer id="28271213">

				<currencyId>RUR</currencyId>

				<categoryId>28255779</categoryId>

				<Article>57273</Article>

				<name>57273 Бассейн с надувным бортом 366х76см</name>

				<picture>https://example.com/shop/products/52/74/17452/images/8944/8944.970.jpg</picture>

				<description/>

				<url>https://example.com/57273-basseyn-366-kh-76-sm/</url>

				<stock1>6</stock1>

				<stock2>32</stock2>

				<price_rrc>7865</price_rrc>

				<price_opt>5727.45</price_opt>

				<price_opt1>5561.25</price_opt1>

				<price_opt2>5400.29</price_opt2>

				<price_opt3>5243</price_opt3>

				<VAT>20</VAT>

				<multi>1</multi>

				<unit>шт.</unit>

				<brand>Bestway</brand>

				<SHK>6942138951356</SHK>

			</offer>

		</offers>

	</supplier>

</supplier_catalog>

Данный xml-файл будет преобразован в следующий объект (для понятности используем JSON):


{

    "?xml": {

        "version": "1.0",

        "encoding": "UTF-8"

    },

    "supplier_catalog": {

        "date": "2022-05-23 13:44",

        "version": "1.2",

        "supplier": {

            "company": "catalog.app",

            "post_address": "109428, Москва г",

            "legal_address": "109428, Москва г",

            "address": "109428, Москва г",

            "website": "https://catalog.app",

            "phone": "(123)456-78-90",

            "platform": "1C",

            "platform_version": "8.2",

            "email": "example@catalog.app",

            "currencies": {

                "currency": {

                    "id": "RUR",

                    "rate": "1"

                }

            },

            "categories": {

                "category": [

                    {

                        "id": "28255779",

                        "text": "09.01.02 Бассейны, игровые центры BESTWAY"

                    },

                    {

                        "id": "28274064",

                        "text": "18.01 Кухня"

                    },

                    {

                        "id": "28266257",

                        "text": "313.18.12 Разное"

                    },

                    {

                        "id": "28266266",

                        "text": "313.18.13 Пластиковые горшки"

                    }

                ]

            },

            "offers": {

                "offer": [

                    {

                        "id": "28263223",

                        "currencyId": "RUR",

                        "categoryId": "28266257",

                        "Article": "44695",

                        "name": "Антилед Гуд Хим Стронг 4л, арт. 44695",

                        "description": null,

                        "url": null,

                        "stock1": "0",

                        "stock2": "2",

                        "price_rrc": "172",

                        "price_opt": "125.06",

                        "price_opt1": "121.43",

                        "price_opt2": "117.91",

                        "price_opt3": "114.48",

                        "VAT": "20",

                        "multi": "120",

                        "unit": "шт.",

                        "brand": "ГудХим",

                        "SHK": "4623721344695"

                    },

                    {

                        "id": "28266353",

                        "currencyId": "RUR",

                        "categoryId": "28274064",

                        "Article": null,

                        "name": "Ручка для стеклянной банки d-82, 5шт.",

                        "description": null,

                        "url": null,

                        "stock1": "0",

                        "stock2": ">50",

                        "price_rrc": "48",

                        "price_opt": "34.96",

                        "price_opt1": "33.94",

                        "price_opt2": "32.96",

                        "price_opt3": "32",

                        "VAT": "20",

                        "multi": "40",

                        "unit": "шт.",

                        "brand": "Нет бренда",

                        "SHK": "4665299490220"

                    },

                    {

                        "id": "28261987",

                        "currencyId": "RUR",

                        "categoryId": "28266266",

                        "Article": "П-12TX",

                        "name": "Корона для орхидей МИНИ с поддоном",

                        "description": null,

                        "url": null,

                        "stock1": ">50",

                        "stock2": "32",

                        "price_rrc": "230",

                        "price_opt": "167.14",

                        "price_opt1": "162.29",

                        "price_opt2": "157.59",

                        "price_opt3": "153",

                        "VAT": "20",

                        "multi": "24",

                        "unit": "шт.",

                        "brand": "Нет бренда",

                        "SHK": "4607021018777"

                    },

                    {

                        "id": "28271213",

                        "currencyId": "RUR",

                        "categoryId": "28255779",

                        "Article": "57273",

                        "name": "57273 Бассейн с надувным бортом 366х76см",

                        "picture": "https://example.com/shop/products/52/74/17452/images/8944/8944.970.jpg",

                        "description": null,

                        "url": "https://example.com/57273-basseyn-366-kh-76-sm/",

                        "stock1": "6",

                        "stock2": "32",

                        "price_rrc": "7865",

                        "price_opt": "5727.45",

                        "price_opt1": "5561.25",

                        "price_opt2": "5400.29",

                        "price_opt3": "5243",

                        "VAT": "20",

                        "multi": "1",

                        "unit": "шт.",

                        "brand": "Bestway",

                        "SHK": "6942138951356"

                    }

                ]

            }

        }

    }

}

Особое внимание стоит обратить на прицип формирования массивов и название поля для внутреннего содержимого тега (text).

Обращение к полям объекта будет происходить через разделение символом точки, а главный объект будет называться 'model'.

К примеру, чтобы получить название первой категории нужно выполнить следующее обращение: model.supplier_catalog.supplier.categories.category[0].text.

Пример шаблона для парсинга указанного выше xml-файла:


func get_array(item, prop)

    if object.has_key item prop

        if (object.typeof item[prop]) == "array"

            ret item[prop]

        else

            ret [item[prop]]

        end

    end

    ret []

end



func get_in_stock_amount(offer)

    in_stock_amount = "0"

    if string.starts_with offer.stock1 ">"

        in_stock_amount = string.remove_first offer.stock1 ">"

    else

        in_stock_amount = offer.stock1

    end



    ret string.to_int in_stock_amount 

end



func get_currency(offer)

    available_currencies = ["BYN", "RUB", "USD", "EUR", "UAH", "KZT"]

    

    currency_id_normalized = string.upcase offer.currencyId

    currency = currency_id_normalized == "RUR" ? "RUB" : currency_id_normalized

    

    ret array.contains available_currencies currency ? currency : null

end



categories = get_array model.supplier_catalog.supplier.categories "category"

categories_dict = {}

for category in categories

    categories_dict[string.to_long category.id] = category

end



offers = get_array model.supplier_catalog.supplier.offers "offer"



records = []

for offer in offers

    currency = get_currency offer

    if currency == null

        continue

    end 



    record = {

        Name: offer.name,

        Vendor: offer.brand,

        Article: offer.Article,

        Ean: offer.SHK,

        Category: categories_dict[string.to_long offer.categoryId].text,

        Price: offer.price_opt,

        SellerCode: offer.id,

        InStockAmount: get_in_stock_amount offer,

        PriceCurrency: currency

    } 



    records = array.add records record

end



ret records

Автоматическое обновление цен поставщиков

Прайсы не обязательно загружать руками: система сама заберёт файл из почты, по прямой ссылке, с Google или Яндекс Диска, из Dropbox, по FTP или из внешнего API.

1. Настроить профиль автоимпорта

Шестерёнка «Настройки» каталога → вкладка «Автоимпорт прайсов» → кнопка «Создать» над таблицей.

В форме укажите название, выберите источник — от него зависят остальные поля (адрес ссылки, учётная запись почты, параметры FTP) — и поставщика или конкурента, чьи цены обновляются. Настройки почтовых ящиков живут на соседней вкладке «Почта».

Если ваш источник закрыт по IP, разрешите наши адреса — ссылка «IP-адреса наших серверов для белого списка» есть прямо в форме.

2. Запустить

Кнопка «Запустить» в строке профиля создаёт задачу обновления цен. Ход и результат — «Задачи» → «Обновление цен»: там видно, какой файл разобран, сколько строк сопоставилось и что не удалось.

3. Поставить на расписание

Регулярное обновление настраивается в общих настройках компании: меню профиля → «Общие настройки» → вкладка «Расписание», тип задачи «Импорт». Обратите внимание: сами источники (почта, ссылки) настраиваются в каталоге, а время запуска — в расписании компании.

Обычная ночная цепочка выглядит так: автоимпорт прайсов → ценообразование → экспорт цен и остатков на площадки.

Получить результат снаружи

Итог обновления можно забрать через API — удобно, если прайс приезжает из вашей учётной системы.

Расширение для ручного парсинга

Случается, что информации о товаре нет в нашей библиотеке, но она есть на каком-то сайте. При этом вручную копировать её — долго и утомительно.

Мы сделали расширение для браузера, которое помогает в такой ситуации.

Скачать расширение (ZIP)

Принцип работы

Пользователь устанавливает расширение. Когда пользователь с установленным активным расширением открывает страницу сайта, который система может распарсить,

HTML код страницы отправляется на сервер catalog.app. Сервер собирает информацию о ценах, характеристиках, описаниях и изображениях товаров со страницы.

Собранные данные попадают в общую (публичную) или приватную библиотеку — в зависимости от выбранного в настройках расширения назначения данных.

Решаемые задачи

  • Такой подход позволяет получить информацию даже со страниц, закрытых авторизацией или жесткой капчей.

  • Можно получать информацию о новинках, не дожидаясь, пока её найдет автоматический парсер.

  • Если сайт ещё не поддерживается, с помощью расширения можно отправить образцы страниц, по которым система автоматически создаёт новый парсер.

Установка

  1. Скачайте расширение.

  2. Распакуйте архив в какую-либо папку на вашем компьютере.

  3. Откройте браузер (на движке Chromium) и перейдите на страницу «Управление расширениями» (Menu → Extensions → Manage Extensions).

  4. Включите переключатель «Режим разработчика» (Developer mode).

  5. Нажмите «Загрузить распакованное» (Load unpacked) и укажите путь к папке с расширением.

Настройка

Откройте настройки расширения кнопкой-шестерёнкой (⚙) в правом верхнем углу всплывающего окна (или через пункт «Параметры»/«Options» в контекстном меню значка). Страница настроек разделена на три вкладки: Основные, Сценарии и Дополнительно.

Вкладка «Основные»

Профиль

Показывает данные авторизованного пользователя. Если вход не выполнен, отображается баннер с пояснением: неавторизованные пользователи тоже могут пользоваться расширением — собранные данные попадают в общую публичную библиотеку, доступную всем.

Учётные данные

Введите логин и пароль от вашего аккаунта в catalog.app и нажмите «Войти». Расширение проверит данные на сервере и, при успехе, сохранит их. Кнопка «Выйти» очищает сохранённые данные.

Авторизация не обязательна — без неё расширение работает в режиме сбора данных в общую публичную библиотеку.

Назначение данных

  • Публичная библиотека — собранные данные доступны всем пользователям системы. Подходит, если вы не авторизованы или хотите делиться данными со всеми.

  • Приватная библиотека — данные видны только вашей компании. Требует входа в аккаунт.

Если вы не авторизованы, выбор приватной библиотеки недоступен; настройка автоматически переключается на публичную.

Вкладка «Сценарии»

Здесь создаются и редактируются сценарии — именованные списки адресов (по одному URL в строке), которые расширение обходит автоматически. Нажмите «Новый сценарий», задайте имя и список ссылок, затем «Сохранить». Запускаются сценарии из всплывающего окна, на вкладке «Автоматизация» (см. раздел Автоматизация).

Вкладка «Дополнительно»

Настройка автоматизации

Тонкая настройка таймингов прокрутки, навигации и парсинга для автоматического обхода. Значения по умолчанию подходят большинству сайтов: увеличьте задержки для медленных или «тяжёлых» (с обильной ленивой подгрузкой) страниц, уменьшите — чтобы обходить быстрее. Изменения применяются к уже запущенному обходу на следующем шаге. Кнопка «Сбросить по умолчанию» возвращает значения по умолчанию.

Для разработчиков

  • Режим отладки — переключает расширение на локальный API (localhost). Используется только для разработки.

Использование

Откройте поддерживаемый системой сайт. На значке расширения появится цветной индикатор:

  • Зелёный — страница успешно распарсена, данные сохранены.

  • Синий — страница сохранена: либо как образец для будущего парсера (если парсера для сайта ещё нет), либо не распознана текущим парсером (тип страницы не подошёл).

  • Оранжевый — обработка в процессе.

  • Красный — ошибка обработки.

Нажмите на значок расширения, чтобы открыть всплывающее окно. Оно состоит из двух вкладок:

  • Статус — результат по текущей странице: список найденных товаров с ценами и изображениями, либо статус обучения для сайтов без готового парсера.

  • Автоматизация — управление автоматическим обходом сайтов (см. ниже).

Автоматизация

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

Обход домена

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

Сценарии

В разделе Сценарии перечислены созданные вами сценарии (списки конкретных URL — см. вкладку «Сценарии» в настройках). Кнопка ▶ запускает сценарий: расширение по очереди открывает каждый адрес из списка, прокручивает его до конца и парсит, после чего останавливается. Ссылка «Управление» открывает редактор сценариев в настройках.

Итоги обхода

Когда обход или сценарий завершается (сам по себе, по кнопке ⏹ или из-за ошибки), рабочая вкладка не остаётся на последней странице, а открывает страницу с итогами. На ней видно: тип задания и статус (завершено / остановлено / прервано из-за ошибки), источник (домен или название сценария), затраченное время, сколько страниц пройдено и сколько карточек и цен собрано. Вкладку с итогами можно просто закрыть.

Важно: фоновые вкладки и ленивая подгрузка

Браузеры на движке Chromium сильно ограничивают вкладки, которые в данный момент не активны: приостанавливают анимацию и фоновую подгрузку, замедляют таймеры. Поэтому на сайтах с «ленивой» подгрузкой товаров (Ozon, Wildberries, Яндекс Маркет и подобных) в фоновой вкладке страница может прокручиваться, но новые товары не догружаются — и собирается лишь часть каталога.

Чтобы собрать такую страницу полностью, держите рабочую вкладку обхода видимой: переключитесь на неё или оставьте её в видимом окне и не сворачивайте его. Переход в другое приложение не мешает, пока вкладка остаётся видимой; а вот переключение на другую вкладку в том же окне снова «замораживает» обход.

Для очень больших страниц (несколько тысяч товаров) увеличьте на вкладке «Дополнительно» параметры «Максимум проходов» и «Макс. время прокрутки / страницу» — иначе значений по умолчанию может не хватить, чтобы догрузить все товары.

Новые сайты: автоматическое создание парсеров

Если вы открываете сайт, для которого парсер ещё не создан, отправьте несколько его страниц как образцы: на странице с товарами нажмите кнопку «Отправить образец» в заголовке всплывающего окна — она отправит текущую страницу как новый образец. Отправляйте страницы разных типов — и списки товаров, и карточки. Во всплывающем окне виден счётчик прогресса — например, «2 из 5 образцов собрано».

Когда собрано нужное количество образцов, система автоматически генерирует парсер с помощью ИИ. Обычно парсер готов за 10–15 минут, после чего страницы того же сайта начнут обрабатываться автоматически.

Сообщить о проблеме

Если парсер работает неправильно (нашёл не все товары, неверные цены, испорченные изображения), нажмите ссылку «Сообщить об ошибке парсера» на вкладке «Статус» всплывающего окна.

Выберите тип проблемы:

  • Парсер работает — нужны доработки — парсер в целом работает, но нуждается в доработке.

  • Парсер сломан — пересоздать с нуля — парсер сломан, нужно пересоздать его заново.

Опишите проблему в открывшемся поле и нажмите «Отправить». Текущая страница автоматически прикрепится к отчёту как новый образец, и система перегенерирует парсер с учётом вашего отзыва.

Алгоритм ценообразования

Профиль ценообразования берёт цены поставщиков и цены конкурентов и считает по ним вашу цену на каждый товар. Здесь — как именно, по шагам. Где что настраивается, описано в настройках профилей ценообразования; названия вкладок ниже — это вкладки профиля.

1. Какие цены вообще участвуют

В расчёт попадает строка прайса, если она сопоставлена с товаром, подтверждена, не помечена подозрительной, цена больше нуля и прайс поставщика не просрочен. Срок годности прайса — момент последней загрузки плюс поле поставщика «Время, которое цены актуальны (дней)»; выходные из календаря поставщика этот срок продлевают.

Все суммы переводятся в валюту профиля по курсам каталога.

Дальше действуют опции поставщика (вкладка «Опции поставщиков»): «Учитывать при ценообразовании», «Только подтвержденные вручную сопоставления», «Мин в наличии (шт.)» и «Наценка (скидка) (%)» — последняя сразу правит входную цену.

2. Какие товары считаются

Товар участвует, если для него нашёлся набор наценок на вкладке «Наценки». Правила ищутся от частного к общему: категория + бренд, потом бренд, потом категория (включая родительские), потом общий набор. Если общего набора нет, а частный не нашёлся, товар в расчёт не попадёт.

3. Входная цена

Из оставшихся предложений выбирается одно:

  • если оба предложения укладываются в «Максимальное время поставки» профиля — побеждает более дешёвое;

  • если оба не укладываются — тоже более дешёвое;

  • предложение, укладывающееся в срок, побеждает не укладывающееся, даже если оно дороже;

  • при равной цене побеждает меньший срок.

Опция «Время доставки 0 дней для склада» делает товар складским, если хотя бы одно предложение складское. Есть и другой тип выбора — «Суммарный остаток и средневзвешенная цена»: тогда вместо одного предложения берётся средневзвешенная цена по всем подходящим и суммарный остаток.

Полученная величина — входная цена Ps.

4. Наценки

По входной цене определяется диапазон на вкладке «Диапазоны», а по нему — минимальная, максимальная и фиксированная наценки:


minPrice = Ps * (1 + минимальная наценка/100) + фиксированная наценка

maxPrice = Ps * (1 + максимальная наценка/100) + фиксированная наценка

Это коридор, в котором окажется итоговая цена.

5. МРЦ

МРЦ берётся из прайсов и работает, если у поставщика на вкладке «Опции поставщиков» выбрано «Глобальное МРЦ» или «МРЦ только для предложений от этого поставщика». Из подходящих значений берётся максимальное.

6. Цена конкурента

Собираются две корзины: конкуренты с высоким приоритетом (вкладка «Опции конкурентов», плюс поставщики, отмеченные «Конкурент. Высокий приоритет») и с низким. В каждой берётся минимальная цена. Высокий приоритет главнее: низкий рассматривается, только если высокого нет. К результату применяется «Общий демпинг, %».

7. Ручные цены

Ручная цена проверяется раньше формулы. Если она задана и её условия выполняются (по дате, по цене, по поставщику), то она и становится итоговой ценой, а расчёт не выполняется. Ручной ценой можно и вовсе исключить товар из результата.

8. Итоговая цена

Порядок строгий:

  1. Есть МРЦ — цены конкурентов не смотрим вовсе:

    • МРЦ не ниже minPrice → цена равна МРЦ (а если МРЦ выше maxPrice и в сценарии выбрано «Максимальная наценка важнее МРЦ», цена равна maxPrice);

    • МРЦ ниже minPrice → цена равна minPrice.

  2. МРЦ нет, есть цена конкурента:

    • конкурент выше maxPrice → цена равна maxPrice;

    • конкурент ниже minPrice → цена равна minPrice;

    • иначе цена равна цене конкурента.

  3. Нет ни того, ни другого — по полю профиля «Наценка при отсутствии конкурентов и МРЦ»: минимальная, максимальная или средняя из коридора.

9. Свой алгоритм

Если товару назначен сценарий с шаблоном (вкладка «Сценарии»), он выполняется после стандартного расчёта и может переписать результат: цену, остаток, срок доставки, комментарий. Шаблон пишется на Scriban и видит карту товара, все цены поставщиков и конкурентов, комиссии площадок и результат стандартного алгоритма. Вернув false, шаблон убирает товар из результата.

Подробнее — Настройка шаблонов сценариев ценообразования.

Где смотреть результат

«Цены» → «Ценообразования» → профиль: там видно цену каждого товара, поставщика, от которого она посчитана, цену конкурента и комментарий алгоритма. Пересчёт запускается задачей «Ценообразование».

Работа с настройками профилей ценообразования

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

Список профилей: шестерёнка «Настройки» каталога → вкладка «Ценообразование». Кнопка «Создать» над таблицей заводит профиль, карандаш открывает существующий, кебаб-меню удаляет.

Внутри профиля вкладки: «Основные», «Диапазоны», «Наценки», «Доставка», «Опции поставщиков», «Опции конкурентов», «Сценарии».

Начинать нужно с диапазонов. Пока не создан ни один диапазон, остальные вкладки не показываются, а на «Основных» висит подсказка «Перейдите на вкладку диапазоны и настройте их».

Основные

Четыре поля видны сразу, остальные раскрываются кнопкой «Специфичные настройки».

| Поле | Что делает |

|---|---|

| «Название» | имя профиля, должно быть уникальным |

| «Валюта» | валюта расчёта; цены поставщиков переводятся в неё по курсам каталога |

| «Наценка при отсутствии конкурентов и МРЦ» | какую границу коридора брать, если сравнивать не с чем: «Минимальная», «Максимальная» (по умолчанию) или «Средняя» |

| «Максимальное время поставки» | сколько дней считается приемлемым сроком: предложение, укладывающееся в него, побеждает не укладывающееся даже при большей цене |

| «Минимальная цена, которая попадет в результат» | всё дешевле — выбрасывается из результата |

| «Общий демпинг, %» | на сколько понизить цену конкурента перед сравнением |

| «Учитывать новых поставщиков» | участвуют ли в расчёте поставщики, которых ещё нет в наборах опций |

| «Время доставки 0 дней для склада» | если у товара есть складское предложение, товар публикуется как складской |

| «Всегда показывать МРЦ» | показывать максимальную МРЦ в результате, даже если она не участвовала в расчёте |

| «Только ручные цены» | оставить в результате только товары с актуальной ручной ценой |

| «Не учитывать товары с ценой выше, чем у конкурентов» | убрать из результата то, что дороже конкурента |

Диапазоны

Шкала закупочных цен: дешёвый и дорогой товар почти всегда требуют разной наценки. Диапазоны становятся колонками таблиц на вкладках «Наценки» и «Доставка».

Создавая диапазон, укажите только нижнюю границу — верхняя посчитается сама по соседним диапазонам.

Наценки

Задают коридор, в котором окажется цена: от минимальной до максимальной наценки, плюс фиксированная надбавка. Правила описываются наборами: набор — это связка «Категория + Производитель» и значения по всем диапазонам. Пустая категория означает «все категории», пустой производитель — «все бренды».

Важно: наценки определяют покрытие. Товар участвует в ценообразовании, только если для его категории (или любой родительской) и бренда нашёлся набор наценок. Поэтому в рабочем профиле почти всегда есть общий набор «Все / Все».

Доставка

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

Опции поставщиков

Кто участвует в расчёте и как читаются его цены. Набор — снова связка «Категория + Производитель», внутри таблица по поставщикам:

  • «Учитывать при ценообразовании» — участвует ли поставщик;

  • «Наценка (скидка) (%)» — поправка к его цене, отрицательное значение означает скидку;

  • «Мин в наличии (шт.)» — с какого остатка предложение считается настоящим;

  • «Только подтвержденные вручную сопоставления» — брать ли цены с автоматическими привязками;

  • опции МРЦ — «Глобальное МРЦ», «МРЦ только для предложений от этого поставщика», «Не учитывать МРЦ»;

  • «Конкурент. Высокий приоритет» / «Конкурент. Низкий приоритет» / «Не конкурент» — считать ли цену поставщика ещё и ценой конкурента.

Кнопка «По поставщику» показывает те же настройки в другом разрезе: сначала выбираете поставщика, потом правите его строки во всех наборах.

Опции конкурентов

Проще: список конкурентов каталога и их приоритет в этом профиле — высокий или низкий. Высокий приоритет главнее: цены с низким рассматриваются, только если высоких нет.

Сценарии

Как именно считать цену для связки «Категория + Производитель»: способ выбора поставщика («Минимальная цена» или «Суммарный остаток и средневзвешенная цена»), поведение при конфликте МРЦ и максимальной наценки, и — при необходимости — собственный алгоритм на языке Scriban.

У сценариев то же свойство, что у наценок: товар без подходящего сценария в полный пересчёт не попадёт. Общий сценарий «Все / Все» нужен почти всегда.

Подробнее: Настройка шаблонов сценариев ценообразования.

Дальше

Настройка шаблонов сценариев ценообразования

Шаблон — это свой алгоритм цены поверх стандартного. Он задаётся в сценарии: шестерёнка «Настройки» каталога → вкладка «Ценообразование» → профиль → вкладка «Сценарии» → сценарий. Поле шаблона появляется, когда включена галочка «Уникальный алгоритм формирования цены».

Шаблон выполняется после стандартного расчёта. Вернув false, он убирает товар из результата; вернув true, оставляет цену как есть; вернув объект — перезаписывает перечисленные в нём поля результата.

Кнопка «Тест» считает конкретный товар по его Id, не сохраняя сценарий, а кнопка «Модель» показывает объект model для этого товара целиком. Все сохранения и тесты попадают в историю шаблонов Scriban — «Разное» → «История шаблонов».

Для написания шаблона мы используем язык Scriban. Scriban - это быстрый, мощный, безопасный и легкий язык сценариев.

Подробнее с языком можно ознакимиться здесь.

Шаблон на вход получает объект model, содержащий следующие поля:

  • Settings - [объект с параметрами] - предпосчитанные настройки необходимые для ценообразования товара

  • ProductCard - [объект с параметрами] - карточка товара (основные данные и свойства)

  • SupplierPrices - [список объектов] - список данных активных цен поставщиков

  • CompetitorPrices - [список объектов] - список данных активных цен конкурентов

  • CommonAlgorithmPrice - [объект с параметрами] - данные о цене, посчитанные стандартным алгоритмом

  • ManualPrice - [объект с параметрами или null] - данные о действующей ручной цене товара

  • OzonCommissions - [объект с параметрами] - данные о коммиссиях Озон

  • WbCommissions - [объект с параметрами] - данные о коммиссиях Wildberries

  • YandexCommissions - [объект с параметрами] - данные о коммиссиях Яндекс.Маркет

  • MegamarketCommissions - [объект с параметрами] - данные о коммиссиях Мегамаркет

Объект Settings содержит следующие поля:

  • MinSupplierPrice - [объект с параметрами] - данные о минимальной цене поставщика

  • MinCompetitorPrice - [объект с параметрами или null] - данные о минимальной цене конкурента

  • DeliveryTownPrice - [число] - цена доставки по городу

  • DeliveryCountryPrice - [число] - цена доставки по стране

  • MinExtraCharge - [число] - минимальная наценка (%)

  • MaxExtraCharge - [число] - максимальная наценка (%)

  • FixedExtraCharge - [число] - фиксированная наценка

  • GlobalMinRetailPrice - [число] - МРЦ среди поставщиков для которых указано "Глобальное МРЦ" в опциях поставщиков

  • MinRetailPrice - [число] - МРЦ среди всех поставщиков

Объект CommonAlgorithmPrice содержит следующие поля:

  • Price - [число] - вычисленная цена

  • SupplierPrice - [число] - цена поставщика

  • SupplierPriceSellerCode - [текст или null] - код товара в системе поставщика

  • DeliveryTime - [число] - время доставки (дней)

  • SupplierId - [число] - Id поставщика

  • OriginalPrice - [число или null] - цена до акции

  • DeliveryTownPrice - [число] - цена доставки по городу

  • DeliveryCountryPrice - [число] - цена доставки по стране

  • CompetitorPrice - [число или null] - цена конкурента

  • InStockAmount - [число] - количество товаров в наличии

  • MinRetailPrice - [число или null] - МРЦ

  • CompetitorName - [текст или null] - Название конкурента

  • MinPrice [число или null] - минимальная цена (экспортируется как минимальная цена на Озон)

Объект ManualPrice содержит данные о ручной цене товара. Объект заполнен, только если для товара указана ручная цена и выполнены её условия применения, иначе он равен null. Поля объекта:

  • Price - [число или null] - ручная цена

  • PriceBeforePromotion - [число или null] - ручная цена до акции

  • Promotion - [логическое значение] - участвует ли товар в акции

  • Tag - [текст или null] - тег ручной цены

Обратите внимание: если ручная цена указана, то поле Price из результата шаблона игнорируется (а при акционной ручной цене с заполненной ценой до акции игнорируется и OriginalPrice) - ручная цена имеет приоритет. С помощью объекта ManualPrice шаблон может учесть это, например взять ручную цену за основу расчёта остальных полей.

Объект MinSupplierPrice из объекта Settings и объекты из списка SupplierPrices содержат следующие данные о цене поставщика:

  • Supplier - [объект с параметрами] - данные о поставщике

  • Price - [число] - цена

  • InitialPrice - [число или null] - цена до применения к ней скидок или наценок. Используется для скидок на Озоне

  • InitialSupplierPrice - [число или null] - цена поставщика до применения к ней скидок или наценок

  • MinRetailPrice - [число] - МРЦ

  • MaxRetailPrice - [число] - Максимальная розничная цена

  • InStockAmount - [число] - количество товаров в наличии

  • Product - [объект с параметрами] - данные о товаре

  • DeliveryTime - [число] - время доставки (дней)

  • DeliveryTownPrice - [число или null] - цена доставки по городу

  • DeliveryCountryPrice - [число или null] - цена доставки по стране

  • ConsiderLocalMinRetailPrice - [логическое значение] - соблюдать ли "МРЦ только для предложений от этого поставщика" выбранное на вкладке с опциями поставщиков

  • PriceSellerCode - [строка или null] - код товара в системе поставщика

Объект Supplier содержит следующие данные о поставщике:

  • Id - [число] - Id

  • Name - [текст] - название

  • ExternalId - [текст или null] - внешний код

  • BundleIds - [список чисел] - спикок Id пакетов, в которые входит поставщик

Объект Product содержит следующие данные о товаре поставщика:

  • Id - [текст или null] - Id

  • Name - [текст] - название

  • Article - [текст или null] - артикул

  • CategoryName - [текст или null] - категория

  • VendorName - [текст или null] - бренд

  • Ean - [текст или null] - EAN

Объект MinCompetitorPrice из объекта Settings и объекты из списка CompetitorPrices содержат следующие данные о цене конкурента:

  • Competitor - [объект с параметрами] - данные о конкуренте

  • Product - [объект с параметрами] - данные о товаре

  • Price - [число] - цена

  • OriginalPrice - [число] - цена до применения скидок

  • InStockAmount - [число] - количество товаров в наличии

Объект Competitor содержит следующие данные о конкуренте:

  • Id - [число] - Id

  • Name - [текст] - название

  • ExternalId - [текст или null] - внешний код

Объект Product содержит следующие данные о товаре конкурента:

  • Id - [текст или null] - Id

  • Name - [текст] - название

  • Article - [текст или null] - артикул

  • CategoryName - [текст или null] - категория

  • VendorName - [текст или null] - бренд

Объект ProductCard содержит следующие поля:

Список Tags состоит из объектов содержащих следующие данные о тегах:

  • Id - [число] - Id

  • Name - [текст] - название

Список Properties состоит из объектов содержащих следующие данные о свойствах:

  • Id - [число] - Id

  • Name - [текст] - название

  • Type - [текст] - тип

  • Unit - [текст] - визическая величина

  • StringValue - [текст] - тестовое значение, когда тип равен "String"

  • BooleanValue - [логическое значение] - логическое значение, когда тип равен "Boolean"

  • IntegerValue - [число] - целое число, когда тип равен "Integer"

  • DecimalValue - [число] - дробное число, когда тип равен "Decimal"

  • MinRangeValue - [число] - дробное число, нижняя граница диапазона, когда тип равен "Range"

  • MaxRangeValue - [число] - дробное число, верхняя граница диапазона, когда тип равен "Range"

  • EnumValue - [текст или null] - тестовое значение, когда тип равен "Enum"

  • FlagValues - [список текстовых значений] - список текстовых значений, когда тип равен "Flag" (множественный выбор)

Объект OzonCommissions содержит следующие поля:

  • SalesPercent - [число или null] - наибольший процент комиссии за продажу среди FBO и FBS

  • SalesPercentFbo - [число или null] - процент комиссии за продажу (FBO)

  • SalesPercentFbs - [число или null] - процент комиссии за продажу (FBS)

  • SalesPercentRFbs - [число или null] - процент комиссии за продажу (RFBS)

  • FboFulfillmentAmount - [число или null] - комиссия за сборку заказа (FBO)

  • FboDirectFlowTransMinAmount - [число или null] - магистраль от (FBS)

  • FboDirectFlowTransMaxAmount - [число или null] - магистраль до (FBS)

  • FboDelivToCustomerAmount - [число или null] - последняя миля (FBS)

  • FboReturnFlowAmount - [число или null] - комиссия за возврат и отмену (FBO)

  • FboReturnFlowTransMinAmount - [число или null] - комиссия за обратную логистику от (FBO)

  • FboReturnFlowTransMaxAmount - [число или null] - комиссия за обратную логистику до (FBO)

  • FbsFirstMileMinAmount - [число или null] - минимальная комиссия за обработку отправления (FBS) — 0 рублей.

  • FbsFirstMileMaxAmount - [число или null] - максимальная комиссия за обработку отправления (FBS) — 25 рублей

  • FbsDirectFlowTransMinAmount - [число или null] - магистраль от (FBS)

  • FbsDirectFlowTransMaxAmount - [число или null] - магистраль до (FBS)

  • FbsDelivToCustomerAmount - [число или null] - последняя миля (FBS)

  • FbsReturnFlowAmount - [число или null] - комиссия за возврат и отмену, обработка отправления (FBS)

  • FbsReturnFlowTransMinAmount - [число или null] - комиссия за возврат и отмену, магистраль от (FBS)

  • FbsReturnFlowTransMaxAmount - [число или null] - комиссия за возврат и отмену, магистраль до (FBS)

Объект WbCommissions содержит следующие поля:

  • KgvpBooking - [число или null] - комиссия по модели «Бронирование», %

  • KgvpMarketplace - [число или null] - комиссия по модели «Маркетплейс» (FBS), %

  • KgvpPickup - [число или null] - комиссия по модели «Самовывоз из магазина продавца» (C&C), %

  • KgvpSupplier - [число или null] - комиссия по моделям «Витрина» (DBS) и «Курьер WB» (DBW), %

  • KgvpSupplierExpress - [число или null] - комиссия по модели «Витрина экспресс» (EDBS), %

  • PaidStorageKgvp - [число или null] - комиссия по модели «Склад WB» (FBW), %

Объект YandexCommissions содержит следующие поля:

  • FbsCommission - [число или null] - комиссия по модели FBS, %

  • FbyCommission - [число или null] - комиссия по модели FBY, %

  • DbsCommission - [число или null] - комиссия по модели DBS, %

  • ExpressCommission - [число или null] - комиссия по модели Экспресс, %

Объект MegamarketCommissions содержит следующие поля:

  • DbsCommission - [число или null] - комиссия по модели DBS, %

Поле Unit может иметь следующие значения:

  • NotUnit - неизвестная величина

  • Nanometers - нанометры

  • Micrometers - микрометры

  • Millimeters - миллиметры

  • Centimeters - сантиметры

  • Meters - метры

  • Milligrams - миллиграммы

  • Grams - граммы

  • Kilograms - килограммы

  • Tons - тонны

  • Seconds - секунды

  • Minutes - минуты

  • Hours - часы

  • Days - дни

  • Weeks - недели

  • Months - месяцы

  • Years - годы

  • Kelvins - кельвины

  • DegreeCelsius - градусы по цельсию

  • SquareMeters - квадратные метры

  • SquareCentimeters - квадратные сантиметры

  • Milliliters - миллилитры

  • Liters - литры

  • CubicMillimeters - кубические миллиметры

  • CubicCentimeters - кубические сантиметры

  • CubicMeters - кубические метры

  • Amperes - амперы

  • Kiloamperes - килоамперы

  • Volts - вольты

  • Kilovolts - киловольты

  • Watts - ватты

  • Kilowatts - киловатты

  • Megawatts - мегаватты

  • Ohms - омы

  • Kiloohms - килоомы

  • Candles - канделы

  • Luxes - люксы

  • Lumens - люмены

  • Joules - джоули

  • Hertz - герцы

  • Kilohertz - килогерцы

  • Megahertz - мегагерцы

  • Gigahertz - гигагерцы

  • Bits - биты

  • Bytes - байты

  • Kilobytes - килобайты

  • Megabytes - мегабайты

  • Gigabytes - гигабайты

  • Terabytes - терабайты

  • BitsPerSecond - биты в секунду

  • KilobitsPerSecond - килобиты в секунду

  • MegabitsPerSecond - мегабиты в секунду

  • GigabitsPerSecond - гигабиты в секунду

  • AmpereHours - ампер-часы

  • MilliampereHours - миллиампер-часы

  • WattHours - ватт-часы

  • KilowattHours - киловатт-часы

  • MegawattHours - мегаватт-часы

  • Grands - штуки

  • GramsPerSquareCentimeter - граммы на квадратный сантиметр

  • GramsPerSquareMeter - граммы на квадратный метр

  • Inches - дюймы

  • CubicMetersPerMinute - кубические метры в минуту

  • MetersPerSecond - метры в секунду

  • MetersPerHour - метры в час

  • Percents - проценты

  • Pixels - пиксели

  • Megapixels - мегапиксели

  • Diaphragm - диафрагма

  • FramesPerSeconds - фреймы в секунду

  • ScreenDensity - разрешение экрана

  • Decibels - децибелы

  • GramsPerMinute - граммы в минуту

  • KilogramsPerMinute - килограммы в минуту

  • KilogramsPerHour - килограммы в час

  • RotationsPerMinute - обороты в минуту

  • LitersPerHour - литры в час

  • Bars - бары

  • CubicMetersPerHour - кубические метры в час

  • DotsPerInch - точки на дюйм

  • MillilitersPerHour - миллилитры в час

  • MillilitersPerSecond - миллилитры в секунду

  • MillilitersPerMinute - миллилитры в минуту

  • PixelsPerInch - пиксели на дюйм

  • LitersPerMinute - литры в минуту

  • LitersPerDays - литры в день

  • BeatsPerMinute - удары в минуту

  • SheetsPerMinute - страницы в минуту

  • SheetsPerSecond - страницы в секунду

  • Sheets - листы

  • InputOutputOperationsPerSecond - опрерации ввода-вывода в секунду

  • KilometersPerHour - километры в час

  • Kilometers - километры

  • CentimetersPerMinute - сантиметры в минуту

  • MetersPerMinute - метры в минуту

  • KilogramsPerDays - килограммы в день

  • FramesPerMinute - кадры в минуту

  • Horsepowers - лошадиные силы

  • Milliseconds - миллисекуды

  • NewtonMeters - ньютон-метры

  • MovesPerMinute - ходы в минуту

  • DecibelsPerMilliwatt - децибелы на милливатт

  • AngleDegrees - градусы углов

  • VoltAmperes - вольт-амперы

  • MillionPacketsPerSecond - миллионы пакетов в секунду

  • Dins - вязкость (DIN)

  • GuideNumbers - ведущие числа

  • StandardAtmospheres - стандартные атмосферы

  • WattsPerKilogram - ватты на килограмм

  • ThousandGrands - тысячи штук

  • IsotropicDecibels - изотропные децибелы

  • GrandsPerSquareMeter - штуки на метр квадратный

  • DimensionlessQuantity - безразмерная величина

  • WattsPerSquareMeter - ватты на квадратный метр

  • GrandsPerSleepingArea - штуки на спальное место

  • VibrationsPerMinute - колебания в минуту

  • LitersPerSquareMeter - литры на квадратный метр

  • Milliamperes - миллиамперы

  • KilovoltAmperes - киловольт-амперы

  • Kilonewtons - килоньютоны

  • CutsPerMinute - резов в минуту

  • CandelaPerSquareMeter - канделы на квадратный метр

  • PointsPerSecond - пункты в секунду

  • GramsPerKilowattHour - граммы на киловатт-час

  • MillimetersPerSecond - миллиметры в секунду

  • MillimetersPerMinute - миллиметры в минуту

  • SquareMetersPerHour - квадратные метры в час

  • SquareMetersPerMinute - квадратные метры в минуту

  • Pascals - паскали

  • Megapascals - мегапаскали

  • PersonHours - человеко-часы

  • Newtons - ньютоны

  • NewtonsPerSquareMillimeter - ньютоны на квадратный миллиметр

  • LitersPerSecond - литры в секунду

  • GramsPerHour - граммы в час

  • MetersPerSquareSecond - метры на секунду в квадрате

  • SquareCentimetersPerMinute - квадратные сантиметры в минуту

  • GrandsPerHour - штуки в час

  • KilogramsPerSquareMeter - килограммы на квадратный метр

  • Hectares - гектары

  • Ares - сотки

  • Kilopascals - килопаскали

  • HectaresPerHour - гектаров в час

  • GrandsPerMinute - штук в минуту

  • SquareMillimeters - квадратные миллиметры

  • PoundsPerSquareInch - фунты на квадратный дюйм

  • Farads - фарады

  • Millifarads - миллифарады

  • Microfarads - микрофарады

  • Nanofarads - нанофарады

  • Picofarads - пикофарады

Шаблон на вход должен получать объект model, а возращать один из трех типов данных:

  • true

  • false

  • объект с таким же набором полей как у CommonAlgorithmPrice (можно оставлять только часть полей, остальные сохранят свои значения)

Пример шаблона для исключения товаров тяжелеее 100 кг (проверка по свойству с названием "Вес"):


func normalize(value)

    ret string.downcase(string.strip(value))

end



func get_property(prop_name)

    normalized_prop_name = normalize(prop_name)

    for prop in model.ProductCard.Properties

        if normalize(prop.Name) == normalized_prop_name

            ret prop

        end

    end

    ret null

end



prop = get_property("Вес")

if (prop != null && prop.Unit == "Kilograms" && (prop.Type == "Decimal" && prop.DecimalValue > 100 || prop.Type == "Integer" && prop.IntegerValue > 100))

    ret false

else

    ret true

end

Пример шаблона для установки зачеркнутых цен на 20 процентов выше от вычисленных:


ret {

    OriginalPrice: model.CommonAlgorithmPrice.Price * 1.2

}

Обеспечение заказов — где закупить товар под невыполненные заказы

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

Открывается так: «Каталог» → вкладка «Разное» → плитка «Обеспечение заказов» в блоке «Отчеты».

Плитка показывается только у каталогов Ozon, Wildberries и Яндекс Маркета: невыполненные заказы берутся из кабинета по API, а у остальных типов каталога такого источника нет.

Перед скачиванием

  • «Период» — за какие дни брать заказы. У Ozon рядом стоит подпись «(фильтр по времени сборки)»: там отбор идёт не по дате оформления, а по времени сборки, и период автоматически расширяется на 28 дней в обе стороны, чтобы не потерять заказы на границе.

  • «Только подтвержденные вручную сопоставления» — если поставить галочку, в отчёт попадут цены лишь тех строк прайсов, которые человек подтвердил руками. Так надёжнее, но правая часть файла может оказаться заметно беднее.

Кнопка «Скачать» не отдаёт файл сразу: отчёт всегда готовится фоновой задачей. Забирайте готовый файл на странице «Задачи» → список «Скачивание».

Что в файле

Слева — сам заказ: дата, категория, производитель, название товара, артикулы маркетплейса, цена продавца, себестоимость, количество, номер заказа, склад и статус.

Справа — блоки по каждому поставщику: «Название П1», «Цена П1», «Наличие П1», «Время доставки П1», «Код поставщика П1», затем П2, П3 и так далее. Блоки отсортированы по возрастанию цены, поэтому П1 — самое дешёвое предложение по этому товару. Сколько будет блоков, определяет тот заказ, у которого поставщиков больше всех; у остальных строк лишние ячейки останутся пустыми.

Что считается невыполненным заказом

| Маркетплейс | Что попадает в отчёт |

|---|---|

| Ozon | FBS-отправления в статусах «Ожидает упаковки» и «Ожидает отгрузки» |

| Wildberries | новые сборочные задания |

| Яндекс Маркет | заказы моделей FBS, DBS и Экспресс, которые вы ещё обрабатываете |

Заказы FBO и FBY в отчёт не идут: их отгружает сам маркетплейс со своего склада, и закупить товар под конкретный заказ уже нельзя.

Если справа пусто

Самая частая ситуация — заказы есть, а предложений поставщиков рядом нет. Проверьте по порядку:

  1. Галочка «Только подтвержденные вручную сопоставления» — снимите её и скачайте снова. Если цены появились, значит они есть, но никто их не подтверждал вручную.

  2. Есть ли вообще подтверждённые цены на эти товары — посмотрите режим «Цены поставщиков» в таблице товаров. В отчёт идут только актуальные цены с заполненной ценой.

  3. Сопоставлен ли товар с каталогом. Если заказанный товар не привязан к товару каталога, строки не будет вовсе — не пустая правая часть, а отсутствующий заказ. Обычно это значит, что каталог давно не обновлялся из кабинета.

Две колонки, которые часто удивляют

  • «Себестоимость» заполняется, только если она проставлена товарам — например, задачей установки себестоимости из прайса поставщика. Пустая колонка не означает ошибку в отчёте.

  • «Статус» у Wildberries всегда «Неизвестен»: кабинет не возвращает статус вместе с новым сборочным заданием. У Ozon и Яндекс Маркета это «Ожидает упаковки» или «Ожидает отгрузки».

Регулярная выгрузка

Отчёт можно ставить в расписание: «Общие настройки» → «Расписание», тип задачи «Обеспечение заказов». В списке задач выбирается каталог и вариант — «Все» или «Только подтвержденные вручную сопоставления». Готовый файл окажется там же, в задачах «Скачивание».

Рядом

Отчёт по ценам — цены поставщиков, МРЦ и конкурентов в одном файле

Отчёт собирает в один файл всё, что известно о ценах каждого товара: цены поставщиков, их МРЦ, цены конкурентов и розничные цены ваших профилей ценообразования. Одна строка — один товар, а какие цены попадут в колонки справа, вы решаете сами.

Отчёт — это профиль экспорта. Создаётся он так: «Настройки» → «Экспорт» → «Создать», в поле «Формат» выберите «Отчёт по ценам» и сохраните. У профиля появится вкладка «Настройки отчёта по ценам» — там выбираются разделы и колонки.

Отчёт сохраняется — повторять его просто

Настройки хранятся вместе с отчётом, поэтому в следующий раз ничего заново выбирать не нужно — достаточно запустить тот же отчёт ещё раз. Даже не открывая вкладку настроек, отчёт уже можно запустить: по умолчанию в нём три лучших поставщика, три лучших конкурента и итоговые колонки. Нужен другой набор колонок — сделайте «Создать копию» в меню отчёта и поменяйте копию.

Запуск — пункт «Запустить» в меню отчёта на странице «Настройки» → «Экспорт». Файл готовится фоновой задачей: следите за ней в «Задачи» → «Экспорт», а готовый файл забирайте пунктом «Скачать результат». Отчёт можно поставить в расписание, как любой профиль экспорта.

Два вида колонок — выберите под свой вопрос

Это главное, в чём стоит разобраться до первого запуска.

Нумерованные колонки — «Поставщик 1», «Цена поставщика 1», «Поставщик 2», «Цена поставщика 2»…

| Название | Поставщик 1 | Цена поставщика 1 | Поставщик 2 | Цена поставщика 2 |

|---|---|---|---|---|

| Чайник A | Бета | 1 990 | Альфа | 2 050 |

| Чайник B | Альфа | 3 400 | Гамма | 3 610 |

Первая пара колонок — лучшее предложение по товару, вторая — следующее. Имя поставщика стоит в ячейке, и в разных строках это разные поставщики. Такой файл быстро отвечает на вопрос «кто лучший по каждому товару и насколько отстаёт следующий» и остаётся узким, даже если поставщиков у вас сотни. Но колонка «Цена поставщика 1» — это не цены одного поставщика: не фильтруйте её, чтобы найти цены «Альфы».

Колонки по названиям — «Альфа», «Бета», «Гамма»…

| Название | Альфа | Бета | Гамма |

|---|---|---|---|

| Чайник A | 2 050 | 1 990 | |

| Чайник B | 3 400 | | 3 610 |

Колонка — это один продавец по всему каталогу, пустая ячейка — у него нет этого товара. Такой файл нужен, чтобы посмотреть цены конкретного продавца: отфильтровать колонку, сравнить двух поставщиков рядом, подставить колонку в другую таблицу. От запуска к запуску колонка остаётся на своём месте.

Какой вид получится:

  • «Первые N» — всегда нумерованные колонки: у каждого товара свои лидеры.

  • «Выбрать из списка» — всегда колонки по названиям, в порядке выбора.

  • «Все» — вид выбираете вы. Нумерованных групп будет столько, сколько предложений у самого «популярного» товара; колонок по названиям — по одной на каждого, у кого есть цены.

Разделы отчёта

  • «Цены поставщиков» — самая низкая цена каждого поставщика на товар. Можно добавить наличие и срок поставки — они берутся из той же строки прайса.

  • «МРЦ» — самая высокая МРЦ каждого поставщика. В «Первых N» порядок от большей МРЦ к меньшей: при расчёте цен учитывается именно максимальная.

  • «Цены конкурентов» — самая низкая цена каждого конкурента, можно добавить наличие.

  • «Профили ценообразования» — розничная цена каждого профиля по последнему пересчёту. Можно добавить поставщика, чья цена выбрана, его цену и минимальную цену конкурента. Перед отчётом пересчитайте профили, если хотите свежие цены.

Итоговые колонки — «Мин. цена поставщика», «Мин. цена конкурента» и «Макс. МРЦ». Они считаются по всем продавцам, даже если в разделах выбраны не все. Сравните «Мин. цену конкурента» с «Макс. МРЦ»: где конкурент дешевле, там нарушение МРЦ.

В отчёт идут только актуальные цены: прайс не просрочен, строка сопоставлена и подтверждена. Галочка «Только сопоставления, подтверждённые вручную» оставляет лишь то, что подтвердил человек.

Если что-то пошло не так

  • Выбранный поставщик пропал из отчёта. Скорее всего, его удалили или он стал конкурентом. Отчёт не молчит об этом: причина написана над настройками и в логе задачи. Если в разделе не осталось ни одного выбранного продавца, отчёт не запустится — он не станет тихо показывать «всех».

  • Сколько будет колонок? Внизу вкладки настроек, под флажком «Итоговые колонки», написано, сколько колонок получится и сколько товаров в каталоге. Если для Excel этого слишком много, там же появится предупреждение — ещё до запуска отчёта.

  • Задача упала с ошибкой про размер Excel. Excel-файл собирается целиком в памяти сервера, поэтому у него есть предел: товаров в каталоге, умноженных на число колонок, должно быть не больше 10 миллионов. Для большого каталога с колонками «по названиям» на всех продавцов выберите формат CSV — он пишется построчно и такого предела не имеет — или сократите колонки, например «Первые N» вместо «Все».

  • В CSV всё в одной колонке. Файл разделён точкой с запятой — откройте его через «Данные → Из текста» или просто двойным щелчком в Excel с русской локалью.

Рядом

Выгрузка и интеграции

Создание фида каталога по шаблону

Фид для интеграции можно создать с помощью экспорта каталога по шаблону. Для этого небходимо создать профиль экспорта:

  • Откройте шестерёнку "Настройки" каталога в главном меню

  • Перейдите на вкладку "Экспорт"

  • Нажмите на кнопку "Создать" над таблицей

  • Укажите название профиля экспорта, выберите профиль ценообразования, по которому будет подготовлен фид, и выберите

формат "Каталог по шаблону"

  • Нажмите "Сохранить"

После сохранения профиля экспорта станет доступна настройка шаблона интеграции.

Редактирование существующего профиля:

  • Нажмите напротив этого профиля на значок карандашика.

  • Отредактируйте название или добавьте/удалите профиль ценообразования.

  • Нажмите кнопку "Сохранить".

Копия существующего профиля — когда нужен ещё один фид, похожий на уже настроенный:

  • Откройте кебаб-меню (три точки) напротив этого профиля и выберите "Создать копию".

  • Откроется копия с названием "... (копия)" и всеми настройками исходного профиля, включая шаблон. Поменяйте то, что отличается, и сохраните.

  • Ссылка на фид у копии своя, новая: копия не перезаписывает файл исходного профиля, поэтому потребителю фида нужно дать новую ссылку. Расписание запусков не копируется.

Удаление существующего профиля:

  • Откройте кебаб-меню (три точки) напротив этого профиля и выберите "Удалить".

  • Подтвердите удаление.

Настройка шаблона интеграции:

  • Перейдите на вкладку "Настройка шаблона".

  • Выберите тип выгрузки параметров.

  • Выберите тип валидации (при необходимости).

  • Выберите шаблон (нажамите кнопку "Шаблоны") или напишите свой.

  • Нажмите кнопку "Сохранить".

Для написания шаблона мы используем язык Scriban. Scriban - это быстрый, мощный, безопасный и легкий язык сценариев.

Подробнее с языком можно ознакимиться здесь.

Проверить корректность работы шаблона можно нажав на кнопку "Тест". После этого появится окно "Результаты",

в котором, при корректнонаписаном шаблоне, появится результат (как будет выглядеть фид).

Шаблон на вход получает объект model, содержащий следующие поля:

  • Categories - [список объектов] - список категорий каталога

  • Products - [список объектов] - список товаров каталога

Объекты из списка Categories содержит следующие данные о категории:

  • Id - [число] - Id

  • ExternalId - [текст или null] - внешний идентификатор категории

  • Name - [текст] - название категории

  • SingularName - [текст] - название категории в единственном числе

  • ParentId - [число или null] - Id родительской категории

  • ParentExternalId - [текст или null] - внешний идентификатор родительской категории

Объекты из списка Products содержит следующие данные о товаре:

Объекты из списка Parameters содержит следующие данные о характеристиках товара:

  • Name - [текст] - название характеристики

  • DefinitionId - [текст] - идентификатор характеристики

  • DefinitionExternalId - [текст или null] - внешний идентификатор характеристики

  • Order - [текст] - порядок сортировки характеристики

  • Group - [текст или null] - группа характеристики

  • GroupId - [число или null] - идентификатор группы характеристики

  • GroupOrder - [число или null] - порядок сортировки группы

  • Value - [текст] - значение характеристики (формат зависит от типа: Да/Нет, число, диапазон min...max, одно значение enum, список флагов через ; , список моделей через ; , строка/выражение)

  • Unit - [текст] - единица измерения (только для числовых/диапазонных и numeric enum/flags)

Объекты из списка Tags содержит следующие данные о тегах товара:

  • Id - [число] - Id

  • Name - [текст] - название тега

Добавление условий в шаблон

Условия помогают в выборе товаров, соответствующих определенным критериям. Для добавления условий удобно пользоваться функциями.

Функции небходимо определить до шаблона и вызвать внутри шаблона.

Условий может быть несколько (при этом они должны называться по разному), несколько условий можно скомбинировать в одно, a также добавлять свои условия.

Проверить корректность условий можно здесь.

Для выполнения экспорта:

  • Перейдите на страницу "Задачи".

  • В выпадающем меню списков выберите "Экспорт".

  • Выберите необходимый профиль экспорта.

  • Нажмите кнопку "Запустить".

Статус задачи, а также историю последних выполненых экспортов можно посмотреть в списке "Последние экспорты". Результатом выполнения задачи является файл в формате .xml,

который можно скачать нажав напротив нужного экспорта "Скачать". В настройках шаблона можно посмотеть ссылку на этот файл.

Создание фида цен поставщиков по шаблону

Фид для интеграции можно создать с помощью экспорта цен поставщиков по шаблону. Для этого небходимо создать профиль экспорта:

  • Откройте шестерёнку "Настройки" каталога в главном меню

  • Перейдите на вкладку "Экспорт"

  • Нажмите на кнопку "Создать" над таблицей

  • Укажите название профиля экспорта, выберите профиль ценообразования, по которому будет подготовлен фид, и выберите

формат "Цены поставщиков по шаблону"

  • Нажмите "Сохранить"

После сохранения профиля экспорта станет доступна настройка шаблона интеграции.

Редактирование существующего профиля:

  • Нажмите напротив этого профиля на значок карандашика.

  • Отредактируйте название или добавьте/удалите профиль ценообразования.

  • Нажмите кнопку "Сохранить".

Копия существующего профиля — когда нужен ещё один фид, похожий на уже настроенный:

  • Откройте кебаб-меню (три точки) напротив этого профиля и выберите "Создать копию".

  • Откроется копия с названием "... (копия)" и всеми настройками исходного профиля, включая шаблон. Поменяйте то, что отличается, и сохраните.

  • Ссылка на фид у копии своя, новая: копия не перезаписывает файл исходного профиля, поэтому потребителю фида нужно дать новую ссылку. Расписание запусков не копируется.

Удаление существующего профиля:

  • Откройте кебаб-меню (три точки) напротив этого профиля и выберите "Удалить".

  • Подтвердите удаление.

Настройка шаблона интеграции:

  • Перейдите на вкладку "Настройка шаблона".

  • Выберите тип выгрузки параметров.

  • Выберите тип валидации (при необходимости).

  • Выберите шаблон (нажамите кнопку "Шаблоны") или напишите свой.

  • Нажмите кнопку "Сохранить".

Для написания шаблона мы используем язык Scriban. Scriban - это быстрый, мощный, безопасный и легкий язык сценариев.

Подробнее с языком можно ознакимиться здесь.

Проверить корректность работы шаблона можно нажав на кнопку "Тест". После этого появится окно "Результаты",

в котором, при корректнонаписаном шаблоне, появится результат (как будет выглядеть фид).

Шаблон на вход получает объект model, содержащий следующие поля:

  • Categories - [список объектов] - список категорий каталога

  • Products - [список объектов] - список товаров каталога

  • SupplierPrices - [список объектов] - список активных цен поставщиков

Объекты из списка Categories содержит следующие данные о категории:

  • Id - [число] - Id

  • ExternalId - [текст или null] - внешний идентификатор категории

  • Name - [текст] - название категории

  • SingularName - [текст] - название категории в единственном числе

  • ParentId - [число или null] - Id родительской категории

  • ParentExternalId - [текст или null] - внешний идентификатор родительской категории

Объекты из списка Products содержит следующие данные о товаре:

Объекты из списка Parameters содержит следующие данные о характеристиках товара:

  • Name - [текст] - название характеристики

  • DefinitionId - [текст] - идентификатор характеристики

  • DefinitionExternalId - [текст или null] - внешний идентификатор характеристики

  • Order - [текст] - порядок сортировки характеристики

  • Group - [текст или null] - группа характеристики

  • GroupId - [число или null] - идентификатор группы характеристики

  • GroupOrder - [число или null] - порядок сортировки группы

  • Value - [текст] - значение характеристики (формат зависит от типа: Да/Нет, число, диапазон min...max, одно значение enum, список флагов через ; , список моделей через ; , строка/выражение)

  • Unit - [текст] - единица измерения (только для числовых/диапазонных и numeric enum/flags)

Объекты из списка Tags содержит следующие данные о тегах товара:

  • Id - [число] - Id

  • Name - [текст] - название тега

Объекты из списка SupplierPrices содержат следующие данные о ценах поставщиков:

Объект OriginalRecord содержит исходную (необработанную) запись строки прайса поставщика:

  • [ключ: значение] - [любой тип] - поля оригинальной строки прайса поставщика, сформированные из исходного JSON без нормализации

  • Param - [объект] - параметры товара из оригинального прайса в виде словаря

    где:

    • ключ – [текст] – название параметра

    • значение – [любой тип] – значение параметра из прайса поставщика

Добавление условий в шаблон

Условия помогают в выборе товаров, соответствующих определенным критериям. Для добавления условий удобно пользоваться функциями.

Функции небходимо определить до шаблона и вызвать внутри шаблона.

Условий может быть несколько (при этом они должны называться по разному), несколько условий можно скомбинировать в одно, a также добавлять свои условия.

Проверить корректность условий можно здесь.

Для выполнения экспорта:

  • Перейдите на страницу "Задачи".

  • В выпадающем меню списков выберите "Экспорт".

  • Выберите необходимый профиль экспорта.

  • Нажмите кнопку "Запустить".

Статус задачи, а также историю последних выполненых экспортов можно посмотреть в списке "Последние экспорты". Результатом выполнения задачи является файл в формате .xml,

который можно скачать нажав напротив нужного экспорта "Скачать". В настройках шаблона можно посмотеть ссылку на этот файл.

Создание фида ценообразования по шаблону

Фид для интеграции можно создать с помощью экспорта каталога по шаблону. Для этого небходимо создать профиль экспорта:

  • Откройте шестерёнку "Настройки" каталога в главном меню

  • Перейдите на вкладку "Экспорт"

  • Нажмите на кнопку "Создать" над таблицей

  • Укажите название профиля экспорта, выберите профиль ценообразования, по которому будет подготовлен фид, и выберите

формат "Каталог по шаблону"

  • Нажмите "Сохранить"

После сохранения профиля экспорта станет доступна настройка шаблона интеграции.

Редактирование существующего профиля:

  • Нажмите напротив этого профиля на значок карандашика.

  • Отредактируйте название или добавьте/удалите профиль ценообразования.

  • Нажмите кнопку "Сохранить".

Копия существующего профиля — когда нужен ещё один фид, похожий на уже настроенный:

  • Откройте кебаб-меню (три точки) напротив этого профиля и выберите "Создать копию".

  • Откроется копия с названием "... (копия)" и всеми настройками исходного профиля, включая шаблон. Поменяйте то, что отличается, и сохраните.

  • Ссылка на фид у копии своя, новая: копия не перезаписывает файл исходного профиля, поэтому потребителю фида нужно дать новую ссылку. Расписание запусков не копируется.

Удаление существующего профиля:

  • Откройте кебаб-меню (три точки) напротив этого профиля и выберите "Удалить".

  • Подтвердите удаление.

Настройка шаблона интеграции:

  • Перейдите на вкладку "Настройка шаблона".

  • Выберите тип выгрузки параметров.

  • Выберите тип валидации (при необходимости).

  • Выберите шаблон (нажамите кнопку "Шаблоны") или напишите свой.

  • Нажмите кнопку "Сохранить".

Для написания шаблона мы используем язык Scriban. Scriban - это быстрый, мощный, безопасный и легкий язык сценариев.

Подробнее с языком можно ознакимиться здесь.

Проверить корректность работы шаблона можно нажав на кнопку "Тест". После этого появится окно "Результаты",

в котором, при корректнонаписаном шаблоне, появится результат (как будет выглядеть фид).

Шаблон на вход получает объект model, содержащий следующие поля:

  • Currency - [строка] - валюта профиля ценообразования

  • Products - [список объектов] - список товаров каталога

  • AllCategories - [список объектов] - список категорий каталога

  • Categories - [список объектов] - список категорий товаров из ценообразования и их родителей

  • Offers - [список объектов] - список офферов (цен, сформированных по правилам профиля ценообазования)

  • MaxDeliveryCost - [число] - максимальная стоимость доставки по стране среди всех офферов

  • MaxDeliveryTime - [число] - максимальный срок доставки среди всех офферов

Объекты из спискаов Categories и AllCategories содержат следующие данные о категориях:

  • Id - [число] - Id

  • ExternalId - [текст или null] - внешний идентификатор категории

  • Name - [текст] - название категории

  • SingularName - [текст] - название категории в единственном числе

  • ParentId - [число или null] - Id родительской категории

  • ParentExternalId - [текст или null] - внешний идентификатор родительской категории

Объекты из списка Products содержат следующие данные о товарах:

Объекты из списка Parameters содержат следующие данные о характеристиках товаров:

  • Name - [текст] - название характеристики

  • DefinitionId - [текст] - идентификатор характеристики

  • DefinitionExternalId - [текст или null] - внешний идентификатор характеристики

  • Order - [текст] - порядок сортировки характеристики

  • Group - [текст или null] - группа характеристики

  • GroupId - [число или null] - идентификатор группы характеристики

  • GroupOrder - [число или null] - порядок сортировки группы

  • Value - [текст] - значение характеристики (формат зависит от типа: Да/Нет, число, диапазон min...max, одно значение enum, список флагов через ; , список моделей через ; , строка/выражение)

  • Unit - [текст] - единица измерения (только для числовых/диапазонных и numeric enum/flags)

Объекты из списка Tags содержат следующие данные о тегах товаров:

  • Id - [число] - Id

  • Name - [текст] - название тега

Объекты из списка MinRetailPrices содержат данные о минимальных розничных ценах (МРЦ), рассчитанных на основе цен поставщиков:

Объект OriginalRecord содержит исходную (необработанную) запись строки прайса поставщика:

  • [ключ: значение] - [любой тип] - поля оригинальной строки прайса поставщика, сформированные из исходного JSON без нормализации

  • Param - [объект] - параметры товара из оригинального прайса в виде словаря

    где:

    • ключ – [текст] – название параметра

    • значение – [любой тип] – значение параметра из прайса поставщика

Объекты из списка Offers содержат следующие данные об офферах (предложениях):

Добавление условий в шаблон

Условия помогают в выборе товаров, соответствующих определенным критериям. Для добавления условий удобно пользоваться функциями.

Функции небходимо определить до шаблона и вызвать внутри шаблона. Пример:


{{-func condition(offer)

    if (offer.MinHighCompetitorPrice == null && offer.MinLowCompetitorPrice == null)

        ret true

    else

        ret false

    end

end-}}

<?xml version="1.0" encoding="utf-8"?>

<yml_catalog date="{{ date.now | date.to_string '%F %R' }}">

  <shop>

    <categories>

      {{- for category in model.Categories}}

      <category id="{{category.Id}}" parentId="{{category.ParentId}}">{{category.Name}}</category>

      {{- end }}

    </categories>

    <company>ООО "Компания"</company>

    <currencies>

      <currency id="{{model.Currency}}" />

    </currencies>

    <delivery-options>

      <option cost="{{model.MaxDeliveryCost}}" days="{{model.MaxDeliveryTime}}" />

    </delivery-options>

    <name>Название магазина</name>

    <url>https://example.ru/</url>

    <offers>

      {{- for offer in model.Offers}}

      {{- if condition offer }}

      <offer id="{{offer.OfferId}}" type="vendor.model" available="true">

        <barcode>{{offer.BarCodes | array.join ", "}}</barcode>

        <categoryId>{{offer.CategoryId}}</categoryId>

        <currencyId>{{model.Currency}}</currencyId>

        <outlets>

          <outlet id="0" instock="{{offer.InStockAmount}}" />

        </outlets>

        <model>{{offer.Model}} {{offer.Color}}</model>

        <name>{{offer.CategorySingularName}} {{offer.Vendor}} {{offer.Model}} {{offer.Color}} {{offer.Article}}</name>

        {{- for parameter in offer.Parameters}}

        <param name="{{parameter.Name}}" unit="{{parameter.Unit}}">{{parameter.Value}}</param>

        {{- if parameter.Name == "Страна-производитель" -}}

        {{- capture country_of_origin -}}

        {{parameter.Value}}

        {{- end -}}

        {{- end -}}

        {{- if parameter.Name == "Длина в упаковке" -}}

        {{- capture length -}}

        {{parameter.Value}}

        {{- end -}}

        {{- end -}}

        {{- if parameter.Name == "Ширина в упаковке" -}}

        {{- capture width -}}

        {{parameter.Value}}

        {{- end -}}

        {{- end -}}

        {{- if parameter.Name == "Высота в упаковке" -}}

        {{- capture height -}}

        {{parameter.Value}}

        {{- end -}}

        {{- end -}}

        {{- if parameter.Name == "Вес" -}}

        {{- capture weight -}}

        {{parameter.Value}}

        {{- end -}}

        {{- end -}}

        {{- end -}}

        {{- for picture in offer.Pictures}}

        <picture>{{picture}}</picture>

        {{- end }}

        <country_of_origin>{{country_of_origin}}</country_of_origin>

        <dimensions>{{length}}/{{width}}/{{height}}</dimensions>

        <weight>{{weight}}</weight>

        <description>{{offer.Description}}</description>

        <price>{{offer.Price}}</price>

        <typePrefix>{{offer.CategorySingularName}}</typePrefix>

        <url>https://techshop.ru/product/?XML_ID={{offer.ExternalId}}</url>

        <vendor>{{offer.Vendor}}</vendor>

        <vendorCode>{{offer.Article}}</vendorCode>

        <shop-sku>{{offer.OfferId}}</shop-sku>

      </offer>

      {{- end }}

      {{- end }}

    </offers>

  </shop>

</yml_catalog>

Вызов функции:


 <offers>

      {{- for offer in model.Offers}}

      {{- if condition offer }}

      <offer id="{{offer.OfferId}}" type="vendor.model" available="true">

        <barcode>{{offer.BarCodes | array.join ", "}}</barcode>

       ...

        <shop-sku>{{offer.OfferId}}</shop-sku>

      </offer>

      {{- end }}

      {{- end }}

</offers>

Примеры условий:

  • Цены выше до n % от цен конкурентов 1-го уровня

{{-func condition(offer, ConditionVal)

 if (offer.MinHighCompetitorPrice != null && ConditionVal != null)

     if (offer.Price > offer.MinHighCompetitorPrice && (offer.Price - offer.MinHighCompetitorPrice) * 100 / offer.MinHighCompetitorPrice < ConditionVal)

             ret true

     else

             ret false

     end

 end

end-}}

  • Цены = ценам конкурентов 1-го уровня

{{-func condition(offer)

 if (offer.MinHighCompetitorPrice != null)

     if (offer.MinHighCompetitorPrice == Price)

             ret true

     else

             ret false

     end

 end

end-}}

  • Цена ниже, чем у 1-го, но выше более n %, чем у 2-го

{{-func condition(offer, ConditionVal)

 if (offer.MinHighCompetitorPrice != null && offer.MinLowCompetitorPrice != null)

     if (offer.Price < offer.MinHighCompetitorPrice && offer.Price > offer.MinLowCompetitorPrice && (offer.Price - offer.MinLowCompetitorPrice) * 100 / offer.MinLowCompetitorPrice > ConditionVal)

             ret true

     else

             ret false

     end

 end

end-}}

  • Цена ниже, чем у 1-го, но выше не более n %, чем у 2-го

{{-func condition(offer, ConditionVal)

 if (offer.MinHighCompetitorPrice != null && offer.MinLowCompetitorPrice != null)

     if (offer.Price < offer.MinHighCompetitorPrice && offer.Price > offer.MinLowCompetitorPrice && (offer.Price - offer.MinLowCompetitorPrice) * 100 / offer.MinLowCompetitorPrice <= ConditionVal)

             ret true

     else

             ret false

     end

 end

end-}}

  • Цена ниже, чем у 1-го и 2-го

{{-func condition(offer)

 if (offer.MinHighCompetitorPrice != null && offer.MinLowCompetitorPrice != null)

     if (offer.Price < offer.MinHighCompetitorPrice && offer.Price < offer.MinLowCompetitorPrice)

             ret true

     else

             ret false

     end

 end

end-}}

  • Нет товара у конкурентов, но есть у нас

{{-func condition(offer)

 if (offer.MinHighCompetitorPrice == null && offer.MinLowCompetitorPrice == null)

             ret true

     else

             ret false

 end

end-}}

  • Минимальное время доставки в диапазоне MinDeliveryTime-MaxDeliveryTime дня и маржа в диапазоне MinProfit-MaxProfit %

{{-func condition(offer, MinProfit, MaxProfit, MinDeliveryTime, MaxDeliveryTime)

 if (offer.Profit >= MinProfit && offer.Profit <= MaxProfit && offer.DeliveryTime >= MinDeliveryTime && offer.DeliveryTime <= MaxDeliveryTime)

             ret true

     else

             ret false

 end

end-}}

  • Функция для получения родительской категории любого уровня (положительный level для подсчета уровня с корня дерева, отрицательный - для подсчета с категории товара):

categories = {}

for category in model.Categories

    categories[category.Id] = category

end



# use positive level to iterate categories from root

# use negative level to iterate categories from leaf

func getCategory(offer, level)

    i = 0

    path = []

    current = categories[offer.CategoryId]

    while current

        path[i] = current

        i = i + 1

        current = categories[current?.ParentId ?? 0]

    end

    if level < 0 && path.size > -level

        ret path[-level]

    end

    if path.size >= level

    begin

        ret path[path.size - level - 1]

    end

    ret null

end

Условий может быть несколько (при этом они должны называться по разному), несколько условий можно скомбинировать в одно, a также добавлять свои условия.

Проверить корректность условий можно здесь.

Для выполнения экспорта:

  • Перейдите на страницу "Задачи".

  • В выпадающем меню списков выберите "Экспорт".

  • Выберите необходимый профиль экспорта.

  • Нажмите кнопку "Запустить".

Статус задачи, а также историю последних выполненых экспортов можно посмотреть в списке "Последние экспорты".Результатом выполнения задачи является файл в формате .xml,

который можно скачать нажав напротив нужного экспорта "Скачать". В настройках шаблона можно посмотеть ссылку на этот файл.

Ручной импорт еженедельных отчетов по продажам из кабинета Wildberries

SellerApi Wildberries может работать некорректно, поэтому мы добавили возможно загрузки данных по продажам на основе еженедельных отчетов из кабинета.

Порядок действий следующий:

  • С главной страницы кабинета, перейдите по ссылке "Финансовые отчеты"

main image

  • Скачайте список отчетов

reports list image

  • Загрузите отчет в catalog.app

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

reports details image

  • Скачиваем отчет

details dowloading image

  • В catalog.app на странице "Аналитика" выбираем вкладку "Ручной импорт данных". Загружаем список еженедельных отчетов и сами отчеты по соотвествующим ссылкам

  • В дальнейшем необходимо лишь актуализировать данные новыми отчетами. Отчеты формируются еженедельно по понедельникам. После того как появились новые отчеты необходимо скачать список отчетов и загрузить его в сервис. А после скачать новые еженедельные отчеты и загрузить их в сервис. Данные применятся после отрабатывания задачи "Обновление статистики продаж". Как правило, задача запускается по настроенному расписанию

Пользователи, уведомления, доступ

Управление пользователями

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

Управление пользователями: меню профиля (аватар в шапке) → «Общие настройки» → вкладка «Пользователи». Раздел доступен только роли «Администратор» — остальные видят в нём одну вкладку «Расписание».

Список

Таблица показывает почту (она же логин), имя, фамилию и роль. Цветной маркер слева говорит о состоянии: зелёный — работает, красный — заблокирован. Кнопка «Создать» над таблицей заводит пользователя, кебаб-меню в строке — блокирует, разблокирует и меняет настройки.

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

Роли

Роль определяет, что пользователь видит и может менять. Базовые роли — «Администратор», «Пользователь», «Только просмотр»; кроме них компания может завести свои. Управление ролями — кнопка «Управление ролями» над таблицей.

Статистика работы

Кнопка «Общая статистика» над таблицей показывает работу всех пользователей по дням с фильтром по периоду и каталогу. Из строки пользователя открывается его собственная статистика, а также «Изменения» и «Сопоставления» — что именно человек поменял и какие сопоставления подтвердил.

ИИ-сценарии

Сценарий — это инструкция для ИИ-ассистента, записанная один раз и названная так, чтобы её было

удобно запускать: «Создать товары из несопоставленных», «Проверить цены». Дальше вместо того, чтобы

каждый раз объяснять ассистенту задачу заново, сотрудник пишет в чате «Выполни Проверить цены» — и

получает ту же работу, сделанную по одним и тем же правилам.

Сценарии заводит администратор компании: «Общие настройки» → вкладка «ИИ-сценарии». Запускать их

может любой сотрудник, которому выдан ассистент.

Сценарий не даёт сотруднику новых прав: задание выполняется от его имени и с его доступом к

каталогам. Это заготовка задания, а не пропуск.

Когда сценарий стоит завести

Если задачу приходится объяснять ассистенту второй раз — её пора записать. Обычные поводы:

  • работа, которую делают регулярно: разобрать новый прайс, проверить цены перед выгрузкой;

  • работа, где важен порядок шагов и его легко забыть;

  • работа, которую делают несколько сотрудников, и хочется, чтобы у всех получалось одинаково.

Как создать

Нажмите «Новый сценарий» и заполните форму:

  • «Название» — то, что будут писать в чате. До 100 символов, в компании не должно повторяться.

    Регистр и лишние пробелы значения не имеют: «проверить цены» и «Проверить цены» — одно и то же.

    Короткое и узнаваемое название удобнее: его набирают руками.

  • «Когда применять» — одна строка для того, кто выбирает сценарий из списка. Ассистент её не

    видит, так что пишите для коллеги, а не для него.

  • «Инструкции» — собственно задание: что сделать, в каком порядке, чего не делать, что считать

    результатом. До 20 000 символов. Пишите так, как объясняли бы новому сотруднику, и указывайте,

    что ассистент должен спросить, если чего-то не хватает — например, какого поставщика брать.

  • «Каталоги» — если сценарий имеет смысл только в одном-двух каталогах, отметьте их, и в

    остальных он предлагаться не будет. Пусто — сценарий доступен во всех каталогах компании.

  • «Файлы» — примеры и шаблоны, о которых говорят инструкции. Подробнее — ниже.

Файлы сценария

К сценарию можно приложить до 5 файлов общим объёмом до 25 МБ: пример того, как должны выглядеть

названия товаров, шаблон отчёта, который ассистент должен заполнить, правила в .docx или .pdf.

  • Нажмите «+ Добавить файл», выберите или перетащите файл и коротко напишите, для чего он:

    «пример названий», «шаблон отчёта». Ассистент видит это назначение рядом с файлом, и когда

    сотрудник пишет «по шаблону», он понимает, о каком файле речь. Назначение можно поменять

    карандашом рядом с файлом.

  • В инструкциях ссылайтесь на файлы по имени или по номеру: «Используй файл 1 как пример

    названий, а файл 2 — как шаблон отчёта». Номер — порядок загрузки, он показан рядом с файлом.

  • Чтобы обновить файл, добавьте новый с тем же именем — он заменит старый и сохранит назначение.

    Чтобы убрать файл, нажмите корзину; до сохранения его можно вернуть.

  • Изменения в файлах применяются, когда вы сохраняете сценарий.

Каждый запуск получает свою копию файлов. Поэтому, если файл сценария потом заменить, уже

отправленные сообщения продолжат работать с той версией, которая была при отправке.

Как запустить из чата

Два способа:

  • Просто напишите, что нужно — «Выполни проверку цен». Называть сценарий точь-в-точь не

    обязательно: ассистент узнаёт его сам. Если из сообщения ясно, о каком сценарии речь, он сразу

    берётся за работу; если не уверен — спросит прямо в чате, и до вашего ответа ничего не изменит.

  • «/» в поле ввода — откроется список сценариев с пояснениями, а то, что набрано после слэша,

    сразу его отфильтрует. Стрелки — выбор, Enter — применить. Так сценарий применяется без всяких

    вопросов. Подсказка про «/» написана в пустом поле ввода.

Выбранный из списка сценарий видно над полем ввода — «⚡ Проверить цены» с крестиком, чтобы убрать.

В одном сообщении можно применить до трёх сценариев.

Текст сообщения при этом не пропадает — он уточняет задание: «Выполни Создать товары из

несопоставленных, поставщик Кифорт, только категория «Смесители»». Сценарий задаёт правила,

сообщение — что именно взять в работу.

Что видно потом

На отправленном сообщении остаётся значок с названиями применённых сценариев — по переписке

всегда видно, по каким правилам работа делалась. Файлы сценария появляются среди файлов

сообщения — их можно скачать и посмотреть, с чем работал ассистент.

В списке сценариев видно, сколько раз каждый запускали и кто менял его последним. Если сценарий

удалить, прошлые чаты не изменятся: в них сохраняется тот текст инструкций, который ассистент

получил тогда.

Смежные страницы

Уведомления

О завершении фоновой задачи можно узнавать двумя способами: письмом-запросом на ваш адрес (вебхук) и сообщением в Telegram.

Вебхуки — уведомления в вашу систему

Меню профиля → «Общие настройки» → вкладка «Вебхуки».

  • «Адрес для уведомлений» — куда слать уведомления. Адресов может быть несколько, по одному в строке; пустое поле отключает вебхуки.

  • «Часовой пояс» — часовой пояс компании: по нему считается расписание и показывается время задач.

Когда задача завершается, на каждый адрес уходит отдельный POST-запрос с телом в формате JSON:

  • catalogId — каталог задачи (0, если задача не привязана к каталогу);

  • type — тип задачи;

  • taskId — идентификатор задачи;

  • status — итог: Complete, Failed или Canceled.

Дальше по taskId можно забрать результат через API — например, результат обновления цен или результат ценообразования.

В демо-режиме отправка уведомлений отключена.

Telegram

Меню профиля → «Общие настройки» → вкладка «Уведомления»: выбираются типы задач, о которых приходят сообщения. Как подключить бота — Уведомления в Telegram.

IP-адреса наших серверов

Если ваши прайсы, остатки или товары забираются автоимпортом по прямой ссылке, с FTP-сервера, из базы данных (SQL) или с сайта, доступ к которому ограничен по IP-адресу, — добавьте перечисленные ниже адреса в «белый список» (whitelist) вашего сервера, фаервола или хостинга.

Все обращения со стороны catalog.app приходят только с этих адресов:


138.199.227.206

116.202.101.25

88.198.217.88

188.245.84.8

128.140.126.213

49.13.61.138

5.75.233.199

49.12.11.19

49.12.188.163

168.119.247.41

168.119.251.32

78.46.133.178

159.69.247.113

168.119.56.175

168.119.185.253

168.119.185.255

168.119.185.254

116.202.104.152

176.9.144.155

213.133.110.167

5.9.42.240

93.125.82.102

91.107.120.169

37.46.134.193

Список может со временем дополняться — рекомендуем разрешить доступ для всех перечисленных адресов сразу. Если у вас остались вопросы по настройке доступа, напишите нам.

Работа с API

Документация API

API документация создана с помощью набора инструментов Swagger. Для полного просмотра API документации,

где также можно проверить вызовы API прямо в браузере, воспользуйтесь Swagger UI.

В этом разделе руководства пользователя описаны лишь некоторые методы.

Обновление каталога через API

Обновить каталог через API можно POST-запросом (/api/catalogs/{catalogId}/tasks/update), который создаст задачу, но только после того,

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

my image

Статус задачи можно получить GET-запросом (/api/catalogs/{catalogId}/tasks/update/{id}). Для того чтобы не делать постоянные запросы

и проверять статус задачи, можно настроить получение уведомлений на заданный адрес.

Получение результата обновления цен поставщиков через API

После настройки автоматического обновления цен поставщиков и запуска задачи через интерфейс, статус задачи можно получить через API GET-запросом

(/api/catalogs/{catalogId}/tasks/import/{id}). Для того чтобы не делать постоянные запросы и проверять статус задачи,

можно настроить получение уведомлений на заданный адрес.

my image

Получить результат обновления цен поставщиков через API можно GET-запросом (/api/catalogs/{catalogId}/suppliers/{supplierId}/prices).

my image

Получение результата ценообразования через API

После настройки ценообразования и запуска задачи через интерфейс, статус задачи можно получить через API GET-запросом (/api/catalogs/{catalogId}/tasks/pricing/{id}).

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

my image

Получить результат ценообразования можно GET-запросом (/api/catalogs/{catalogId}/pricing-profiles/{profileId}/prices).

my image

Работа со свойствами товаров через API

Cвойства товара, а также их значения можно получить через API GET-запросом (/api/catalogs/{catalogId}/models/{id}/details).

my image

Также можно получить свойства выбранной категории товаров GET-запросом (/api/catalogs/{catalogId}/categories/{id}).

my image

Автоматический перевод каталога

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

Открывается так: «Задачи» → «Создать задачу» → блок «Автоматический перевод» → кнопка «Перевести каталог».

Что переводится

  • названия категорий (и в единственном числе), названия свойств, названия товаров;

  • цвета;

  • значения свойств-списков и строковых свойств;

  • описания товаров.

Бренды, названия моделей, артикулы, коды и числа остаются как есть. Единицы измерения переводятся в английскую запись: «мм» → «mm», «Вт» → «W».

Как запустить

  1. В поле «Что переводить» оставьте отмеченными нужные группы. Для первого раза обычно переводят всё.

  2. В поле «Категория» можно выбрать одну категорию — переведутся она и все её подкатегории: названия, свойства и товары. Пустое поле — весь каталог.

  3. Введите «Пароль текущего аккаунта» и нажмите «Запустить».

Появится задача «Автоматический перевод (English)» во вкладке «Разное» раздела «Задачи». Пока она идёт, раз в 5 минут в её журнал добавляется строка о ходе работы: сколько текстов обработано (каждое название, цвет, значение свойства и описание — один текст), сколько товаров обработано полностью из скольких, сколько товаров ещё в работе и сколько текстов переведено. Счётчик текстов растёт в каждой строке журнала; товары обрабатываются пачками по 5 000, поэтому их счётчик растёт скачками, когда очередная пачка завершена, а строка «в работе ещё …» показывает, что перевод идёт. В конце — итог и причины, если что-то перевести не удалось.

Одновременно по каталогу может идти только один перевод.

Повторный запуск

Каждый запуск переводит только то, чего ещё нет в переводах: новые товары, изменённые тексты и то, что не удалось перевести в прошлый раз. Поэтому после загрузки новых товаров или правки описаний достаточно запустить перевод снова — за уже переведённое повторно платить не придётся.

Если текст изменить после перевода, старый перевод перестаёт отдаваться сразу: пока не будет нового, API отдаёт исходный русский текст.

Отмена

Перевод большого каталога идёт долго. Выполняющуюся задачу перевода можно отменить кнопкой «Отменить» в списке задач — уже переведённое сохранится, и следующий запуск продолжит с оставшегося.

Как получить перевод через API

Добавьте к запросу параметр language=en, например:

GET /api/catalogs/{catalogId}/models?language=en

Параметр работает в запросах товаров, карточек товаров, категорий, свойств и значений свойств-списков. Поля, для которых перевода ещё нет, приходят на русском. Без параметра API отвечает как раньше.

Смотрите также

Аналитика

Руководство пользователя catalog.app Lite

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

{menu.md}

Часто задаваемые вопросы

Сколько каталогов(кабинетов) можно настроить в системе?

У нас нет ограничения по количеству каталогов.

Сколько пользователей могут работать одновременно?

У нас нет ограничений на одновременную работу пользователей.

Сколько занимает настройка обновления себестоимости?

За пять минут можно настроить обновление себестоимости в формате, который предоставите вы.

Что нового?

Видеоуроки

Список доступных видеоуроков

Продаем 20 тысяч товаров на онлайнере

Продаем 20 тысяч товаров на онлайнере

Осваиваем catalog.app на практическом примере. Настраиваем парсинг файлов с ценами поставщиков и правила, по которым будем формирвать розничные цены. Учитываем цены конкурентов при формировании розничных цен. Выгружаем сформированные цены на онлайнер и начинаем продавать 20 тысяч товаров.

Работаем с файлами поставщиков в catalog.app

Работаем с файлами поставщиков в catalog.app

Разбираемся, как настраивать парсинг файлов, применять скидки или наценки к ценам поставщика, а также прогнозируем время доставки товара до покупателя.

Создаем карточки товаров автоматически с помощью catalog.app

Создаем карточки товаров автоматически с помощью catalog.app

Наполняем товары характеристиками и находим изображения без водяных знаков в автоматическом режиме. Подбираем аналоги товаров. Создаем 13 тысяч карточек товаров за 15 минут.

Формируем цены на товары в catalog.app

Формируем цены на товары в catalog.app

Разбираемся с тем, как работает алгоритм ценообразования. Настраиваем профиль для формирования розничных цен.

catalog.app: экспорт, интеграции с маркетплейсами, работа с API

catalog.app: экспорт, интеграции с маркетплейсами, работа с API

Разбираем работу с Яндекс Маркетом и другими маркетплейсами, а также получение карточек товаров и работу с API.

Ссылка на документацию по Scriban: https://github.com/scriban/scriban/tree/master/doc

Документация по API catalog.app: https://catalog.app/swagger

Собираем информацию тысячах товаров и размещаем ее на маркетплейсах. Пример реального использования

Собираем информацию тысячах товаров и размещаем ее на маркетплейсах. Пример реального использования

Обсуждаем, как собрать информацию о предложениях поставщиков, сформировать цены, создать карточки товаров и разместить предложения на маркетплейсах. Делаем это на примере аккаунта реальной компании, в которой автоматизирован весь процесс управления информацией о товарах.

Блог

Обзор возможностей catalog.app

Это инструмент, который позволяет компании вырости. Работа с каталогом максимально автоматизируется.

Результаты внедрения

chart

Высокоуровневая схема

my image

Работа с поставщиками

  • 1 000+ поставщиков, 1 000 000+ предложений

  • Разные источники данных (почта, гугл диск, яндекс диск, с компьютера)

  • Разные форматы данных (Эксель, csv, yml, xml)

  • Выявление ошибочных цен

  • Возможность создавать товары в каталоге на базе предложений поставщиков

  • Статистика по предложениям поставщиков за весь период работы

  • Скидки и наценки относительно первоначальной цены по категориям и производителям. Возможность добавить / отнять НДС

  • Информация о времени доставки каждого товара

  • Возможность учесть выходные и праздничные дни

  • Несколько календарей (для разных поставщиков, разных стран и т.д.)

  • Работа с минимальными розничными и оптовыми ценами

  • Автоматическое определение поставщика по файлу с его предложением

  • Статистика по поставщику за длительный период

Работа с конкурентами

  • Парсинг веб-сайтов (1 000 000+ в сутки)

  • Разные источники данных (почта, гугл диск, яндекс диск, с компьютера)

  • Разные форматы данных (Эксель, csv, yml, xml)

  • Автоматическое сопоставление каталогу со скоростью 5000 записей в секунду (на больших объемах)

  • Выделение приоритетных конкурентов

  • Возможность поставщиков считать конкурентами

Умное сопоставление

  • Продвинутый алгоритм сопоставления

  • Скорость сопоставления - тысячи товаров в секунду

  • Не требует настройки

  • Мы автоматически поймем, что это один и тот же товар

    • Монитор LG LCD 22MP48D-P

    • 21.5" LG 22MP48D-P Black (16:9, 1920x1080, IPS, 60 Гц, интерфейсы DVI+D-Sub (VGA))

    • COMP - Компьютерная периферия - Мониторы LG 22MP48D-P

    • до 22" включительно LG Монитор LG 22MP48D-P (21.5", черный, IPS LED 5ms 16:9 DVI матовая 250cd 1920x1080 D-Sub FHD) 22MP48D-P

    • Мониторы LG 22" LG 22MP48D-P Glossy-Black (IPS, LED, 1920x1080, 5 ms, 178°/178°, 250 cd/m, 100M:1 ,+DVI) Монитор

    • Мониторы LCD LG Монитор LCD 22" IPS 22MP48D-P LG 22MP48D-P

    • LG Монитор 21.5" LG 22MP48D-P gl.Black IPS, 1920x1080, 5ms, 250 cd/m2, 1000:1 (Mega DCR), D-Sub, DVI-D (HDCP), vesa 22MP48D-P.ARUZ

    • LG Монитор LG 22MP48D-P Black 22MP48D-P.ARUZ

    • Монитор LG 22MP48D-P 22MP48D-P

    • Мониторы LG 22MP48D-P Glossy-Black 22MP48D-P

    • Монитор 21.5" LG Flatron 22MP48D-P gl.Black (IPS, 1920x1080, 16:9, 178/178, 250cd/m2, 1000:1, 5ms, D-Sub, DVI-D) (22MP48D-P) 22MP48D-P

    • Монитор 22" LG 22MP48D-P

    • LG 22MP48D-P IPS DVI

Ведение каталога

  • Работа с неограниченным количеством каталогов

  • Возможность вести каталог в catalog.app или в другом месте

  • Возможность создать товар по предложению поставщика (автоматически заполним поля, которые сможем найти)

  • Умный алгоритм по поиску дублей

Поиск ошибок

  • Статистический поиск неадекватных цен. Учитываем поставщиков, конкурентов, другие товары из этой же категории

  • Карантин для неадекватных цен. Такие цены не участвуют ни в каких процессах, если не подтверждены человеком. Подтвердить один раз достаточно, мы запомним.

Ценообразование

  • Неограниченное количество профилей

  • Возможность работать с разными поставщиками для разных категорий и брендов товара

  • Возможность учитывать разных конкурентов в зависимости от профиля

  • Возможность рассматривать поставщиков как конкурентов (для опта хорошо)

  • Наценки в зависимости от цены, категории, бренда, поставщика

  • Работа с банковскими рассрочками и картами рассрочек

  • Страховка от продаж в минус (но если явно подтвердить - то можно)

  • Демпинг. Можно включить, можно не включать.

  • Минимальные розничные и оптовые цены. Возможность соблюдать выборочно

  • Скорость обработки - 5000 предложений в секунду

Поиск

  • Быстрый поиск по сырым исходным поставщиков и конкурентов

  • Быстрый поиск по каталогу

  • Уникальная ссылка на результаты поиска (можно переслать в мессенджере)

  • Любую ссылку можно переслать в мессенджере

Интеграции

  • Рассылка результатов ценообразование по email

  • Интеграции с CRM, сайтами, маркетплейсами

  • Отслеживание данных, которые были изменены, для ускорения процесса и экономии трафика

  • Возможность реализовать дополнительные интеграции по запросу клиента

Ответственность

  • У каждого пользователя свой аккаунт

  • Ведется журнал всех изменений

  • Статистика по действиям пользователя

  • Детальный отчет по действиям пользователя

Автоматически заполняем карточки товаров для маркетплейсов и не только

Расшифрую интригующий заголовок: С помощью нашего сервиса можно автоматически обогащать карточки товаров характеристиками и контентом, тем самым повышая конверсию.

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

Что же мы делаем и как?

У нас есть два источника данных для обогащения:

  • файлы и API поставщиков

  • данные, которые мы нашли в интернете

Второй пункт подразумевает парсинг сайтов. На данный момент мы парсим около 300 источников, более 150 из которых с ежедневным обновлением. Информация с этих источников попадает к нам в библиотеку (сейчас там есть информация более чем о 70 млн товаров).

Далее эту информацию мы сопоставляем с товарами из каталога компании, анализируем, обрабатываем и на выходе получаем результат — заполненную карточку.

Было: строка в таблице

my image

Стало: готовая карточка товара с характеристиками и медиа-контентом

my image

my image

Приведу наглядный пример:

У меня есть прайс-лист с товарами, там содержится минимальная информация о товаре (наименование, бренд, артикул и т.д).

При загрузке его в систему хочу получить готовые карточки. Запускаю процесс.

Алгоритмы используют эту информацию и находят 20 готовых карточек для одного моего товара.

Но ведь информация на разных сайтах может отличаться, и у кого-то картинки могут быть плохого качества, что тогда?

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

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

По скорости механизм сопоставляет 5-6 тысяч товаров в секунду, что конечно намного быстрее и эффективнее ручного заполнения.

Чтобы посмотреть систему в работе мы создали каталог вымышленной компании, там можно протестировать все функции, в частности автозаполнение:

https://ru.demo.catalog.app

Функциональные характеристики

Обработка прайсов

Собираем файлы с почты, по ссылкам, с Google Таблиц и Google Диска, Яндекс Диска, Dropbox, по FTP и из внешних API.

Понимаем разные форматы: xls, xlsx, csv, xml, yml

Сопоставление товаров

Автоматически сопоставляем товары из разных источников

Отслеживаем подозрительные цены

Формирование конкурентных цен

Гибкие правила ценообразования

Учитываем закупочные цены, цены конкурентов и характеристики товаров

Создание карточек товаров

Автоматически создаем карточки товаров

Находим изображения без водяных знаков

Интеграции с маркетплейсами

Управляем ценами более чем на 10 площадках

Разные цены для разных площадок

Автоматически управляем карточками товаров на маркетплейсах

API

Документированное API с возможностью отладки из браузера

Интеграция с любой из ваших систем

Отчеты

О всех показателях всех товаров на маркетплейсах

Позволяют строить управленческий учет

Оптовые продажи

Формируем оптовые цены

Рассылаем сформированные цены клиентам