Олег Захаров

Олег Захаров

С нами с 14 октября 2017; Место в рейтинге пользователей: #134
Олег Захаров
01 декабря 2021, 19:49
0
Поставил MinifyX, в результате режет некоторые стили.
В частности не выводит тени у стилей в формате «box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 15%), 0px 15px 20px -15px rgb(0 0 0 / 90%);». Тупо пропускает такой код. Вынужден был пока отказаться от MinifyX. Прошу разработчика поправить ошибку.
Олег Захаров
02 октября 2021, 22:12
1
0
В файле /core/components/shopstats/model/shopstats/minishop2.class.php есть код
$q_stats_month->select('status,`createdon`, month(`createdon`) AS `order_month`, count(*) AS `order_count`, SUM(cart_cost) AS order_cost');
я его исправил на
$q_stats_month->select('status,`createdon`, month(`createdon`) AS `order_month`, count(*) AS `order_count`, SUM(cost) AS order_cost');
т.к. cart_cost это стоимость товаров в корзине. А по факту к стоимости заказа может быть добавлена стоимость доставки delivery_cost или скидка (если у вида доставки в настройках Minishop поставить в поле «Доп. стоимость:» отрицательное значение например -15% то будет добавляться скидка). cost — это итоговая стоимость товара.
Спасибо за виджет. Можно кастомизировать под себя.
Жаль не обновляете — хотелось бы вывод сделать по сумме и количеству заказов не только за годы, но и например выводить стоимость заказов за последний месяц, добавить возможность фильтрации и выбора отображения сведений за разные периоды, статусу — как это сделано в основном экране заказов магазина Minishop 2.
Олег Захаров
25 сентября 2021, 00:24
0
Источник проблемы был — подгружаемый скрипт yastatic.net/s3/front-maps-static/maps-front-jsapi-v2-1/2.1.79-26/build/debug/full-a37604fde567790c251386c8114a5a4c2048380e.js
В нем есть на строке 167285:
setTimeout(function () {
            document.head.insertBefore(tag, document.head.firstChild);
        }, 0);
— через просмотр источника в вкладке Sources всплывает подсказка о ошибке на текст «insertBefore(tag, document.head.firstChild)» — текст сообщения об ошибке «Failed to load resource:the server responded with a status of 400 ()»
На него в консоли выходит ошибка:
full-a37604fde567790c251386c8114a5a4c2048380e.js:167286 GET https://api-maps.yandex.ru/services/search//v2/?callback=id_163251784219566603305&text=&format=json&rspn=0&lang=ru_RU&results=1&token=780a34112aa192be3eeaa652724b81e9&type=geo&properties=addressdetails&geocoder_sco=latlong&origin=jsapi2searchcontrol&apikey=туткодapikey net::ERR_ABORTED 400
Олег Захаров
25 сентября 2021, 00:01
0
Код подключения Api для яндекса указывается в скрипте assets/components/mscdistance/js/web/default.js — он скорее всего должен быть там прописан. И в коде подключения api должен быть обязательно ключ apikey. У меня при одной переустановке компонента почему-то этот код apikey отсуствовал. Благо в резервных копиях он остался и я вручную его прописал и доставка заработала — но только на ПК. На мобильных были проблемы работы, вроде решил путем явного прописывания в начало чанка head кода подключения метрики с указанием apikey. Мой коммент ниже.
Олег Захаров
24 сентября 2021, 23:56
0
Еще сегодня нашел одну возможную проблему неправильной работы доставки. На тестовом сервере все работало, на рабочем доставка в упор не считалась, карта не обновлялась По выводимым ошибкам поискал информацию и нашел рекомендации о том чтобы код api яндекс карт не были ниже кода метрики. Понаблюдал за тем как код карт подгружается и пришел к выводу о том что возникает проблема с попыткой скрипта assets/components/mscdistance/js/web/default.js добавить (инициализировать) карту. Конкретно у меня возникал конфликт с метрикой (т.к. ее код подгружался через Google Tag Manager динамически) я по совету форумов повторил код апи яндекс карт с указанием ключа — вставил непосредственно выше (но не рядом с метрикой и не над ней — все равно глючило) и все прекрасно стало грузиться.
Была проблема плохой работы на мобильных устройствах. Почитал справочные материалы — оказалось что вроде на устройствах с низкой скоростью интернета методы со вставкой кода (метод document.writeln в default.js) плохо срабатывают — где-то пишут что блокируется браузером. Вышеуказанный метод вставки кода непосредственно в начало чанка head помог с решением проблемы. Но это костыль. Вставлял так:
<script src="https://api-maps.yandex.ru/2.1/?apikey=ВзялAPIкодИзdefault.jsс5строки&lang=ru_RU&mode=debug&load=package.full&onload=mscDistance.Ymaps.ready&ns=ymaps" type="text/javascript">
    </script>
