СДЭК не может определить город

У многих Городов в поле “Код города СДЭК” указано два кода через запятую. При выборе такого города на витрине появляется сообщение об ошибке “Оповещение СДЭК: Мы не можем определить нужный город. Обратитесь к администратору”.

2 лайка

Здравствуйте.

Спасибо за сообщение.
Эта проблема воспроизводится для некоторых городов с двумя кодами. При этом, для части городов с двумя или тремя кодами СДЭК город определяется, и доставка СДЭК для них доступна. Мы передали информацию разработчикам.

Присоединяюсь к багу, после обновления до версии 4.7.4 обнаружили.
При попытке пофиксить это, нашел место, в котором всё ломается.
Модуль Города(rus_cities), функция fn_rus_cities_get_city_ids, выполняемый запрос не возвращает результатов.
В случае если закоментить вот это условие

 if (!empty($state)) {
       $condition .= db_quote(' AND ?:rus_cities.state_code = ?s', $state);
    }

всё стает на свои места, хоть это и не правильно.
Что самое интересное, тот самый запрос, выполнен через ПМА работает корректно.
Но даже если подменить запрос в db_get_fields на “без плейсхолдеров” то ничего не ремонтируется, пока не убрать условие

AND cscart_rus_cities.state_code = 'AAS'

Не уверен, что баг тот же, но ошибка та же
Обратился в техподдержку:
У меня установлен модуль доставки СДЭК.
При попытке оформить заказ в города Чехов, Дзержинск, Самара, Пушкино
модуль выдает ошибку " ОповещениеСДЭК: Мы не можем определить нужный
город. Обратитесь к администратору "
Получил ответ
Проблема вызвана тем, что для страницы оформления заказа отключено поле профиля Регион, поэтому при указании города, который находится в нескольких областях (например, Чехов в Московской области и Чехов в Сахалинской области) СДЭК не может определить, к какому региону относится данный город.

Для решения проблемы вам необходимо добавить на страницу оформления заказа поле профиля Область/Район. Сделать это вы можете на странице Администрирование > Поля профиля панели администратора.

Мне очень не хочется добавлять еще одно поле. В Мерчиуме проблем с дублирующимися городами было меньше, я помню только Дзержинск. Поэтому полез в Города и стал отстреливать редкие дубликаты, типа Чехова в Сахалинской области (помогло, Чехов оформляется норм), Самара Иркутской обл. (помогло, оформляется норм), Дзержинска Иркутской области (помогло отчасти, выбрать ПВЗ можно, но ошибка все равно остается).
Возникли вопросы.
Во-первых, при оформлении заказа в поле Город клиент набирает, а потом выбирает из развернувшегося меню конкретный город с привязкой к региону (Дзержинск, Нижегородская область; Чехов, Московская область).
Почему данные о выбранном регионе не привязываются?
Во-вторых, зачем 19006 населенных пунктов? Это вся Россия или еще будет? И как найти дубли того, как часть клиентов отвалится, а какой-нибудь самый упоротый не оформит доставку Почтой России?

Это не баг. Немного другая проблема. Это действительно такое корявое поведение, когда отсутствует поле регион. Я тоже хотел убрать регион, но столкнулся с этим. Почему-то при выборе “Дзержинск, Нижегородская область” в поле город попадает не ID города, а только текст “Дзержинск” и потом система снова ищет город по этому тексту (внешне это выглядит так, не смотрел, что там внутри), но натыкается, что городов два, поэтому не может определить, что это за город. Надо, чтобы запоминался ID при выборе города и потом в модуле СДЭК город искался по ID, а не по текстовому названию.

Разработчики сейчас трудятся над новой версией страницы оформления заказа. Давайте, я туда подкину идею об одном поле Город, а вы ее лайкните.

1 лайк

Лайкнул.
А все-таки как сократить число населенных пунктов до тех, в которых есть СДЭК?
Я выключил регионы Сибири и Дальнего Востока, но все равно полно дублей.

Только ручным перебором базы городов, вероятно.

Я проверил. От дублей спасает явное указание области в названии таких населенных пунктов, прямо в базе данных. В этом случае не нужно поле Регион, при оформлении заказа модуль СДЭК перестает ругаться, стоимость доставки рассчитывается корректно.

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

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

В Мерчиуме 1034 городов. Мне хватало. Как бы вот так сократить?

Блин.
Выключил регионы Сибири и Дальнего Востока, решил руками почистить Европейскую часть в модуле Города.
В Волгоградской области случайно удалил Волгоград. Пытаюсь сделать новый
Код 494
Город: Волгоград
Код города СДЭК: 426
Страна: Россия
Регион: Волгоградская область
Статус: Вкл.
%D0%92%D0%BE%D0%BB%D0%B3%D0%BE%D0%B3%D1%80%D0%B0%D0%B4

SERVICE UNAVAILABLE
Sorry, service is temporarily unavailable.
%D0%92%D0%BE%D0%BB%D0%B3%D0%BE%D0%B3%D1%80%D0%B0%D0%B4%202

Причем город Волгоград создается, но с пустым полем Код города СДЭК.
Добавляем код 426

Он не сохраняется

При оформлении заказа вариантов доставки СДЭК нет.

Откатывайтесь назад через бэкап.

Список городов сократили до 419 городов из базы СДЭК.
Волгоград восстановили.
Лепота :slight_smile:

Добрый день, @sinobook.ru!

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

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

Спасибо за ваше обращение.

Добрый день.

Вопрос по форме выбора города клиентом. Сейчас для получения автоматического расчета стоимости доставки по Москве нужно выбрать город Москва и область/район Москва. Но для большинства людей Москва находится в Московской области, что они и выбирают. На это модуль СДЕК ругается и не рассчитывает доставку.

ЧТО ДЕЛАТЬ?

Заранее спасибо.

Либо подождать, когда отдебажат новый чекаут, либо воспользоваться модулем: https://www.ecom-labs.ru/cs-cart-multi-vendor-moduli/cs-cart-modul-dadata.html, который может помочь.

не поможет , Dadata неполноценно работает с новым чекаутом

Ну так я его для старого чекаута предложил :slightly_smiling_face:

С новым пока что много чего не работает, даже то, что из коробки.

1 лайк

со старым отлично справлялся со своими задачами )

Сообщение перенесено в новую тему: СДЭК: Не определяется город