Ситуация
Компания торгует автозапчастями в офлайне и онлайне. У заказчика около десяти розничных точек и сайт с личными кабинетами покупателей. Для работы с постоянными клиентами заказчик применяет систему скидок. Их назначают конкретным контрагентам, разбивают по торговым маркам, диапазонам цен и другим признакам.
До перехода на 1С компания работала в учетной системе Axapta. Там создание скидок было устроено просто: маркетолог вносил нужные параметры — и скидка появлялась. Все остальное система делала сама.
В 1С:ERP механика скидок оказалась другой. Чтобы скидка заработала, нужно создать несколько связанных объектов в правильном порядке, понять логику соглашений и привязок. Маркетолог в этой механике не разбирался.
В итоге скидки создавали программисты. Маркетолог формулировал задачу, передавал ее программисту и ждал. Одновременно скидки нужно было отражать не только в ERP, но и на сайте. Сайт жил на отдельной базе данных, и данные между системами сами не синхронизировались. После каждого изменения в ERP сайт приходилось обновлять отдельно. Процесс растягивался: простая маркетинговая задача превращалась в цепочку согласований.
Задача
Заказчик обратился в implecs, чтобы разработать инструмент для создания скидок внутри 1С:ERP. Пользователь должен задавать только маркетинговые параметры, а вся техническая часть — создание объектов, привязки и соглашения — должна происходить автоматически.
Дополнительно требовалось настроить выгрузку скидок на сайт, чтобы условия в ERP и онлайн-магазине всегда были одинаковыми.
Решение
Разработку начали с того, что разобрались в механике скидок в 1С:ERP: как устроено создание объектов, в каком порядке они связываются и что нужно, чтобы скидка заработала.
Параллельно выяснили, как менеджер работал в старой Axapta — оказалось, он просто заполнял таблицу с нужными параметрами. Это и стало основой решения: мы взяли привычный для менеджера интерфейс и воспроизвели его — но уже внутри ERP.
Спроектировали интерфейс
Для маркетолога разработали отдельное автоматизированное рабочее место (АРМ) внутри 1С:ERP. В нем пользователь может делать две вещи: смотреть, какие скидки уже действуют у контрагента, и создавать новые.
Просмотр текущих скидок. Маркетолог выбирает контрагента, нажимает «Поиск» — и видит все действующие скидки. Удобно посмотреть, что уже есть, прежде чем вносить изменения.
Создание скидок. Пользователь заполняет таблицу, где строки — это скидки, а столбцы — это параметры. К ним относятся:
-
Торговая марка.
-
Признак номенклатуры — фильтр внутри торговой марки. Например, отдельные группы товаров могут получать свой процент скидки.
-
Процент скидки или наценки. Наценку ставят, когда товар хранится на удаленном складе и доставка обходится дороже обычного.
-
Диапазон цен — опциональный параметр: минимальная и максимальная цена, в пределах которой действует условие.
Менеджер заполняет нужное количество строк и нажимает «Сформировать». Одновременно создается 5–10 скидок — столько строк заполнил, столько скидок и появится в системе. Внутренняя механика ERP — объекты, привязка соглашений, связка с контрагентом — работает автоматически, без дополнительных действий со стороны пользователя.


Добавили проверку пересечений
Перед созданием скидок система проверяет, не пересекаются ли новые скидки с уже действующими. Алгоритм работает в два этапа:
- Сравнивает параметры новых скидок с текущими для этого контрагента. Если пересечение найдено — старая скидка закрывается, на ее месте создается новая.
- Проверяет, нет ли скидок с такими же параметрами в ERP, но без привязки к этому покупателю. Если есть — берется существующий объект, дубль не создается.
Маркетологу об этом думать не нужно: система сама разберется, что закрыть, что создать, что оставить. После нажатия кнопки «Сформировать» форма обновляется и пользователь видит актуальный список скидок контрагента.
Реализовали выгрузку на сайт
Сайт компании работает на отдельной базе данных MySQL. Скидки из ERP туда не попадают автоматически — для этого нужна отдельная операция.
В АРМ добавили кнопку «Выгрузить на сайт», нажатие на которую запускает передачу данных. Сначала из базы сайта удаляются все скидки по этому контрагенту, затем записываются те, что сейчас действуют. Такой подход — очистка и перезапись — гарантирует, что на сайте всегда отражаются актуальные данные без устаревших скидок.
Весь процесс — создание скидок в ERP и их выгрузка на сайт — происходит в два клика.
Непредвиденные трудности
Когда маркетолог выбирает контрагента и нажимает «Поиск», система должна показать актуальный список его скидок — с торговыми марками, признаками и процентами. Чтобы это работало, нужно извлечь торговые марки из существующих скидок.
Проблема была в том, что в 1С:ERP торговая марка хранится не как отдельное поле, а вложена в компоновщик системы компоновки данных внутри реквизита. Чтобы ее извлечь, пришлось написать процедуру, которая перебирает каждую скидку, извлекает компоновщик и вытаскивает нужное значение. Получилось несколько уровней циклов и проверок — и заметная нагрузка на интерфейс.
Чтобы пользователь не ждал с зависшим экраном, операцию вынесли в фоновое задание. Интерфейс не блокируется и менеджер продолжает работать, пока система загружает данные.
Результат
Раньше создание каждой новой скидки начиналось с запроса программисту: маркетолог объяснял задачу, ждал исполнения, а потом договаривался об обновлении сайта. Простая операция растягивалась на несколько итераций.
Теперь маркетолог делает все самостоятельно: открывает АРМ, заполняет таблицу и нажимает две кнопки. Скидки отражаются в ERP и сразу появляются на сайте — синхронизация происходит автоматически.
Наша обработка создана под конкретную конфигурацию и бизнес-процессы заказчика. Другой компании с другими процессами она не подойдет. Это не универсальное решение, а персональный инструмент, который выполняет нужную задачу.
Длительность. Доработка заняла 100 часов.
Команда. Со нашей стороны над задачей работали разработчик 1С и руководитель проектов. Со стороны заказчика участвовали 3 специалиста: маркетолог, разработчик 1С и администратор базы данных.