По сути это повтор 5 строки скрипта assets/components/mscdistance/js/web/default.js — и сайт сразу стал прекрасно работать и на мобильном тоже. Таковы мои изыскания нескольких бессонных ночей. Искал причину по разному, переделал форму заказа и корзины, а оказалось проблема в конфликте кода метрики с кодом подключения карт.
Олег Захаров
24 сентября 2021, 23:45
0
Есть еще проблема — если ввести и выбрать адрес доставки, карта инициализируется и стоимость пересчитывается. Но если очистить строку адреса стоимость и поля координат и расстояний не пересчитываются. Вообще хотелось бы сделать проверку что поле длины расстояний (mscdistance_delivery_distance) не оставались пустыми или равными 0. Если в поле указания адреса доставки введенный адрес удалить и ввести новый адрес и кликнуть по выпадающему адресу — вроде бы карта переинициализируется. Но периодически бывает так чтобы не обновляется и стоимость не сбрасывается.
Попробовал сделать такой код на проверку что поле адреса пустое вызывая команду mscDistance.initialize();
$(document).on('change keydown','#mscdistance_delivery_to_point',function(e){
			/*надо бы добавить проверку логики если ранее выбранная улица не совпадает с новой*/
			if($(e.target).val()!=""){
                            /*если поле не  пустое*/
			}else{
				/*пытаемся пере инициализировать расчет доставки*/	
				mscDistance.initialize();
			}
		});
$(document).on('blur','#mscdistance_delivery_to_point',function(e){
			if($(e.target).val()==""){
				mscDistance.initialize();
			}
		});
Не работает, сумму доставки и карту не обновляет. Какая команда в js отвечает за переинициализацию доставки (стоимости и карты маршрута)?
Олег Захаров
22 сентября 2021, 04:01
1
0
Еще момент — иногда возникают ошибки расчета стоимости когда например пользователь ввел один адрес, стоимость доставки посчиталась и запомнилась в форме. Затем пользователь меняет адрес доставки, но стоимость уже остается посчитанной для предыдущего адреса. Т.е. получается не пересчитывается доставка. Так можно сделать обман пользователем чтобы доставка посчиталась по минимуму а затем уже выбирается реальный адрес, а стоимость может остаться старой.
Или же пользователь ввел заново название города, а улицу не указал (есть адреса типа железнодорожная станция и она не сохраняется как улица), или она не подставилась, и доставка точно не посчиталась/ не обновилась. У меня происходит так что если указать просто Новосибирск — то выводится Новосибирск, и тогда считается доставка в центр или даже оставляет старый маршрут (карта не перерисовывается) и стоимость доставки не меняется. Для указания просто города наверное вообще надо делать чтобы доставка не считалась правильно указанной и посчитанной.
Вижу решение проблемы чтобы через js проверять чтобы улица (поле street, делаю у себя скрытым, заполняется после заполнения через поле mscdistance_delivery_to_point) была заполнена.
Но были также ошибки когда не считается переменная mscdistance_delivery_distance. И доставка не считается. Как быть в этом случае? Приходится думать в сторону написания JS кода для проверки наличия заполнения mscdistance_delivery_distance (ну и mscdistance_delivery_to_point соответственно).
Олег Захаров
22 сентября 2021, 01:45
1
0
Еще хотелось бы настраивать отображение карты, задавать возможность отображения маркера, масштаба показа в начальный момент экрана загрузки карты.
Еще очень хотелось бы чтобы пользователь мог выбрать точку на карте (кликнуть по зданию) и указать что-то типа доставить сюда.

