Максим

Максим

Был в сети 10 декабря 2023, 17:27
Заказы принимаю
Вообще родной хук формита называется FormitSaveForm. И получается одно из двух:
1) Опечатались и форма не сохранялась
2) Был написан отдельный хук
При первом случае — нечего вытаскивать, так как ничего не сохранялось. Во втором случае нужно искать сниппет FormSave и смотреть что там происходит.
Вы покупали оба компонента! Правильнее будет обозначить задачу разработчикам компонентов через поддержку. Я бы сначала по этому поводу поговорил с поддержкой mSearch2 а потом с поддержкой msDiscount. Так как данные компоненты должны уметь работать друг с другом. Для этого написаны специальные события. А раз они не умеют работать дружно — значит кто-то накосячил и нужно это исправить!) Ведь речь идет не о бесплатных решениях.
Пару дней мониторю эту тему! Вродь как все просто! На событии OnPageNotFound ловим урлы типа /api/v1/* подключаем класс компонента! Для реализации класса можно условиться, что вместо * идут основные параметры запроса разделенные слешами:
1) Тип ресурса
2) Метод
3) Критерий
Таким образом мы получим запросы типа:

/api/v1/resources/getlist/ = /api/v1/resources/ - получаем список сущностей - массив объектов
/api/resources/get/{$id}/ - получаем сущность - объект
Конечно же сервер должен вернуть нам JSON.
Ну а понимание того, что мы хотим сделать с ресурсом, нам даст метод запроса (GET, POST, UPDATE ...).
Сам класс компонента должен проверить права (тут есть вопросы!), корректно определить пожелания пользователя из запроса, произвести валидацию данных, дернуть соответствующий процессор и вернуть ответ!
Если админка только для разработчика, то для обращения по апи пользователь должен быть авторизован в текущем контексте и иметь соответствующие права.
Вродь как этого достаточно для старта, или я опять не вижу кучу подводных камней?
Событие: mskladOnProductImport
Ну так и задать!) Разные размеры в 1с представлены отдельными позициями номенклатуры?
Просто вы же не можете предугадать какой товар является основным, а какой всего лишь размером основного товара.
Скорее всего они в 1с представлены отдельными товарами. Если это так, то нужен какой-то идентификатор того, что это один и тот же товар и тогда уже можно на событии mSync (не помню как называется) проверять наличие этого идентификатора и добавлять как опцию товара а не создавать новый.
Реализовывал подобное! Только для личных кабинетов использовал Office!
Готового даже не искал а решил запилить свой велосипедик! Получилось! Да и сложного там мало.
Для решения первого вопроса можно использовать событие msOnChangeOrderStatus. В нем уже проверять статус и выполнять свои манипуляции. Так же необходимо расширить таблицу пользователей для хранения баланса и даты зачисления.
Пример расширения!
Для решения второго нужно создать кастомный класс оплаты. Пример подключения есть в документашке
Ну а для решения третьего пункта можно запускать задачку по крону в которой будут сравниваться даты и при нужных условиях обнуляться балансы пользователей!)
Проект у меня на битбакете в приватном репозитории. Так что если нужны будут куски кода для примера, то велкам в личку!)
Ответ на первый вопрос:
Дописать соответствующий код в объект!) То есть создать в нем еще пару методов для отображения и скрытия и вызывать их в соответствии с логикой, которую вы нам не огласили!)
Ответ на второй вопрос:
Можно сделать многое если изучить объекты:
mse2Config — основной конфиг;
mSearch2 — основной объект;
И событие:
$(document).on('mse2_load', function(e, data) {
var hash = mSearch2.Hash.get();
});
На одном из проектов реализовывал диапазон цен в виде селекта. Да и диапазон цен был статичным. В итоге в вызове сниппета прописал этот чанк для цены а дальше своим скриптом делал актуализацию данных в селекте и запускал фильтрацию при выборе!
Внимательнее изучите код компонента и документацию, тогда все станет ясным!)