Ведь это было удобно для пользователя.
Плюс еще есть потребность чтобы если пользователь авторизован, адрес доставки можно хранить в настройках пользователя и при оформлении заказа у авторизованного пользователя была возможность выбирать адрес доставки по умолчанию — и тогда при оформлении заказа чтобы доставка рассчитывалась для этого адреса, выбранного по умолчанию (или даже хранить несколько адресов у пользователей и была возможность выбирать в момент оформления заказа.)
И еще вопрос за что отвечает mscDistance.product.cost (не уверен входит ли он в стандартную поставку компонента — на исправляемом сайте клиента компонент уже стоял, возможно этот сниппет был создан другим программистом)? Как его использовать? Посмотрел код, можно разобраться. Но было бы правильно указать его описание на странице компонента — сейчас там о нем нет описания.
Олег Захаров
22 сентября 2021, 01:26
1
0
Вопрос — у последних версий нет системных настроек?
Например на mscDistance
есть указание возможности задания настроек.
Например не нашел в настройках способа доставки (задаваемого в настройках Minishop) возможность ограничить:
Город доставки — указать город в пределах которого осуществляется доставка товаров
Регион доставки — указать регион в пределах которого осуществляется доставка товаров
Вот хочу я например ограничить доставку одним городом, чтобы не выводил адреса из других городов. Сейчас можно указать адрес доставки другие города что мешает.
Сейчас в системных настройках по mscdistance пусто. Пробовал переустановить, все равно пусто.
Или можно указанные настройки вручную создать. Как они будут работать. Почему нельзя было вывести в системные настройки? Или это баг?
Олег Захаров
19 сентября 2021, 20:41
0
Ошибка (работы формы заказа) была на моей стороне, исправил, вопрос пока снят.
Но факт есть факт — приложение как-то коряво у меня сработало. При открытии корзины оно как бы по ссылке формирует новую корзину добавляя к старой — в итоге получается что если несколько раз по ссылке перехожу — то сумма столько же раз удваивается. Причем на форме заказа количество товаров не совпадало с количеством с создаваемым.
Но так как альтернативы не вижу — буду пробовать ставить повторно и тестировать. О результатах отпишусь.
Олег Захаров
19 сентября 2021, 19:47
0
Если не меняет то странно. Буду искать ошибку у себя. На хостинге перезапустил восстановление предыдущей версии.
Благо ставил компонент на копию сайта, не так страшно.
Олег Захаров
19 сентября 2021, 19:06
0
Поставил приложение. В итоге оно как-то некорректно работало — прибавляло к существующей корзине объем товаров. Причем если перезагружать по получившийся ссылке товаров — то товары как бы удваивались.
Удалил. И получил то что старая форма заказа перестала нормально работать. Блин!!! Что делает компонент — что меняет в системе. Как теперь откатить обратно!!!
Олег Захаров
04 сентября 2021, 23:55
1
0
Нужен не просто стоимость доставки который выводится через "
Стоимость доставки: {$total.delivery_cost}
", а именно величина скидки/наценки от стоимости в зависимости от выбранного способа доставки, которое задается из настроек способа доставки из поля «Доп. Стоимость». В этом поле «Доп. Стоимость» значение может задаваться как абсолютом, так и в процентах, в том числе и с минусом (таким образом получим Скидку при выборе способа доставки.
Хотим выводить что вроде «Скидка при самовывозе -15% от стоимости: ХХ рублей»
Олег Захаров
04 сентября 2021, 23:40
1
0
Как отобразить скидку на самовывоз в карточке заказа в админке и в уведомлении письмом менеджеру сайта, а также вывести на странице оформления заказа?
Так чтобы брать из поля настроек способа доставки (сегодня могут поставить -15%, а завтра поставят -12% — хотелось бы брать установленное значение скидки из настроек доставки из поля Доп. Стоимость — в обработчике msdeliveryhandler.class.php это судя по всему берется с помощью $delivery->get('price'))
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0.0)
    {
       ...
        $add_price = $delivery->get('price');
        if (preg_match('/%$/', $add_price)) {
            $add_price = str_replace('%', '', $add_price);
            $add_price = $cost / 100 * $add_price;
        }
        $cost += $add_price;

        return $cost;
    }
Олег Захаров
20 октября 2019, 18:54
0
У меня такая же проблема возникла. тоже добавлял MIGX мультизагрузку, до этого вроде работало. А теперь зашел — и все, вкладка дополнительные поля не грузится. Есть решение?
Олег Захаров
18 марта 2019, 12:56
0
Это код с использованием Fenom. Он должен быть включен.
Олег Захаров
19 ноября 2018, 16:44
0
Спасибо! А можно пример для особо (ленивых разбираться и не понимающих) как я :))
Я пытался разобраться с API Битркис24, чувствую что без сто грамм не разберуся
Олег Захаров
19 ноября 2018, 16:35
0
А как заявку можно к конкретному пользователю привязать? Страниц может быть много, за разные страницы будут отвечать разные пользователи. Как вариант вижу создать пользовательское поле, в него забивать id пользователя, затем с помощью роботов исправлять пользователя по заявке. Но это можно делать только на платной версии Битрикс24. Как быть тем кто будет сидеть на бесплатной. Лучше бы добавить возможность указывать id пользователя. Может есть такая настройка? аля &btxASSIGNED_BY_ID?
Олег Захаров
19 ноября 2018, 16:35
0
Супер, название лидов теперь могу задавать как надо.
&btxTITLE=`Заявка c сайта [[*pagetitle]]`
Олег Захаров
19 ноября 2018, 14:16
0
Артем, а как быть с вопросом привязки заявки к конкретному пользователю?
Как изменить название заявки по умолчанию?
Выше я вопрос задавал.