Битрикс ошибка у заказа есть активные оплаты

Не меняется статус при оплате

Внимание!
Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.


Не меняется статус при оплате

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

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

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

Внутренний счет пользователя не пополняется, но деньги на счет приходят

 

Михаил Базаров

Администратор

Сообщений: 1746
Баллов: 999999
Рейтинг:

1

Регистрация: 07.11.2013

#3

Это нравится:0Да/0Нет

11.02.2020 18:04:45

Цитата
Adrian Lazarov написал:
При оплате через яндекс кассу, в админке не меняется стастус на выполнен, постоянно весит статус «Принят, ожидается оплата» хотя все оплачено и средства поступили на счет, в чем может быть причина?

Проверьте вот эти настройки в модуле Интернет-магазина
Плюс, в настройках платежной систему- она должна отдать успешность оплаты на страницу с магазином (зависит от платежной системы)

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 18.02.40.png (592.83 КБ)

Цитировать   Имя

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

#4

Это нравится:0Да/0Нет

11.02.2020 19:54:04

В настройках стоят вот эти параметры
в яндекс ответ настроен

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 19.39.12.png (23.64 КБ)

Цитировать   Имя

Поблагодарить и поддержать!

Поддержать выпуски видео уроков, поблагодарить за полезную инструкцию или заметку можно через:

Юманей

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.

Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт
Просмотров: 17339
При разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретит…

Показать только один тип цены в каталоге Битрикс
Просмотров: 14270
Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на с…

Открытие мобильного приложения Apache Cordova по ссылке
Просмотров: 897
Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: п…

Как вывести свойства инфоблока по отдельности и немного плюшек не в т…
Просмотров: 106976
Если у инфоблока несколько свойств- то при выводе их всех, скажем в детальном описании нов…

Вывести компонент новостей на страницу в Битрикс
Просмотров: 64310
Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, ч…

Автоматическая загрузка каталогов из csv файлов в Битрикс
Просмотров: 11130
Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков.
В…

Базовая защита «Битрикс виртуальная машина» от DDoS атак.
Просмотров: 5534
Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, …

Изменить размер картинок на лету в битрикс
Просмотров: 47677
Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздел…

Сортировка элементов по индексу сортировки значений типа список
Просмотров: 11015
Внутри любого компонента есть заранее заложенные поля для сортировки элементов. МОжно сорт…

Дополнительные параметры в меню Битрикс
Просмотров: 19949
Иногда нужно присвоить какой-то функционал к конкретному пункту меню в битрикс. Например о…

Отсортировать элементы в Битрикс по свойству привязка к разделам
Просмотров: 28399
При создании достаточно сложных интернет-магазинов на Битрикс, иногда встает задача помимо…

Вывод элементов с помощью API битрикс
Просмотров: 23189
Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Нап…

Подключение SSL на Битрикс виртуальная машина
Просмотров: 12480
С первого января 2017 года, наличие безопасного соединения HTTPS становится практически об…

Вывести товары из того же раздела в карточке товара
Просмотров: 18358
Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки…

Умный фильтр во всплывающей панели на мобильных.
Просмотров: 1869
Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень кра…

Установить цену товара из свойства инфоблока
Просмотров: 9287
На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока…

Дополнительные картинки в новостях Битрикс, почти фотогалерея.
Просмотров: 48722
Частенько стоит задача, по мимо стандартных «Картинка для анонса» и «Деталь…

Старые шаблоны битрикс для простой верстки
Просмотров: 17486
Новые версии типового интернет-магазина, который идет в комплекте с Битрикс (от 12 версии …

Получить множественное пользовательское поле раздела. Значения множес…
Просмотров: 618
Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно п…

Создание раздела инфоблока при регистрации пользователя в Битрикс
Просмотров: 8274
Например вам нужно выводить информацию исключительно для определенного пользователя. Само …

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

Статусы позволяют охарактеризовать не только состояние заказа в целом, но и отдельно состояние отгрузки и доставки товаров из заказа. Поэтому статусы делятся на 2 типа: заказ и доставка.

Типы статусов заказа в Битрикс

Существуют особые статусы заказов и отгрузок заказов, удаление которых невозможно:

  1. N — начальный статус, который присваивается заказу при создании. По умолчанию статус называется «Принят».
  2. F — финальный статус, который присваивается заказу после выполнения, то есть оплаты и доставки. По умолчанию статус называется «Выполнен».
  3. DN — начальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Ожидает обработки».
  4. DF — финальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Отгружен».

Настройка статусов

Чтобы настроить статусы, перейдите на страницу «Магазин», затем выберите раздел «Настройки», перейдите в «Статусы» и кликните на «Статусы заказа».

Форма редактирования статусов имеет вид:

Форма редактирования статусов заказа в Bitrix

«1С-Битрикс: Управление сайтом» предлагает стандартный набор этапов, который сформирован по умолчанию.

Рекомендуемые решения

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

У заполнения полей формы есть свои нюансы:

  1. Уникальный код статуса задается одной или двумя латинскими буквами.
  2. Выбрать нужный тип — «Заказ» или «Доставка» можно в поле «Тип статуса».
  3. Задать относительный вес статуса можно в поле «Сортировка». Таким образом вы определите положение конкретного статуса в списке других статусов.
  4. Чтобы отправить покупателю письмо о переводе заказа в определенный статус, воспользуйтесь опцией «Отправлять почтовое уведомление». Как сгенерировать письмо? Для этого существуют шаблоны. Чтобы создать или отредактировать шаблон, пройдите по ссылке «Почтовый шаблон статуса».
  5. Отдельно для каждого языка, определенного в системе, задаются Название и Описание.
  6. Чтобы группа пользователей могла попасть в секцию «Право на доступ», ее уровень в настройках модуля «Интернет-магазин» должен быть не ниже, чем «Обработка заказов». Определить уровень доступа к заказам для той или иной группы можно при помощи выпадающего списка. Что делать, если в списке нет какой-либо группы? Пройдите по ссылке «Группы пользователей» и назначьте этой группе в настройках модуля требуемое право доступа, которое должно быть не ниже «Обработки заказов». Назначив право доступа, вернитесь к настройке статуса. Теперь вы можете предоставить добавленной группе право доступа в рамках данного статуса.
  7. Добавлять статусы заказов можно через «Администрирование».

Чтобы добавить новый промежуточный статус «Подтверждение заказа», выберите «Добавить статус».

Как получить текущий статус заказа? Воспользуйтесь следующим методом — order->getField(‘STATUS_ID’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘STATUS_ID’); // N (Принят, ожидается оплата)

Как изменить статус? Для изменения статуса предназначен такой метод — CSaleOrder::StatusOrder().

order_id = 5;

CSaleOrder::StatusOrder(order_id, ‘N’); // Принят, ожидается оплата

CSaleOrder::StatusOrder(order_id, ‘F’); // Выполнен

Список статусов расположен на странице «Магазин» — «Настройки» — «Статусы».

Рекомендуемые решения

Чтобы заказ получил статус «Оплачен», воспользуйтесь методом CSaleOrder::PayOrder().

order_id = 5;

CSaleOrder::PayOrder(order_id, «Y»); // статус оплачен (Y/N)

Есть и другой метод — CSaleOrder::Update(), но предыдущий вариант предпочтительнее, поскольку в нем выполняются обработчики событий.

Как присвоить заказу статус «Отменен»? Для отмены воспользуйтесь методом order->getField(‘CANCELED’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘CANCELED’); // заказ отменён (Y / N)

order->getField(‘EMP_CANCELED_ID’); // ИД пользователя, отменивший заказ

order->getField(‘DATE_CANCELED’)->toString(); // дата отмены (05.01.2020 21:11:10)

order->getField(‘REASON_CANCELED’); // причина отмены

Теперь вы знаете, как работать со статусами заказов в интернет-магазине. Удачи вашему бизнесу!

В обновлённом ядре Bitrix D7 функционал работы с заказами был существенно изменён. Немного ранее мы рассматривали работу со свойствами заказа посредством использования возможностей обновленного ядра D7. В данном посту мы поговорим про работу с функционалом оплаты заказов через API.

Об этом уже говорилось на нашем сайте, и не будет лишним повторить, что в ядре D7 реализована концепция ORM, свойственная для объектно-ориентированных языков программирования. Эта концепция включает в себя такое понятие как «коллекция», которая представляет из себя «умный» массив. Работа с ним оптимизирует групповые операции с объектами одного типа. Так к примеру, для реализации отдельного функционала сайта реализованы отведённые коллекции, с которыми мы можем работать по правилам ООП.

В данном посту вы рассмотрим возможности использования коллекции оплаты заказа SalePaymentCollection. Давайте создадим объект заказа, с которым мы и будем далее работать.

// используем пространство имён интернет-магазина use BitrixSale; // int $orderId ID заказа $order = SaleOrder::load($orderId); // или так // mixed $orderNumber номер заказа $order = SaleOrder::loadByAccountNumber($orderNumber); 

В переменную $order был помещён объект существующего заказа. Для работы с данными оплаты заказа, обращаемся к коллекции оплаты заказа SalePaymentCollection.

$paymentCollection = $order->getPaymentCollection(); 

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

$paymentCollection->isPaid(); // статус оплаты заказа, true/false $paymentCollection->hasPaidPayment(); // есть ли хотя бы одна оплата, true/false $paymentCollection->getPaidSum(); // общая сумма оплаты $paymentCollection->isExistsInnerPayment(); // оплачен с внутреннего счёта true/false 

Возможности системы позволяют содержать множество записей об оплатах. Это означает что с этими записями мы можем работать так же и в цикле. Каждая итерация цикла будет передавать объект оплаты SalePayment, который даёт возможность работы с данными оплаты.

foreach ($paymentCollection as $payment) { $sum = $payment->getSum(); // сумма к оплате $isPaid = $payment->isPaid(); // статус оплаты true/false $isReturned = $payment->isReturn(); // возврат, true/false $ps = $payment->getPaySystem(); // платежная система (объект SalePaySystemService) $psID = $payment->getPaymentSystemId(); // ID платежной системы $psName = $payment->getPaymentSystemName(); // наименование платежной системы $isInnerPs = $payment->isInner(); // оплата с внутреннего счёта, true/false } 

Как получать данные оплаты мы рассмотрели, теперь самое время попробовать изменить параметры. Для этого мы попробует установить флаг оплаты, и возврата с помощью методов setPaid() и setReturn().

$onePayment = $paymentCollection[0]; $onePayment->setPaid("N"); // отменяем оплату $onePayment->setPaid("Y"); // выставляем оплату $onePayment->setReturn("Y"); // возврат средств // сохранение изменений $order->save(); 

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

$service = SalePaySystemManager::getObjectById($onePayment->getPaymentSystemId()); $context = BitrixMainApplication::getInstance()->getContext(); $service->initiatePay($onePayment, $context->getRequest()); 

Таким образом, при создании заказа создаётся запись оплаты, с неоплаченным статусом. После транзакции покупателем статус оплаты должен меняться для подтверждения операции оплаты. Всё это делается в конкретном интерфейсе сайта. Пользуясь примерами, вы можете работать с оплатами заказа удобным для вас способом.

Настройка обмена выполнена правильно, но обмен все равно проходит некорректно? Рассмотрим типичные проблемы, возникающие в процессе интеграции сайта с 1С, и способы их решения.

Обмен заказами завершен с ошибками

Проблема. При попытке обмена заказов в 1С выходит сообщение:

Выгружено товаров: 1
Выгружено картинок: 1
Выгрузка товаров успешно завершена
Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
Не установлен реквизит «РегионДоставки». Элемент не записан!
Не установлен реквизит «Основная форма оплаты». Элемент не записан!
{Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Произошла ошибка: . По причине:

Не удалось найти/создать контрагента.
Не удалось обработать документы, загруженные с сервера.
Обмен не выполнен.
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!!!

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

Не меняется статус заказа при выгрузке из 1С

Проблема. Не меняется статус заказа при выгрузке из 1С

В соответствие с логикой синхронизации 1С и «1С-Битрикс: Управление сайтом», статус заказа меняется, если из 1С передались дата оплаты либо дата отгрузки товара. Чтобы эти даты попали в XML-файл, который формируется 1С и передаётся на сайт, нужно сформировать и провести нужные документы.

  • В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
  • Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
  • Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
  • Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.

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

Изменения товаров не зарегистрированы. Выгрузка товаров не произведена

Проблема. 1С заполнена и настроена на обмен с «1С-Битрикс: Управление сайтом», который тоже настроен на интеграцию с 1С. При нажатии на кнопку Выполнить обмен сразу появляется сообщение в 1С: Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.

Решение. Возможные ошибки:

  • Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров. Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано.
  • В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
  • Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
    • Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
    • Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в 1С. При обмене выгружаются изменения товаров, произведённые именно в 1С с момента последней выгрузки.

Изменения на сайте не приходят в 1С

Проблема. 1С заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы 1С. Изменения в «1С-Битрикс: Управление сайтом» не приходят в 1С, т.е. якобы на сайте нет изменений.

Решение. На самом деле, изменения есть и они приходят в копию базы 1С. Чтобы изменения отслеживались в оригинале базы 1С, просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».

Как выгрузить каталоги из 1С в разные типы инфоблоков?

Проблема. Как выгрузить каталоги из 1С в разные типы инфоблоков?

Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.

Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.

Затем при настройке импорта в 1С, для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.

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

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("import1");
?>
<?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array(
"IBLOCK_TYPE" => "books",
"SITE_LIST" => array(),
"INTERVAL" => "30",
"GROUP_PERMISSIONS" => array(0 => "1"),
"USE_OFFERS" => "N",
"USE_IBLOCK_TYPE_ID" => "Y",
"SKIP_ROOT_SECTION" => "N",
"ELEMENT_ACTION" => "D",
"SECTION_ACTION" => "D",
"FILE_SIZE_LIMIT" => "204800",
"USE_CRC" => "Y",
"USE_ZIP" => "Y",
"USE_IBLOCK_PICTURE_SETTINGS" => "N",
"GENERATE_PREVIEW" => "Y",
"PREVIEW_WIDTH" => "100",
"PREVIEW_HEIGHT" => "100",
"DETAIL_RESIZE" => "Y",
"DETAIL_WIDTH" => "300",
"DETAIL_HEIGHT" => "300",
"TRANSLIT_ON_ADD" => "Y",
"TRANSLIT_ON_UPDATE" => "Y",
"TRANSLIT_MAX_LEN" => "100",
"TRANSLIT_CHANGE_CASE" => "L",
"TRANSLIT_REPLACE_SPACE" => "_",
"TRANSLIT_REPLACE_OTHER" => "_",
"TRANSLIT_DELETE_REPEAT_REPLACE" => "Y"
),
false
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Не удалось найти вид номенклатуры

Проблема. Не удалось найти вид номенклатуры

В процессе обмена 1С с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.

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

Поле объекта не обнаружено

Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.

В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);

Решение. Проверьте настройки интеграции с 1С, закладка Профили обмена: установлены ли соответствия для полей заказа. Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для 1С.

Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.

  • Возникает ошибка следующего вида:

Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!

Решение. Ошибка скорее всего связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции Выгружать картинки (вкладка Выгрузка товаров в настройке обмена в 1С).

Также можно увеличить размер выделяемой памяти в настройках PHP (параметр memory_limit), для этого следует обратиться к хостинг-провайдеру.

  • Возникает ошибка следующего вида:

Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!

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

Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с 1С — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с 1С.

Произошла ошибка на стороне сервера. Файл не отправлен

В процессе обмена возникает такого вида ошибка:

Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!

Решение. Причины возникновения ошибки могут быть следующие:

  • На компьютере, где установлена 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
  • Некорректно работает функции расширения ZIP, вследствие чего из архива не распаковываются файлы. Для решения возникшей проблемы рекомендуется:
    • Установить последние стабильные версии обновлений модуля интернет-магазина.
    • На время обмена отключить на локальной машине все блокирующее ПО (антивирус, файрволлы и т.д.)
    • Отключить ZIP-сжатие в настройках интеграции с 1С.

Не работает авторизация при обмене данными с 1С

Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:

RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

  • Закомментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:

#<ifmodule mod_rewrite.c="">
# RewriteEngine Off
#</ifmodule>

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

  • В файл bitrix/php_interface/dbconn.php добавьте строки:

$remote_user = $_SERVER["REMOTE_USER"]
? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);

Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом

Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.

При выгрузке каталога из 1С не ставит галочку «уменьшать количество при заказе»

Проблема. При выгрузке каталога из 1C не ставит галочку уменьшать количество при заказе

Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавлении продукта (через событие OnProductAdd):

<?
AddEventHandler("sale", "OnProductAdd", "OnProductAdd");

function OnProductAdd($ID,$Fields)
{
$res=Array("QUANTITY_TRACE"=>'Y);
CCatalogProduct::Update($ID,$res);

}
?>

Возможные причины медленного импорта из 1С

Проблема. Медленный импорт из 1C.

Возможные причины:

Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.

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

Если структура каталога в 1С отличается от каталога на сайте?

Задача: Структура каталога на сайте должна отличаться от структуры в 1C.

Варианты решения:

Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.

Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.

Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.

Ошибка импорта метаданных

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

Выгружено товаров: 1 832
Выгружено картинок: 0
Выгружено предложений: 0
Произошла ошибка на стороне сервера.
Обмен не выполнен
Ответ сервера:
Ошибка импорта метаданных.

Выгрузка товаров завершена с ошибками!!!

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

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

Ошибка импорта метаданных. В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.

Причина. Такая ошибка возникает, когда клиент забывает указать в настройках обмена конкретное соглашение (в настройках 1С), по которому должны выгружаться цены. Соглашение указывается в отборах выгружаемых инфоблоков.

Выгрузка картинок

Проблема. Неполная выгрузка картинок.

Картинки выгружаются из 1С, только при первой полной выгрузке каталога товаров, не важно выгрузка была на в папку на локальном компьютере или на сайт. В последствии картинки выгружаются только новые и измененные.

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

Не меняется статус при оплате

Внимание!
Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.


Не меняется статус при оплате

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

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

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

Внутренний счет пользователя не пополняется, но деньги на счет приходят

 

Михаил Базаров

Администратор

Сообщений: 1746
Баллов: 999999
Рейтинг:

1

Регистрация: 07.11.2013

#3

Это нравится:0Да/0Нет

11.02.2020 18:04:45

Цитата
Adrian Lazarov написал:
При оплате через яндекс кассу, в админке не меняется стастус на выполнен, постоянно весит статус «Принят, ожидается оплата» хотя все оплачено и средства поступили на счет, в чем может быть причина?

Проверьте вот эти настройки в модуле Интернет-магазина
Плюс, в настройках платежной систему- она должна отдать успешность оплаты на страницу с магазином (зависит от платежной системы)

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 18.02.40.png (592.83 КБ)

Цитировать   Имя

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

#4

Это нравится:0Да/0Нет

11.02.2020 19:54:04

В настройках стоят вот эти параметры
в яндекс ответ настроен

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 19.39.12.png (23.64 КБ)

Цитировать   Имя

Поблагодарить и поддержать!

Поддержать выпуски видео уроков, поблагодарить за полезную инструкцию или заметку можно через:

Юманей

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.

Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт
Просмотров: 17339
При разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретит…

Показать только один тип цены в каталоге Битрикс
Просмотров: 14270
Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на с…

Открытие мобильного приложения Apache Cordova по ссылке
Просмотров: 897
Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: п…

Как вывести свойства инфоблока по отдельности и немного плюшек не в т…
Просмотров: 106976
Если у инфоблока несколько свойств- то при выводе их всех, скажем в детальном описании нов…

Вывести компонент новостей на страницу в Битрикс
Просмотров: 64310
Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, ч…

Автоматическая загрузка каталогов из csv файлов в Битрикс
Просмотров: 11130
Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков.
В…

Базовая защита «Битрикс виртуальная машина» от DDoS атак.
Просмотров: 5534
Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, …

Изменить размер картинок на лету в битрикс
Просмотров: 47677
Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздел…

Сортировка элементов по индексу сортировки значений типа список
Просмотров: 11015
Внутри любого компонента есть заранее заложенные поля для сортировки элементов. МОжно сорт…

Дополнительные параметры в меню Битрикс
Просмотров: 19949
Иногда нужно присвоить какой-то функционал к конкретному пункту меню в битрикс. Например о…

Отсортировать элементы в Битрикс по свойству привязка к разделам
Просмотров: 28399
При создании достаточно сложных интернет-магазинов на Битрикс, иногда встает задача помимо…

Вывод элементов с помощью API битрикс
Просмотров: 23189
Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Нап…

Подключение SSL на Битрикс виртуальная машина
Просмотров: 12480
С первого января 2017 года, наличие безопасного соединения HTTPS становится практически об…

Вывести товары из того же раздела в карточке товара
Просмотров: 18358
Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки…

Умный фильтр во всплывающей панели на мобильных.
Просмотров: 1869
Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень кра…

Установить цену товара из свойства инфоблока
Просмотров: 9287
На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока…

Дополнительные картинки в новостях Битрикс, почти фотогалерея.
Просмотров: 48722
Частенько стоит задача, по мимо стандартных «Картинка для анонса» и «Деталь…

Старые шаблоны битрикс для простой верстки
Просмотров: 17486
Новые версии типового интернет-магазина, который идет в комплекте с Битрикс (от 12 версии …

Получить множественное пользовательское поле раздела. Значения множес…
Просмотров: 618
Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно п…

Создание раздела инфоблока при регистрации пользователя в Битрикс
Просмотров: 8274
Например вам нужно выводить информацию исключительно для определенного пользователя. Само …

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

Статусы позволяют охарактеризовать не только состояние заказа в целом, но и отдельно состояние отгрузки и доставки товаров из заказа. Поэтому статусы делятся на 2 типа: заказ и доставка.

Типы статусов заказа в Битрикс

Существуют особые статусы заказов и отгрузок заказов, удаление которых невозможно:

  1. N — начальный статус, который присваивается заказу при создании. По умолчанию статус называется «Принят».
  2. F — финальный статус, который присваивается заказу после выполнения, то есть оплаты и доставки. По умолчанию статус называется «Выполнен».
  3. DN — начальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Ожидает обработки».
  4. DF — финальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Отгружен».

Настройка статусов

Чтобы настроить статусы, перейдите на страницу «Магазин», затем выберите раздел «Настройки», перейдите в «Статусы» и кликните на «Статусы заказа».

Форма редактирования статусов имеет вид:

Форма редактирования статусов заказа в Bitrix

«1С-Битрикс: Управление сайтом» предлагает стандартный набор этапов, который сформирован по умолчанию.

Рекомендуемые решения

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

У заполнения полей формы есть свои нюансы:

  1. Уникальный код статуса задается одной или двумя латинскими буквами.
  2. Выбрать нужный тип — «Заказ» или «Доставка» можно в поле «Тип статуса».
  3. Задать относительный вес статуса можно в поле «Сортировка». Таким образом вы определите положение конкретного статуса в списке других статусов.
  4. Чтобы отправить покупателю письмо о переводе заказа в определенный статус, воспользуйтесь опцией «Отправлять почтовое уведомление». Как сгенерировать письмо? Для этого существуют шаблоны. Чтобы создать или отредактировать шаблон, пройдите по ссылке «Почтовый шаблон статуса».
  5. Отдельно для каждого языка, определенного в системе, задаются Название и Описание.
  6. Чтобы группа пользователей могла попасть в секцию «Право на доступ», ее уровень в настройках модуля «Интернет-магазин» должен быть не ниже, чем «Обработка заказов». Определить уровень доступа к заказам для той или иной группы можно при помощи выпадающего списка. Что делать, если в списке нет какой-либо группы? Пройдите по ссылке «Группы пользователей» и назначьте этой группе в настройках модуля требуемое право доступа, которое должно быть не ниже «Обработки заказов». Назначив право доступа, вернитесь к настройке статуса. Теперь вы можете предоставить добавленной группе право доступа в рамках данного статуса.
  7. Добавлять статусы заказов можно через «Администрирование».

Чтобы добавить новый промежуточный статус «Подтверждение заказа», выберите «Добавить статус».

Как получить текущий статус заказа? Воспользуйтесь следующим методом — order->getField(‘STATUS_ID’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘STATUS_ID’); // N (Принят, ожидается оплата)

Как изменить статус? Для изменения статуса предназначен такой метод — CSaleOrder::StatusOrder().

order_id = 5;

CSaleOrder::StatusOrder(order_id, ‘N’); // Принят, ожидается оплата

CSaleOrder::StatusOrder(order_id, ‘F’); // Выполнен

Список статусов расположен на странице «Магазин» — «Настройки» — «Статусы».

Рекомендуемые решения

Чтобы заказ получил статус «Оплачен», воспользуйтесь методом CSaleOrder::PayOrder().

order_id = 5;

CSaleOrder::PayOrder(order_id, «Y»); // статус оплачен (Y/N)

Есть и другой метод — CSaleOrder::Update(), но предыдущий вариант предпочтительнее, поскольку в нем выполняются обработчики событий.

Как присвоить заказу статус «Отменен»? Для отмены воспользуйтесь методом order->getField(‘CANCELED’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘CANCELED’); // заказ отменён (Y / N)

order->getField(‘EMP_CANCELED_ID’); // ИД пользователя, отменивший заказ

order->getField(‘DATE_CANCELED’)->toString(); // дата отмены (05.01.2020 21:11:10)

order->getField(‘REASON_CANCELED’); // причина отмены

Теперь вы знаете, как работать со статусами заказов в интернет-магазине. Удачи вашему бизнесу!

В обновлённом ядре Bitrix D7 функционал работы с заказами был существенно изменён. Немного ранее мы рассматривали работу со свойствами заказа посредством использования возможностей обновленного ядра D7. В данном посту мы поговорим про работу с функционалом оплаты заказов через API.

Об этом уже говорилось на нашем сайте, и не будет лишним повторить, что в ядре D7 реализована концепция ORM, свойственная для объектно-ориентированных языков программирования. Эта концепция включает в себя такое понятие как «коллекция», которая представляет из себя «умный» массив. Работа с ним оптимизирует групповые операции с объектами одного типа. Так к примеру, для реализации отдельного функционала сайта реализованы отведённые коллекции, с которыми мы можем работать по правилам ООП.

В данном посту вы рассмотрим возможности использования коллекции оплаты заказа SalePaymentCollection. Давайте создадим объект заказа, с которым мы и будем далее работать.

// используем пространство имён интернет-магазина use BitrixSale; // int $orderId ID заказа $order = SaleOrder::load($orderId); // или так // mixed $orderNumber номер заказа $order = SaleOrder::loadByAccountNumber($orderNumber); 

В переменную $order был помещён объект существующего заказа. Для работы с данными оплаты заказа, обращаемся к коллекции оплаты заказа SalePaymentCollection.

$paymentCollection = $order->getPaymentCollection(); 

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

$paymentCollection->isPaid(); // статус оплаты заказа, true/false $paymentCollection->hasPaidPayment(); // есть ли хотя бы одна оплата, true/false $paymentCollection->getPaidSum(); // общая сумма оплаты $paymentCollection->isExistsInnerPayment(); // оплачен с внутреннего счёта true/false 

Возможности системы позволяют содержать множество записей об оплатах. Это означает что с этими записями мы можем работать так же и в цикле. Каждая итерация цикла будет передавать объект оплаты SalePayment, который даёт возможность работы с данными оплаты.

foreach ($paymentCollection as $payment) { $sum = $payment->getSum(); // сумма к оплате $isPaid = $payment->isPaid(); // статус оплаты true/false $isReturned = $payment->isReturn(); // возврат, true/false $ps = $payment->getPaySystem(); // платежная система (объект SalePaySystemService) $psID = $payment->getPaymentSystemId(); // ID платежной системы $psName = $payment->getPaymentSystemName(); // наименование платежной системы $isInnerPs = $payment->isInner(); // оплата с внутреннего счёта, true/false } 

Как получать данные оплаты мы рассмотрели, теперь самое время попробовать изменить параметры. Для этого мы попробует установить флаг оплаты, и возврата с помощью методов setPaid() и setReturn().

$onePayment = $paymentCollection[0]; $onePayment->setPaid("N"); // отменяем оплату $onePayment->setPaid("Y"); // выставляем оплату $onePayment->setReturn("Y"); // возврат средств // сохранение изменений $order->save(); 

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

$service = SalePaySystemManager::getObjectById($onePayment->getPaymentSystemId()); $context = BitrixMainApplication::getInstance()->getContext(); $service->initiatePay($onePayment, $context->getRequest()); 

Таким образом, при создании заказа создаётся запись оплаты, с неоплаченным статусом. После транзакции покупателем статус оплаты должен меняться для подтверждения операции оплаты. Всё это делается в конкретном интерфейсе сайта. Пользуясь примерами, вы можете работать с оплатами заказа удобным для вас способом.

Настройка обмена выполнена правильно, но обмен все равно проходит некорректно? Рассмотрим типичные проблемы, возникающие в процессе интеграции сайта с 1С, и способы их решения.

Обмен заказами завершен с ошибками

Проблема. При попытке обмена заказов в 1С выходит сообщение:

Выгружено товаров: 1
Выгружено картинок: 1
Выгрузка товаров успешно завершена
Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
Не установлен реквизит «РегионДоставки». Элемент не записан!
Не установлен реквизит «Основная форма оплаты». Элемент не записан!
{Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Произошла ошибка: . По причине:

Не удалось найти/создать контрагента.
Не удалось обработать документы, загруженные с сервера.
Обмен не выполнен.
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!!!

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

Не меняется статус заказа при выгрузке из 1С

Проблема. Не меняется статус заказа при выгрузке из 1С

В соответствие с логикой синхронизации 1С и «1С-Битрикс: Управление сайтом», статус заказа меняется, если из 1С передались дата оплаты либо дата отгрузки товара. Чтобы эти даты попали в XML-файл, который формируется 1С и передаётся на сайт, нужно сформировать и провести нужные документы.

  • В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
  • Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
  • Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
  • Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.

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

Изменения товаров не зарегистрированы. Выгрузка товаров не произведена

Проблема. 1С заполнена и настроена на обмен с «1С-Битрикс: Управление сайтом», который тоже настроен на интеграцию с 1С. При нажатии на кнопку Выполнить обмен сразу появляется сообщение в 1С: Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.

Решение. Возможные ошибки:

  • Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров. Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано.
  • В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
  • Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
    • Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
    • Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в 1С. При обмене выгружаются изменения товаров, произведённые именно в 1С с момента последней выгрузки.

Изменения на сайте не приходят в 1С

Проблема. 1С заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы 1С. Изменения в «1С-Битрикс: Управление сайтом» не приходят в 1С, т.е. якобы на сайте нет изменений.

Решение. На самом деле, изменения есть и они приходят в копию базы 1С. Чтобы изменения отслеживались в оригинале базы 1С, просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».

Как выгрузить каталоги из 1С в разные типы инфоблоков?

Проблема. Как выгрузить каталоги из 1С в разные типы инфоблоков?

Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.

Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.

Затем при настройке импорта в 1С, для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.

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

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("import1");
?>
<?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array(
"IBLOCK_TYPE" => "books",
"SITE_LIST" => array(),
"INTERVAL" => "30",
"GROUP_PERMISSIONS" => array(0 => "1"),
"USE_OFFERS" => "N",
"USE_IBLOCK_TYPE_ID" => "Y",
"SKIP_ROOT_SECTION" => "N",
"ELEMENT_ACTION" => "D",
"SECTION_ACTION" => "D",
"FILE_SIZE_LIMIT" => "204800",
"USE_CRC" => "Y",
"USE_ZIP" => "Y",
"USE_IBLOCK_PICTURE_SETTINGS" => "N",
"GENERATE_PREVIEW" => "Y",
"PREVIEW_WIDTH" => "100",
"PREVIEW_HEIGHT" => "100",
"DETAIL_RESIZE" => "Y",
"DETAIL_WIDTH" => "300",
"DETAIL_HEIGHT" => "300",
"TRANSLIT_ON_ADD" => "Y",
"TRANSLIT_ON_UPDATE" => "Y",
"TRANSLIT_MAX_LEN" => "100",
"TRANSLIT_CHANGE_CASE" => "L",
"TRANSLIT_REPLACE_SPACE" => "_",
"TRANSLIT_REPLACE_OTHER" => "_",
"TRANSLIT_DELETE_REPEAT_REPLACE" => "Y"
),
false
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Не удалось найти вид номенклатуры

Проблема. Не удалось найти вид номенклатуры

В процессе обмена 1С с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.

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

Поле объекта не обнаружено

Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.

В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);

Решение. Проверьте настройки интеграции с 1С, закладка Профили обмена: установлены ли соответствия для полей заказа. Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для 1С.

Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.

  • Возникает ошибка следующего вида:

Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!

Решение. Ошибка скорее всего связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции Выгружать картинки (вкладка Выгрузка товаров в настройке обмена в 1С).

Также можно увеличить размер выделяемой памяти в настройках PHP (параметр memory_limit), для этого следует обратиться к хостинг-провайдеру.

  • Возникает ошибка следующего вида:

Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!

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

Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с 1С — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с 1С.

Произошла ошибка на стороне сервера. Файл не отправлен

В процессе обмена возникает такого вида ошибка:

Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!

Решение. Причины возникновения ошибки могут быть следующие:

  • На компьютере, где установлена 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
  • Некорректно работает функции расширения ZIP, вследствие чего из архива не распаковываются файлы. Для решения возникшей проблемы рекомендуется:
    • Установить последние стабильные версии обновлений модуля интернет-магазина.
    • На время обмена отключить на локальной машине все блокирующее ПО (антивирус, файрволлы и т.д.)
    • Отключить ZIP-сжатие в настройках интеграции с 1С.

Не работает авторизация при обмене данными с 1С

Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:

RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

  • Закомментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:

#<ifmodule mod_rewrite.c="">
# RewriteEngine Off
#</ifmodule>

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

  • В файл bitrix/php_interface/dbconn.php добавьте строки:

$remote_user = $_SERVER["REMOTE_USER"]
? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);

Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом

Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.

При выгрузке каталога из 1С не ставит галочку «уменьшать количество при заказе»

Проблема. При выгрузке каталога из 1C не ставит галочку уменьшать количество при заказе

Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавлении продукта (через событие OnProductAdd):

<?
AddEventHandler("sale", "OnProductAdd", "OnProductAdd");

function OnProductAdd($ID,$Fields)
{
$res=Array("QUANTITY_TRACE"=>'Y);
CCatalogProduct::Update($ID,$res);

}
?>

Возможные причины медленного импорта из 1С

Проблема. Медленный импорт из 1C.

Возможные причины:

Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.

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

Если структура каталога в 1С отличается от каталога на сайте?

Задача: Структура каталога на сайте должна отличаться от структуры в 1C.

Варианты решения:

Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.

Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.

Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.

Ошибка импорта метаданных

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

Выгружено товаров: 1 832
Выгружено картинок: 0
Выгружено предложений: 0
Произошла ошибка на стороне сервера.
Обмен не выполнен
Ответ сервера:
Ошибка импорта метаданных.

Выгрузка товаров завершена с ошибками!!!

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

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

Ошибка импорта метаданных. В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.

Причина. Такая ошибка возникает, когда клиент забывает указать в настройках обмена конкретное соглашение (в настройках 1С), по которому должны выгружаться цены. Соглашение указывается в отборах выгружаемых инфоблоков.

Выгрузка картинок

Проблема. Неполная выгрузка картинок.

Картинки выгружаются из 1С, только при первой полной выгрузке каталога товаров, не важно выгрузка была на в папку на локальном компьютере или на сайт. В последствии картинки выгружаются только новые и измененные.

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

#php #stripe-payments #card

Вопрос:

Я использую API Stripe для оплаты заказов.

Мой план, как правило, заключается в следующем:

  1. Создание платежной формы с элементами полосы
  2. Аутентификация карты (3d secure security SCA) с помощью платежного средства, а затем создание метода оплаты.
  3. Создание объекта Клиента, к которому я прикрепляю способ оплаты и который я определяю как стандартный
 $customer = $this->stripeConnector->updateCustomer($customer->id, [
     'invoice_settings' => [
          'default_payment_method' => $paymentMethod->id,
        ],
   ]);
 
  1. Создание подписки или разового платежа.

Обычно это работает нормально.

Но не для Ордена. Я создаю объект Заказа, следуя документации : https://stripe.com/docs/api/orders/create с элементами заказов и связанным Клиентом

И я плачу его, следуя следующей документации https://stripe.com/docs/api/orders/pay

Итак, просто передав идентификатор заказа (потому что клиент уже связан с заказом).

Но у меня следующая ошибка : Не удается взимать плату с клиента, у которого нет активной карты

Почему? И как я могу «активировать» карту клиента ?

Это пример данных о клиентах, которые у меня есть :

 {
  "id": "cus_JocNLLNhqHuOD6",
  "object": "customer",
  "address": {
    "city": "paris",
    "country": "FR",
    "line1": "5 rue pompidou",
    "line2": null,
    "postal_code": "75000",
    "state": null
  },
  "balance": 0,
  "created": 1625758082,
  "currency": null,
  "default_source": null,
  "delinquent": false,
  "description": null,
  "discount": null,
  "email": "admin@mail.fr",
  "invoice_prefix": "D46F6A15",
  "invoice_settings": {
    "custom_fields": null,
    "default_payment_method": "pm_1JAz8uGgCQgXBLKX2hoxLQHr",
    "footer": null
  },
  "livemode": false,
  "metadata": {
  },
  "name": "admin admin",
  "next_invoice_sequence": 1,
  "phone": null,
  "preferred_locales": [
    "fr"
  ],
  "shipping": null,
  "tax_exempt": "none"
}
 

И мой ответ на платежный метод :

 {
  "id": "pm_1JAz8uGgCQgXBLKX2hoxLQHr",
  "object": "payment_method",
  "billing_details": {
    "address": {
      "city": null,
      "country": null,
      "line1": null,
      "line2": null,
      "postal_code": null,
      "state": null
    },
    "email": null,
    "name": "qsvsf",
    "phone": null
  },
  "card": {
    "brand": "visa",
    "checks": {
      "address_line1_check": null,
      "address_postal_code_check": null,
      "cvc_check": "pass"
    },
    "country": "US",
    "exp_month": 5,
    "exp_year": 2025,
    "fingerprint": "oV7uH07M2JEz7jQm",
    "funding": "credit",
    "generated_from": null,
    "last4": "4242",
    "networks": {
      "available": [
        "visa"
      ],
      "preferred": null
    },
    "three_d_secure_usage": {
      "supported": true
    },
    "wallet": null
  },
  "created": 1625758080,
  "customer": "cus_JocNLLNhqHuOD6",
  "livemode": false,
  "metadata": {
  },
  "type": "card"
}
 

Глядя на документ об оплате объекта заказа, я задаюсь вопросом, следует ли мне вместо этого использовать опцию «источник» и, следовательно, использовать объект источника вместо метода оплаты. Но проблема в том, что исходный объект устарел в пользу метода оплаты в пользу 3d secure, поэтому я должен его использовать.

Комментарии:

1. Когда вы создаете способ оплаты, каков его результирующий атрибут типа? stripe.com/docs/api/payment_methods/…

2. Это атрибут типа «карта». Я обновил свой первый пост с ответом на платежный метод

3. Хммм. Вы дважды проверяли, что при создании и оплате заказа вы также попадаете в среду тестирования/песочницы?

4. Да, да, он хорошо использует тестовую среду, не беспокойтесь об этом. Кроме того, если я переключусь с использованием исходного объекта для подачи карты, а не метода оплаты, это сработает, но мне больше не нужно использовать Исходный объект, так как он устарел и не поддерживает аутентификацию SCA 3d secure. Мы обязаны пройти процедуру оплаты. Я не знаю, есть ли где-то дополнительная опция, которую можно куда-то поместить, это очень странно

5. добавлен подробный ответ, вы используете Заказы, которые являются устаревшим API и поддерживают только sources параметры для клиента и не поддерживают методы оплаты.

Ответ №1:

Заказы-это давно устаревший API Stripe, поэтому я бы рекомендовал отказаться от него, перейдя к платежным поручениям или одноразовым счетам.

Поскольку это устаревший API, он работает только с картами/источниками, а не с методами оплаты.

Прямо сейчас ваша интеграция прикрепляет метод оплаты к вашему Клиенту.

Заказы не ищут способы оплаты вашего клиента, а вместо этого просматривают sources: параметры вашего клиента.

Заказы также не поддерживают SCA, поэтому, если платеж требует аутентификации, это будет выглядеть как отклонение и не даст вам функции жизненного цикла аутентификации, которые предоставляют вам PaymentIntents.

Вот почему это работает, как вы сказали, когда вы сохраняете объект «Источник» под именем Клиента source: .

Правильный подход состоял бы в том, чтобы отказаться от использования устаревших объектов Карты/источника и API заказов и интегрировать методы оплаты (которые вы уже интегрировали) и платежные документы, счета или чеки.

Комментарии:

1. Действительно? Так плохо… но вдруг я все еще могу использовать объекты продукта, связанные с объектами Sku? Я имею в виду, что если я создам объект продукта «Футболка» и несколько объектов артикулов, связанных с этим продуктом, с разными цветами и размерами, запасами, могу ли я затем использовать эти артикулы со счетом, методом оплаты или платежным средством в качестве элемента заказа?

2. Артикулы не рекомендуются, но вместо этого рекомендуются цены, вы можете создавать цены на продукты. Затем вы можете создать элемент счета-фактуры для Клиента, используя эту цену, и отправить Счет-фактуру Клиенту по электронной почте. «Страница размещенного счета» поддерживает SCA. Или создайте сеанс проверки для этого Клиента (в качестве платежной страницы на вашем веб-сайте), который также поддерживает SCA.

3. Итак, если я правильно понимаю, это больше не зависит от Stripe для управления запасами и товарами, а от нас, чтобы мы все делали в нашей собственной базе данных и во время оплаты все рассчитывали сами ?

4. да, это правильно, поскольку заказы устарели, вы бы обрабатывали запасы/запасы/и т. Д. На стороне вашего приложения

Не меняется статус при оплате

Внимание!
Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.


Не меняется статус при оплате

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

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

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

Внутренний счет пользователя не пополняется, но деньги на счет приходят

 

Михаил Базаров

Администратор

Сообщений: 1746
Баллов: 999999
Рейтинг:

1

Регистрация: 07.11.2013

#3

Это нравится:0Да/0Нет

11.02.2020 18:04:45

Цитата
Adrian Lazarov написал:
При оплате через яндекс кассу, в админке не меняется стастус на выполнен, постоянно весит статус «Принят, ожидается оплата» хотя все оплачено и средства поступили на счет, в чем может быть причина?

Проверьте вот эти настройки в модуле Интернет-магазина
Плюс, в настройках платежной систему- она должна отдать успешность оплаты на страницу с магазином (зависит от платежной системы)

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 18.02.40.png (592.83 КБ)

Цитировать   Имя

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

#4

Это нравится:0Да/0Нет

11.02.2020 19:54:04

В настройках стоят вот эти параметры
в яндекс ответ настроен

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 19.39.12.png (23.64 КБ)

Цитировать   Имя

Поблагодарить и поддержать!

Поддержать выпуски видео уроков, поблагодарить за полезную инструкцию или заметку можно через:

Юманей

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.

Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт
Просмотров: 17339
При разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретит…

Показать только один тип цены в каталоге Битрикс
Просмотров: 14270
Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на с…

Открытие мобильного приложения Apache Cordova по ссылке
Просмотров: 897
Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: п…

Как вывести свойства инфоблока по отдельности и немного плюшек не в т…
Просмотров: 106976
Если у инфоблока несколько свойств- то при выводе их всех, скажем в детальном описании нов…

Вывести компонент новостей на страницу в Битрикс
Просмотров: 64310
Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, ч…

Автоматическая загрузка каталогов из csv файлов в Битрикс
Просмотров: 11130
Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков.
В…

Базовая защита «Битрикс виртуальная машина» от DDoS атак.
Просмотров: 5534
Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, …

Изменить размер картинок на лету в битрикс
Просмотров: 47677
Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздел…

Сортировка элементов по индексу сортировки значений типа список
Просмотров: 11015
Внутри любого компонента есть заранее заложенные поля для сортировки элементов. МОжно сорт…

Дополнительные параметры в меню Битрикс
Просмотров: 19949
Иногда нужно присвоить какой-то функционал к конкретному пункту меню в битрикс. Например о…

Отсортировать элементы в Битрикс по свойству привязка к разделам
Просмотров: 28399
При создании достаточно сложных интернет-магазинов на Битрикс, иногда встает задача помимо…

Вывод элементов с помощью API битрикс
Просмотров: 23189
Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Нап…

Подключение SSL на Битрикс виртуальная машина
Просмотров: 12480
С первого января 2017 года, наличие безопасного соединения HTTPS становится практически об…

Вывести товары из того же раздела в карточке товара
Просмотров: 18358
Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки…

Умный фильтр во всплывающей панели на мобильных.
Просмотров: 1869
Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень кра…

Установить цену товара из свойства инфоблока
Просмотров: 9287
На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока…

Дополнительные картинки в новостях Битрикс, почти фотогалерея.
Просмотров: 48722
Частенько стоит задача, по мимо стандартных «Картинка для анонса» и «Деталь…

Старые шаблоны битрикс для простой верстки
Просмотров: 17486
Новые версии типового интернет-магазина, который идет в комплекте с Битрикс (от 12 версии …

Получить множественное пользовательское поле раздела. Значения множес…
Просмотров: 618
Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно п…

Создание раздела инфоблока при регистрации пользователя в Битрикс
Просмотров: 8274
Например вам нужно выводить информацию исключительно для определенного пользователя. Само …

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

Статусы позволяют охарактеризовать не только состояние заказа в целом, но и отдельно состояние отгрузки и доставки товаров из заказа. Поэтому статусы делятся на 2 типа: заказ и доставка.

Типы статусов заказа в Битрикс

Существуют особые статусы заказов и отгрузок заказов, удаление которых невозможно:

  1. N — начальный статус, который присваивается заказу при создании. По умолчанию статус называется «Принят».
  2. F — финальный статус, который присваивается заказу после выполнения, то есть оплаты и доставки. По умолчанию статус называется «Выполнен».
  3. DN — начальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Ожидает обработки».
  4. DF — финальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Отгружен».

Настройка статусов

Чтобы настроить статусы, перейдите на страницу «Магазин», затем выберите раздел «Настройки», перейдите в «Статусы» и кликните на «Статусы заказа».

Форма редактирования статусов имеет вид:

Форма редактирования статусов заказа в Bitrix

«1С-Битрикс: Управление сайтом» предлагает стандартный набор этапов, который сформирован по умолчанию.

Рекомендуемые решения

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

У заполнения полей формы есть свои нюансы:

  1. Уникальный код статуса задается одной или двумя латинскими буквами.
  2. Выбрать нужный тип — «Заказ» или «Доставка» можно в поле «Тип статуса».
  3. Задать относительный вес статуса можно в поле «Сортировка». Таким образом вы определите положение конкретного статуса в списке других статусов.
  4. Чтобы отправить покупателю письмо о переводе заказа в определенный статус, воспользуйтесь опцией «Отправлять почтовое уведомление». Как сгенерировать письмо? Для этого существуют шаблоны. Чтобы создать или отредактировать шаблон, пройдите по ссылке «Почтовый шаблон статуса».
  5. Отдельно для каждого языка, определенного в системе, задаются Название и Описание.
  6. Чтобы группа пользователей могла попасть в секцию «Право на доступ», ее уровень в настройках модуля «Интернет-магазин» должен быть не ниже, чем «Обработка заказов». Определить уровень доступа к заказам для той или иной группы можно при помощи выпадающего списка. Что делать, если в списке нет какой-либо группы? Пройдите по ссылке «Группы пользователей» и назначьте этой группе в настройках модуля требуемое право доступа, которое должно быть не ниже «Обработки заказов». Назначив право доступа, вернитесь к настройке статуса. Теперь вы можете предоставить добавленной группе право доступа в рамках данного статуса.
  7. Добавлять статусы заказов можно через «Администрирование».

Чтобы добавить новый промежуточный статус «Подтверждение заказа», выберите «Добавить статус».

Как получить текущий статус заказа? Воспользуйтесь следующим методом — order->getField(‘STATUS_ID’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘STATUS_ID’); // N (Принят, ожидается оплата)

Как изменить статус? Для изменения статуса предназначен такой метод — CSaleOrder::StatusOrder().

order_id = 5;

CSaleOrder::StatusOrder(order_id, ‘N’); // Принят, ожидается оплата

CSaleOrder::StatusOrder(order_id, ‘F’); // Выполнен

Список статусов расположен на странице «Магазин» — «Настройки» — «Статусы».

Рекомендуемые решения

Чтобы заказ получил статус «Оплачен», воспользуйтесь методом CSaleOrder::PayOrder().

order_id = 5;

CSaleOrder::PayOrder(order_id, «Y»); // статус оплачен (Y/N)

Есть и другой метод — CSaleOrder::Update(), но предыдущий вариант предпочтительнее, поскольку в нем выполняются обработчики событий.

Как присвоить заказу статус «Отменен»? Для отмены воспользуйтесь методом order->getField(‘CANCELED’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘CANCELED’); // заказ отменён (Y / N)

order->getField(‘EMP_CANCELED_ID’); // ИД пользователя, отменивший заказ

order->getField(‘DATE_CANCELED’)->toString(); // дата отмены (05.01.2020 21:11:10)

order->getField(‘REASON_CANCELED’); // причина отмены

Теперь вы знаете, как работать со статусами заказов в интернет-магазине. Удачи вашему бизнесу!

В обновлённом ядре Bitrix D7 функционал работы с заказами был существенно изменён. Немного ранее мы рассматривали работу со свойствами заказа посредством использования возможностей обновленного ядра D7. В данном посту мы поговорим про работу с функционалом оплаты заказов через API.

Об этом уже говорилось на нашем сайте, и не будет лишним повторить, что в ядре D7 реализована концепция ORM, свойственная для объектно-ориентированных языков программирования. Эта концепция включает в себя такое понятие как «коллекция», которая представляет из себя «умный» массив. Работа с ним оптимизирует групповые операции с объектами одного типа. Так к примеру, для реализации отдельного функционала сайта реализованы отведённые коллекции, с которыми мы можем работать по правилам ООП.

В данном посту вы рассмотрим возможности использования коллекции оплаты заказа SalePaymentCollection. Давайте создадим объект заказа, с которым мы и будем далее работать.

// используем пространство имён интернет-магазина
use BitrixSale;
// int $orderId ID заказа
$order = SaleOrder::load($orderId);
// или так
// mixed $orderNumber номер заказа
$order = SaleOrder::loadByAccountNumber($orderNumber);

В переменную $order был помещён объект существующего заказа. Для работы с данными оплаты заказа, обращаемся к коллекции оплаты заказа SalePaymentCollection.

$paymentCollection = $order->getPaymentCollection();

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

$paymentCollection->isPaid(); // статус оплаты заказа, true/false
$paymentCollection->hasPaidPayment(); // есть ли хотя бы одна оплата, true/false
$paymentCollection->getPaidSum(); // общая сумма оплаты
$paymentCollection->isExistsInnerPayment(); // оплачен с внутреннего счёта true/false

Возможности системы позволяют содержать множество записей об оплатах. Это означает что с этими записями мы можем работать так же и в цикле. Каждая итерация цикла будет передавать объект оплаты SalePayment, который даёт возможность работы с данными оплаты.

foreach ($paymentCollection as $payment) {
$sum = $payment->getSum(); // сумма к оплате
$isPaid = $payment->isPaid(); // статус оплаты true/false
$isReturned = $payment->isReturn(); // возврат, true/false
$ps = $payment->getPaySystem(); // платежная система (объект SalePaySystemService)
$psID = $payment->getPaymentSystemId(); // ID платежной системы
$psName = $payment->getPaymentSystemName(); // наименование платежной системы
$isInnerPs = $payment->isInner(); // оплата с внутреннего счёта, true/false
}

Как получать данные оплаты мы рассмотрели, теперь самое время попробовать изменить параметры. Для этого мы попробует установить флаг оплаты, и возврата с помощью методов setPaid() и setReturn().

$onePayment = $paymentCollection[0];
$onePayment->setPaid("N"); // отменяем оплату
$onePayment->setPaid("Y"); // выставляем оплату
$onePayment->setReturn("Y"); // возврат средств
// сохранение изменений
$order->save();

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

$service = SalePaySystemManager::getObjectById($onePayment->getPaymentSystemId());
$context = BitrixMainApplication::getInstance()->getContext();
$service->initiatePay($onePayment, $context->getRequest());

Таким образом, при создании заказа создаётся запись оплаты, с неоплаченным статусом. После транзакции покупателем статус оплаты должен меняться для подтверждения операции оплаты. Всё это делается в конкретном интерфейсе сайта. Пользуясь примерами, вы можете работать с оплатами заказа удобным для вас способом.

Настройка обмена выполнена правильно, но обмен все равно проходит некорректно? Рассмотрим типичные проблемы, возникающие в процессе интеграции сайта с 1С, и способы их решения.

Обмен заказами завершен с ошибками

Проблема. При попытке обмена заказов в 1С выходит сообщение:

Выгружено товаров: 1
Выгружено картинок: 1
Выгрузка товаров успешно завершена
Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
Не установлен реквизит «РегионДоставки». Элемент не записан!
Не установлен реквизит «Основная форма оплаты». Элемент не записан!
{Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Произошла ошибка: . По причине:

Не удалось найти/создать контрагента.
Не удалось обработать документы, загруженные с сервера.
Обмен не выполнен.
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!!!

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

Не меняется статус заказа при выгрузке из 1С

Проблема. Не меняется статус заказа при выгрузке из 1С

В соответствие с логикой синхронизации 1С и «1С-Битрикс: Управление сайтом», статус заказа меняется, если из 1С передались дата оплаты либо дата отгрузки товара. Чтобы эти даты попали в XML-файл, который формируется 1С и передаётся на сайт, нужно сформировать и провести нужные документы.

  • В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
  • Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
  • Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
  • Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.

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

Изменения товаров не зарегистрированы. Выгрузка товаров не произведена

Проблема. 1С заполнена и настроена на обмен с «1С-Битрикс: Управление сайтом», который тоже настроен на интеграцию с 1С. При нажатии на кнопку Выполнить обмен сразу появляется сообщение в 1С: Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.

Решение. Возможные ошибки:

  • Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров. Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано.
  • В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
  • Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
    • Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
    • Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в 1С. При обмене выгружаются изменения товаров, произведённые именно в 1С с момента последней выгрузки.

Изменения на сайте не приходят в 1С

Проблема. 1С заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы 1С. Изменения в «1С-Битрикс: Управление сайтом» не приходят в 1С, т.е. якобы на сайте нет изменений.

Решение. На самом деле, изменения есть и они приходят в копию базы 1С. Чтобы изменения отслеживались в оригинале базы 1С, просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».

Как выгрузить каталоги из 1С в разные типы инфоблоков?

Проблема. Как выгрузить каталоги из 1С в разные типы инфоблоков?

Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.

Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.

Затем при настройке импорта в 1С, для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.

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

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("import1");
?>
<?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array(
"IBLOCK_TYPE" => "books",
"SITE_LIST" => array(),
"INTERVAL" => "30",
"GROUP_PERMISSIONS" => array(0 => "1"),
"USE_OFFERS" => "N",
"USE_IBLOCK_TYPE_ID" => "Y",
"SKIP_ROOT_SECTION" => "N",
"ELEMENT_ACTION" => "D",
"SECTION_ACTION" => "D",
"FILE_SIZE_LIMIT" => "204800",
"USE_CRC" => "Y",
"USE_ZIP" => "Y",
"USE_IBLOCK_PICTURE_SETTINGS" => "N",
"GENERATE_PREVIEW" => "Y",
"PREVIEW_WIDTH" => "100",
"PREVIEW_HEIGHT" => "100",
"DETAIL_RESIZE" => "Y",
"DETAIL_WIDTH" => "300",
"DETAIL_HEIGHT" => "300",
"TRANSLIT_ON_ADD" => "Y",
"TRANSLIT_ON_UPDATE" => "Y",
"TRANSLIT_MAX_LEN" => "100",
"TRANSLIT_CHANGE_CASE" => "L",
"TRANSLIT_REPLACE_SPACE" => "_",
"TRANSLIT_REPLACE_OTHER" => "_",
"TRANSLIT_DELETE_REPEAT_REPLACE" => "Y"
),
false
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Не удалось найти вид номенклатуры

Проблема. Не удалось найти вид номенклатуры

В процессе обмена 1С с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.

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

Поле объекта не обнаружено

Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.

В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);

Решение. Проверьте настройки интеграции с 1С, закладка Профили обмена: установлены ли соответствия для полей заказа. Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для 1С.

Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.

  • Возникает ошибка следующего вида:

Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!

Решение. Ошибка скорее всего связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции Выгружать картинки (вкладка Выгрузка товаров в настройке обмена в 1С).

Также можно увеличить размер выделяемой памяти в настройках PHP (параметр memory_limit), для этого следует обратиться к хостинг-провайдеру.

  • Возникает ошибка следующего вида:

Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!

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

Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с 1С — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с 1С.

Произошла ошибка на стороне сервера. Файл не отправлен

В процессе обмена возникает такого вида ошибка:

Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!

Решение. Причины возникновения ошибки могут быть следующие:

  • На компьютере, где установлена 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
  • Некорректно работает функции расширения ZIP, вследствие чего из архива не распаковываются файлы. Для решения возникшей проблемы рекомендуется:
    • Установить последние стабильные версии обновлений модуля интернет-магазина.
    • На время обмена отключить на локальной машине все блокирующее ПО (антивирус, файрволлы и т.д.)
    • Отключить ZIP-сжатие в настройках интеграции с 1С.

Не работает авторизация при обмене данными с 1С

Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:

RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

  • Закомментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:

#<ifmodule mod_rewrite.c="">
# RewriteEngine Off
#</ifmodule>

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

  • В файл bitrix/php_interface/dbconn.php добавьте строки:

$remote_user = $_SERVER["REMOTE_USER"]
? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);

Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом

Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.

При выгрузке каталога из 1С не ставит галочку «уменьшать количество при заказе»

Проблема. При выгрузке каталога из 1C не ставит галочку уменьшать количество при заказе

Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавлении продукта (через событие OnProductAdd):

<?
AddEventHandler("sale", "OnProductAdd", "OnProductAdd");

function OnProductAdd($ID,$Fields)
{
$res=Array("QUANTITY_TRACE"=>'Y);
CCatalogProduct::Update($ID,$res);

}
?>

Возможные причины медленного импорта из 1С

Проблема. Медленный импорт из 1C.

Возможные причины:

Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.

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

Если структура каталога в 1С отличается от каталога на сайте?

Задача: Структура каталога на сайте должна отличаться от структуры в 1C.

Варианты решения:

Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.

Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.

Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.

Ошибка импорта метаданных

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

Выгружено товаров: 1 832
Выгружено картинок: 0
Выгружено предложений: 0
Произошла ошибка на стороне сервера.
Обмен не выполнен
Ответ сервера:
Ошибка импорта метаданных.

Выгрузка товаров завершена с ошибками!!!

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

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

Ошибка импорта метаданных. В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.

Причина. Такая ошибка возникает, когда клиент забывает указать в настройках обмена конкретное соглашение (в настройках 1С), по которому должны выгружаться цены. Соглашение указывается в отборах выгружаемых инфоблоков.

Выгрузка картинок

Проблема. Неполная выгрузка картинок.

Картинки выгружаются из 1С, только при первой полной выгрузке каталога товаров, не важно выгрузка была на в папку на локальном компьютере или на сайт. В последствии картинки выгружаются только новые и измененные.

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

 

Пользователь 162721

Заглянувший

Сообщений: 20
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 25.02.2013

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

 

Пользователь 34550

Эксперт

Сообщений: 1579
Баллов: 128
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 12.12.2008

платежные системы проверили? все есть и привязано к службам доставки?

 

Пользователь 162721

Заглянувший

Сообщений: 20
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 25.02.2013

 

Пользователь 227113

Заглянувший

Сообщений: 6
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 22.11.2013

Пересоздайте способы оплаты и доставки. С новыми компонент работает нормально.

 

Пользователь 44828

Эксперт

Сообщений: 1132
Баллов: 198
Авторитет:

0

Рейтинг пользователя:

2

Регистрация: 01.07.2009

#5

0

06.06.2016 14:37:06

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

Нет платежных систем для оплаты

 

Пользователь 418447

Посетитель

Сообщений: 63
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 25.11.2015

поставил 30 дневную пробную версию магазина, все работает ОК

однако при попытке оформить заказ выдает «Нет платежных систем для оплаты» хотя платежные системы есть (квитанция Сбера), валюта RUB

в чем может быть дело и куда копать? я в этом вопросе еще новичок  :|
поискал в инете — нет такой проблемы ни у кого!

спасибо

 

Пользователь 418447

Посетитель

Сообщений: 63
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 25.11.2015

получил пробный ключ /bitrix/admin/update_system.php?lang=ru
появилась доставка )
но платежки не работают все равно!

 

Пользователь 418447

Посетитель

Сообщений: 63
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 25.11.2015

так )) ладно, сам задал вопрос, сам ответил

выделил и сохранил способ доставки в платежной системе и она заработала

 

Пользователь 412850

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2015

После обновления пропала выводит ошибку  в блоке оплаты и пропал блок доставки. Но если ввести местоположение заново, то все работает

 

Пользователь 192823

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 27.05.2013

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

 

Пользователь 1666821

Заглянувший

Сообщений: 6
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 10.01.2018

#6

0

15.11.2021 14:33:33

Всем привет из 2021го.
А что делать, если ограничения всё же нужны?  

При оформлении заказа не отображаются платежные системы и службы доставки

ID статьи: 27
, создана 19 фев 2016

На странице оформления заказа не выводится информация о платежных системах и службах доставки.


Решение

За отображение информации о службах доставки и платежных системах отвечает поле «Местоположение».

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

Значения свойства «Местоположение» задаются в настройках свойствах заказа:

Магазин → Настройки → Свойства заказа → Список свойств

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

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

Для этого переходим свойства каждого из них и задаем значение по умолчанию из выпадающего списка. 

В нашем случае местоположение по умолчанию — Московская область, Москва. Сохраняем изменения.

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


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

Как проверить оплату

Для начала создайте сделку и укажите себя в качестве контакта.

01.jpg

Вы можете отправить себе ссылку на оплату в чат или через принять оплату.

02.jpg

Подробнее о том, как отправить ссылку на оплату в чат или через принять оплату, читайте в статьях: Приём платежей в чате с клиентом и Как использовать отправку СМС из Битрикс24.

В примере мы рассмотрим получение ссылки на оплату через Принять оплату.

03.jpg

Выберите товар или создайте новый и нажмите кнопку Отправить.

04.jpg

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

012 011

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

05.jpg

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

06.jpg

Подробнее о том, как подключить робочеки или онлайн кассы читайте в статьях: Подключение Робочеков вместо кассы и Онлайн-кассы в Битрикс24.

Если касса не настроена, вам нужно выбить чек самостоятельно! Подробнее вы можете прочитать в статье Как работать с офлайн-кассой.

Проверьте таймлайн – в нём будет указана вся информация о ходе сделки и в нём не должно быть ошибок.

07.jpg

Если у вас возникла ошибка:

08.jpg

  • Сообщите о ней провайдеру вашей кассы или напишите нам в техподдержку.
  • Также вы можете оставить заявку на внедрение партнером.

Спасибо, помогло!

Спасибо :)

Необязательно:

Оставить отзыв о статье

Уточните, пожалуйста, почему:

Это не то, что я ищу

Очень сложно и непонятно

Оставить отзыв о статье

Для подключения к службе доставки СДЭК необходимо заключить договор (https://www.cdek.ru/ru/contract). Номер договора одновременно является логином для входа в личный кабинет. В личном кабинете в разделе интеграция нам потребуется информация о текущем ключе — идентификатор и пароль.

cdek1.jpg

На сайте под управлением 1С-Битрикс устанавливаем модуль Интеграция со СДЭК от Ипол:
https://marketplace.1c-bitrix.ru/solutions/ipol.sdek/

В настройках модуля на вкладке FAQ подробно описан процесс подключения, поделимся своим опытом настройки.

Основная проблема после всех проведенных настроек модуля СДЭК – 1С-Битрикс – это разница в ценах доставки для клиента при оформлении заказа на сайте и для магазина при отправке заявки на доставку. Здесь нужно иметь в виду, что стоимость доставки по договору с учетом страховки и прочих условий может отличаться. Для выравнивания цен можно воспользоваться полем наценка в соответствующем профиле доставки. Наценка может быть как положительной, так и отрицательной:

cdek2.jpg

Если в накладной СДЭК в поле особые отметки, необходимо добавить свой текст, то это можно сделать, установив в настройках модуля в поле комментарий значение: Менеджера или Покупателя.

cdek3.jpg

cdek4.jpg

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

cdek5.jpg

Если при выборе доставки в СДЭК на странице оформления заказа возникла ошибка При расчете заказа произошла ошибка

cdek6.jpg

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

В форме отправки заявки появляется ошибка Ошибка авторизации (ERR_AUTH)

cdek7.jpg

Вам необходимо обратиться в техническую поддержку СДЭК на почту integrator@cdek.ru, либо к вашему персональному менеджеру в СДЭК с просьбой проверить какие версии API подключены по вашему аккаунту. Попросите подключить вам API 1.5

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

cdek8.jpg

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

cdek9.jpg

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

Проверьте логи, если там есть такие записи:

Ошибка сохранения информации о ПВЗ. Проверьте права на папку /bitrix/js/ipol.sdek.

Кроме прав проверьте еще место на диске в хостинг панели – возможно оно там почти закончилось.

В отправляемой в СДЭК заявке и накладной пустое поле к оплате за товары

cdek12.jpg

Модуль при подготовке списка товаров при отправке заявки учитывает флаг CAN_BUY (как и другие компоненты и модули), исключая такие товары если чекбокс не установлен. Ошибка связана с остатками по товарам, т.е. это не ошибка модуля.

Модуль позволяет подключить несколько кабинетов. Например, основной кабинет может использоваться для доставки по России, а дополнительный для доставки по Казахстану. В таком случае нужно оформить новый договор со СДЭК для  Казахстана, в личном кабинете получить идентификатор и пароль, добавить их в настройках модуля (кнопка Аккаунты).

cdek10.jpg

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

  1. Добавить на сайте валюту тенге [KZT] (настройки (Битрикс) / Валюты / Список валют)
  2. Задать курс для этой валюты (настройки (Битрикс) / Валюты / Курсы валют)
  3. На вкладке Города добавить валюту для Казахстана – тенге.

    cdek11.jpg

  4. В настройках службы доставки СДЭК для России проверяем, что в поле страны установлена Россия, а не ВСЕ.
  5. Создаем новую службу доставки СДЭК, называем ее к примеру СДЭК (Казахстан). В настройках указываем страна Казахстан. В поле валюта выбираем RUB (рубль)! Также указываем RUB (рубль) в настройках профилей вновь добавленной службы.

Если вы не нашли ответа на свой вопрос в этой статье, вы можете обратиться к разработчику модуля по электронной почте info@ipol.ru. Сразу в письме укажите номер договора со СДЭК. Отвечают ребята довольно быстро, иногда в течение часа. Могут запросить доступы к сайту.

Статья актуальна для версии магазина: 10.0

Другие версии

| 11.0mobile
| 8.0
| 6.0
| 5.0

При оформлении заказа на финальном этапе после выбора метода доставки может возникать ошибка: «нет доступных методов оплаты» (рис.1).

Нет доступных методов оплаты
Рисунок 1.

Возможные причины возникновения данной ошибки.

1) Проверьте, созданы ли у вас методы оплаты.

Для этого перейдите в пункт меню «Настройки-Оплата». Если нет ни одного метода или все методы неактивны, то создайте или активируйте. Подробнее как это сделать и какие платежные сервисы есть можете ознакомиться здесь.

2) Проверить привязку города к методу оплаты. Возможно, метод оплаты привязан к конкретному городу, например, Москва (рис.2), а клиент зашел на ваш сайт с другого города. Соответственно для него метод оплаты доступен не будет.

Настройки метода доставки
Рисунок 2.

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

3) Проверьте, возможно, у Вас нет привязки методов оплаты к методам доставки.Подробнее о том, как это сделать и проверить можете ознакомиться здесь.

4) Проверьте тип метода оплаты.

Если метод оплаты имеет тип «Оплата при получении», или «PickPoint» (рис.3,4)

Оплата при получении
Рисунок 3.

PickPoint
Рисунок 4.

То проверьте создан ли один из методов доставки: Edost, СДЭК, Boxberry, Grastin и Shiptor, поскольку типы оплаты «Наложенный платёж» и «PickPoint» создаются и работают только при привязке к одному из указанных методов доставки (PickPoint связывается с Edost).

В этом случае, либо необходимо подключить соответсвующие методы доставки (Edost, СДЭК, Boxberry, Grastin и Shiptor), либо изменить тип оплаты, например, наличные.

С инструкциями по настройке методов доставки можно ознакомиться здесь.

Готово. Мы рассмотрели причины возникновения ошибки «нет доступных методов оплаты».

Тэги: Ошибка «нет доступных методов оплаты», ошибка, нет оплаты, нет доступных методов оплаты, оплата

подскажите пожалуйста в чем может быть проблема.

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

  2. В init.php написал обработчик для события
    OnSaleComponentOrderOneStepDelivery чтобы удалить все доставки и
    оставить только свою если у товара есть определенный флаг.

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

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

В чем может быть проблема? (левых событий в коде не нашел для платежных систем, компонент тоже не кастомный)

UPD: из того что заметил: если не помечать доставку выбранной а потом выбрать, то произойдет refresh на AJAX запросе и тогда службы строятся верно. Но как на back-end сделать чтобы доставка была уже выбрана та, которая нужна? Я просто ставит Checked = ‘Y’ в массиве доставок.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
 
use BitrixMainLocalizationLoc;
 
BitrixMainLoader::includeModule('sale');
 
$publicMode = $adminPage->publicMode;
$selfFolderUrl = $adminPage->getSelfFolderUrl();
 
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
 
IncludeModuleLangFile(__FILE__);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
 
$sTableID = "tbl_sale_pay_system";
$instance = BitrixMainApplication::getInstance();
$context = $instance->getContext();
$request = $context->getRequest();
 
$oSort = new CAdminSorting($sTableID, "ID", "asc");
$lAdmin = new CAdminUiList($sTableID, $oSort);
 
$listPersonType = array();
$personTypeQueryObject = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array());
while ($personType = $personTypeQueryObject->GetNext())
{
    $listPersonType[$personType["ID"]] = $personType["NAME"]." (".implode(", ", $personType["LIDS"]).")";
}
 
$filterFields = array(
    array(
        "id" => "NAME",
        "name" => GetMessage("SALE_NAME"),
        "filterable" => "%",
        "quickSearch" => "%"
    ),
    array(
        "id" => "ACTIVE",
        "name" => GetMessage("SALE_F_ACTIVE"),
        "type" => "list",
        "items" => array(
            "Y" => GetMessage("SALE_YES"),
            "N" => GetMessage("SALE_NO")
        ),
        "filterable" => "",
        "default" => true
    ),
    array(
        "id" => "PERSON_TYPE_ID",
        "name" => GetMessage("SALE_F_PERSON_TYPE"),
        "type" => "list",
        "items" => $listPersonType,
        "filterable" => "",
        "params" => array("multiple" => "Y"),
    )
);
 
$filter = array();
 
$lAdmin->AddFilter($filterFields, $filter);
 
$personTypeId = [];
if (!empty($filter["PERSON_TYPE_ID"]))
{
    $personTypeId = $filter["PERSON_TYPE_ID"];
    unset($filter["PERSON_TYPE_ID"]);
}
 
if (($ids = $lAdmin->GroupAction()) && $saleModulePermissions >= "W")
{
    if ($request->get('action_target')=='selected')
    {
        $ids = array();
        $dbRes = BitrixSaleInternalsPaySystemActionTable::getList(
            array(
                'select' => array('ID'),
                'filter' => $filter,
                'order' => array(ToUpper($by) => ToUpper($order))
            )
        );
 
        while ($arResult = $dbRes->fetch())
            $ids[] = $arResult['ID'];
    }
 
    foreach ($ids as $id)
    {
        if ((int)$id <= 0)
            continue;
 
        switch ($_REQUEST['action'])
        {
            case "delete":
                $dbRes = BitrixSaleInternalsPaymentTable::getList(array('filter' => array('PAY_SYSTEM_ID' => $id)));
                if ($dbRes->fetch())
                {
                    $lAdmin->AddGroupError(Loc::getMessage("SALE_DELETE_ERROR"), $id);
                    continue;    [B]Ошибка здесь[/B]
                }

Общее

  • Проверьте, что во вкладке “Настройка” нет сообщения, что отсутствуют данные о ПВЗ
  • Можно восстановить ПВЗ из резервной копии. Для этого необходимо включить режим отладки в сервисных свойствах модуля, после чего во вкладке “Отладка” запустить восстановление списка ПВЗ.

Рядом с ошибкой выводится дата ее возникновения. Если она произошла единожды и давно — нет причин для беспокойства: список ПВЗ синхронизируется раз в сутки, поэтому он наверняка уже восстановился. Главное — чтобы не возникала ошибка на странице настроек модуля об отсутствии данных о ПВЗ. Тогда необходимо просинхронизировать список ПВЗ вручную (соответствующая кнопка появится в оповещении).

Для решения проблемы необходимо провести следующую проверку:

  1. Запустить синхронизацию модуля в его настройках (Настройки -> Сервисные свойства -> Синхронизировать) для загрузки списка постаматов.
  2. В службу доставки модуля добавить профиль Постамат (Магазин -> Настройки -> Службы доставки -> Доставка СДЭК модуля ipol.sdek -> Профили -> Добавить профиль). Это актуально для Битрикса версии 15 и выше.
  3. Проверить, что в настройках модуля, раздел “Настройки тарифов и доп. услуг.” не отключились тарифы постаматов (361, 363, 366 и прочие необходимые вам), также их следует показывать в форме отправки заявки.
  4. Нелишним будет сбросить кэш модуля и Битрикса.
  5. Учтите, что каждый постамат имеет определенные ограничения по размеру ячейки. Некоторые точки могут не отображаться из-за того, что размер заказа слишком большой.

Проблемы со стоимостями доставки

Внимательно ознакомьтесь с пунктом FAQ “Особенности расчета стоимости доставки”: в нем детально расписано, как считается вес и габариты товара. Если при проверке в личном кабинете задаются те же габариты, что и в контрольном заказе — обратитесь в техподдержку (support@ipolh.com), указав следующие данные:

  • Номер договора со СДЭК
  • Скриншот (снимок экрана) личного кабинета СДЭКа с расчетом (через Новый заказ, чтобы были видны габариты и рассчитанные тарифы)
  • Ссылку на контрольный товар (для габаритов которого вы проверяете доставку в ЛК)
  • Доступы к админке сайта

Внимательно ознакомьтесь с пунктом FAQ “Особенности расчета стоимости доставки”: в нем детально расписано, как считается вес и габариты товара. Если при создании заказа в личном кабинете стоимости доставки отличаются от рассчитанными модулем — причина в несоблюдении рассчитанных габаритов проверяющим (или модификациях стоимости доставки).

Чтобы включить страхование товара, воспользуйтесь опцией “Прибавлять к стоимости доставки величину страховки”. Учтите, что она будет добавлена к исходной стоимости доставки (полученной из личного кабинета), без разделения на стоимость доставки и стоимость страховки. Так же имейте в виду, что модуль не поставляет особых платежных систем для работы со службами доставки СДЭКа.

Настройка “Ставка НДС на доставку по умолчанию” влияет только на форму оформления заявки. Для управления ставками НДС конкретной службы доставки перейдите в настройки службы доставки.

Картинка

НДС задается в блоке “Общие настройки”

Проблемы в оформлении заказа

  • Новый компонент : В параметрах компонента оформления заказа (sale.order.ajax) необходимо поставить опцию “Когда рассчитывать доставки с внешними системами расчета” в “Рассчитывать сразу”.
  • Старый компонент : В параметрах компонента оформления заказа (sale.order.ajax) необходимо поставить галочку “Рассчитывать стоимость доставки сразу”.
  • Синхронизируйте справочники (Настройки -> Сервисные свойства -> Синхронизировать).
  • Убедитесь, что профиль в службы доставки создан и активен.
    Картинка
  • Убедитесь, что вы не создали каких-либо ограничений на профиль.
  • Убедитесь, что город найден в обработанных (вкладка “Города”).
  • Убедитесь, что страна города отмечена обрабатываемой (вкладка “Города”).
  • Проверьте подписки на событие onCompabilityBefore.
  • Проверьте ограничения службы доставки и местоположений

В стандартном оформлении заказа поле для выбора местоположения берет данные из списка местоположений в Битриксе (Магазин -> Настройки -> Местоположения). Модуль не добавляет местоположения Битрикса все местоположения СДЭКа по умолчанию — он работает с тем, что установлено на вашем сайте. Поэтому если населенного пункта нет в поле для ввода местоположения — его нет в базе данных Битрикса вашего сайта. Вам необходимо обновить базу данных местоположений Битрикса и перезапустить их индексацию — в крайнем случае, если пункт не появился, попробовать добавить его вручную. Подробнее об описанных процедурах можно узнать в документации к Битриксу (не у техподдержки модуля — он не имеет отношения к стандартному функционалу Битрикса). После добавления местоположения нелишним будет запустить синхронизацию местоположений модуля в соответствующем разделе настроек.

  • Если используется кастомный шаблон оформления заказа — задайте настройку “ID элемента, в котором выводить информацию о ПВЗ в оформлении заказа”. Обязательно прочитайте подсказку-пояснение (Подробнее о виджете).

  • Если вы задали настройку “ID элемента, в котором выводить информацию о ПВЗ в оформлении заказа” просто потому, что она есть, не разбираясь в тонкостях шаблонов — очистите поле и сохраните настройки модуля.

  • Убедитесь, что задана настройка “Код свойства, куда будет сохранен выбранный пункт самовывоза” в Настройки -> Настройки виджета.

  • Убедитесь, что в консоли (страница оформления заказа -> F12) нет ошибок в JavaScript.

    • Если есть ошибка, связанная с Яндекс-картами (ymaps) — попробуйте поставить флаг “Не подключать Яндекс-карты” в настройках модуля (раздел “Виджет”) и сбросьте кэш страницы оформления заказа
    • Если ошибка связана с ключем — проверьте, что указана опция “API-ключ Яндекс.карт”. Если скрипты яндекс.карты подключаются не модулем — убедитесь, что ключ указан там (не входит в техподдержку модуля).
  • Если стоит флаг “Не подключать Яндекс-карты” в настройках модуля (раздел “Виджет”), а на странице Яндекс-карты не грузятся никаким скриптом — попробуйте убрать флаг.
  • Если вы используете старый или кастомный шаблон оформления заказа — убедитесь, что он бросает js-событие onAjaxSuccess, на которое виджет начинает обработку страницы (потребуется помощь программиста).
  • Если стоит флаг “Не подключать Яндекс-карты” в настройках модуля (раздел “Виджет”), а на странице Яндекс-карты не грузятся никаким скриптом — попробуйте убрать флаг.
  • Если в консоли (F12 -> console) есть ошибка, связанная с ключем яндекс.карт — задайте его в настройках модуля в опции “API-ключ Яндекс.карт”. Ознакомьтесь с подсказкой опции. Если скрипт яндекс.карт подключается не модулем — в другом месте так же нужно указать API-ключ (не задача модуля)

Перейдите на вкладку “Города”, отметьте необходимые для работы страны, сохраните настройки.

От СДЭКа ожидается модификация, которая позволит фильтровать ПВЗ на возможность работы с Интернет-магазинами. Пока что можно воспользоваться модификацией, описанной в разделе “Модификация результатов расчетов (для программистов)”, пункт “Изменение списка ПВЗ”.

Проблемы в административной части

  • Убедитесь, что была запущена синхронизация (настройки -> Сервисные свойства -> Синхронизировать, получено сообщение об успехе).
  • Убедитесь, что в таблице городов (вкладка города -> Обработанные) есть город, установленный в настройке Интернет-магазина.
  • Убедитесь, что сама настройка задана.
    Картинка
  • Убедитесь, что на сайте нет двух копий местоположений. Если это так — удалите лишнюю копию и запустите синхронизацию вручную.
  • Убедитесь, что вы авторизованы в модуле.
  • Убедитесь, что вы находитесь на странице детальной информации о заказа (sale_order_detail.php), а не его редактирования.
  • Убедитесь, что в консоли (страница оформления заказа -> F12) нет ошибок в JavaScript.
  • Если задана настройка “Отображать кнопку заявки в заказах” в “Доставка СДЭК” — что доставкой выбрана служба доставки СДЭК модуля.
  • Проверьте, что для группы пользователей, от которых идет попытка оформить заявку, стоит разрешение во вкладке “Права”.

ПВЗ, выбранный пользователем, сохраняется в свойство заказа, указанное в опции “Код свойства, куда будет сохранен выбранный пункт самовывоза”. Это сделано для того, чтобы менеджер сразу видел, куда именно заказана доставка без лишних манипуляций.

  • Убедитесь, что указанное свойство существует в свойствах заказа и оно отображается в оформлении заказа, не скрывается и не становится disabled до выбора ПВЗ — иначе обеспечьте его вывод.
    Картинка
  • Убедитесь, что в заказе это свойство заполнено в формате <адрес ПВЗ> #S<код ПВЗ> — иначе проверьте наличие JS-ошибок на странице оформления заказа.
  • Убедитесь, что на странице заказа (в админке) нет ошибок, связанных с объектом IPOLSDEK_oExport.
  • Убедитесь, что исправлены все возможные ошибки в полях (неверный формат телефона, заполнены все необходимые поля, определен город-получатель).
  • Удалите (замените) из полей символы кавычек, углобые скобки, итп.
  • Убедитесь, что на странице оформления доставок после очистки кэша (в настройках модуля) продолжают отображаться доставки. Если нет — сервер СДЭК “лежит”.
  • Проверьте права на доступ к модулю у пользователя.
  • Ошибка “ERR_CASH_ON_DELIV_PAYREC_MISTAKE”: в городе отправления невозможен наличный платеж. Чтобы пользователь не мог оформить заказ в этот город с оплатой наличными, воспользуйтесь настройкой “Не давать оформить заказ с наличной оплатой при невозможности оплаты наличными”.
  • Ошибка “Отсутствие обязательного атрибута: ADDRESS (ERR_NEED_ATTRIBUTE)” (а сам адрес заполнен корректно): для вашего аккаунта на стороне API СДЭКа подключена обработка старого формата адреса. Необходимо обратиться в техподдержку СДЭКа (integrator@cdek.ru) с указанием вашего номера договора с просьбой переключить вас на новый формат заполнения адреса (метод new_orders). Разумеется, если работа со старым форматом не требуется в иных функционалах сайта или других интеграций со СДЭК.
  • Ошибка “Заказ “интернет-магазин” может быть только у клиента с договором интернет-магазина. (ERROR_VALIDATE_PAYER_CONTRACT_IS_NOT_IM)”: ваш аккаунт подключен к интеграции не как ИМ. Метод API для отправки заявки по заказу от ИМ вам недоступен, аккаунт работает только как стандартная доставка. Модуль же напротив работает исключительно по договорам ИМ. Необходимо обратиться в техподдержку СДЭКа, чтобы они подключили аккаунт как ИМ.

Такое иногда случается, если запрос происходит в момент, когда сервер СДЭКа недоступен. Если же ошибка возникает постоянно — проверьте настройки хостинга, антивирус и фаервол: он может блокировать запросы к серверу СДЭКа. В старых версиях модуля запросы к СДЭКу поступают на 11443-й порт. Если с настройками все в порядке — обратитесь в техподдержку СДЭКа (integrator@cdek.ru). Смоделировать проблему можно, запустив синхронизацию вручную (в сервисных свойствах настроек).

Это ошибка Битрикса. При применении изменений все сохранится корректно.

СДЭК требует указывать телефон как +<код страны><номер>. Для перевода номера в СДЭКовский формат поставьте флаг “Адаптация номера телефона” в группе настроек “Свойства заявки” — однако на всякий случай не забывайтесь сверяться с введенным покупателем.

Если при оформлении заказа посетитель сайта задает телефон с ведущим ‘+’,а после создания заказа ‘+’ исчезает: Это не связано с работой модуля. Код компонента Битрикса осуществляет “нормализацию” телефонного номера при одновременно включенных флагах:

  • “Является телефоном” в настройках свойства заказа, используемого как поле для указания телефонного номера;
  • “Дополнительные настройки” -> “Использовать нормализацию номера телефона” в настройках компонента оформления заказа sale.order.ajax.

При нормализации вырезаются все символы кроме 0123456789 # * , ; Если вы используете собственный валидатор телефонных номеров в шаблоне компонента, можно отключить флаг “Использовать нормализацию номера телефона”, чтобы встроенная нормализация не мешала, вырезая из номера в том числе и требуемый СДЭК ведущий ‘+’.

Нужно обращаться в техподдержку СДЭКа ,указав, что получаете эту ошибку при манипуляциях с API.

Проблемы в личном кабинете / с отправленными заявками

  • Убедитесь, что сервер СДЭКа доступен (нет оповещения об этом в настройках, после очистки кэша службы доставки продолжают отображаться), иначе — нужно ждать, пока сервер не “поднимется”.

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

Отключите Автоотгрузки на соответствующей вкладке модуля.

Прочие проблемы

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

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

Самая распространенная проблема — это “бесконечный” цикл импорта, что возникает при ошибке в его выполнении. Чаще всего против этого помогает следующая последовательность действий:

  1. Удалить файл /bitrix/js/ipol.sdek/tmpImport.txt
  2. Проверить настройки городов и нажать кнопку “сохранить”.
  3. Сбросить кэш модуля. Он никоим образом не затрагивает импорт, но в любой непонятной ситуации надо сбрасывать кэш модуля.

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

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

Подключаем необходимые модули.

\Bitrix\Main\Loader::includeModule('sale');
use Bitrix\Sale;

Выбираем заказы которые будем удалять.

$filter = Array("ID" => 1000); //ID заказа
$order_list = array();
$log_file = $_SERVER["DOCUMENT_ROOT"]."/orders.log"; if(file_exists($log_file))     unlink($log_file);

$db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $filter);
while($ar_sales = $db_sales->Fetch())
{
    $order_list[] = $ar_sales["ID"];
}

Отменяем оплаты, отгрузки и удаляем заказы.

foreach($order_list as $id)
{
    $order = Sale\Order::load($id);
    file_put_contents($log_file, "Работаем с заказом " . $id . "\n", FILE_APPEND);

    //отменяем оплаты если есть
    $paymentCollection = $order->getPaymentCollection();
    if($paymentCollection->isPaid())
    {
        file_put_contents($log_file, "Оплачен\n", FILE_APPEND);

        foreach($paymentCollection as $payment)
        {
            $payment->setReturn("Y");
        }
    }

    //отменяем отгрузки если есть
    $shipmentCollection = $order->getShipmentCollection();
    if($shipmentCollection->isShipped())
    {
        file_put_contents($log_file, "Отгружен\n", FILE_APPEND);

        $shipment = $shipmentCollection->getItemById($shipmentCollection[0]->getField("ID"));
        $res = $shipment->setField("DEDUCTED", "N");
        if(!$res->isSuccess())
        {
            file_put_contents($log, print_r($res->getErrors(), true), FILE_APPEND);
        }
    }

    $order->save();

    $res_delete = Sale\Order::delete($id);
    if(!$res_delete->isSuccess()) {
        file_put_contents($log_file, print_r($res_delete->getErrors(), true), FILE_APPEND);
    }
    else
    {
        file_put_contents($log_file, "Заказ " . $id . " удален\n", FILE_APPEND);
    }
    file_put_contents($log_file, "------------\n", FILE_APPEND);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
 
use Bitrix\Main\Localization\Loc;
 
\Bitrix\Main\Loader::includeModule('sale');
 
$publicMode = $adminPage->publicMode;
$selfFolderUrl = $adminPage->getSelfFolderUrl();
 
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
 
IncludeModuleLangFile(__FILE__);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
 
$sTableID = "tbl_sale_pay_system";
$instance = \Bitrix\Main\Application::getInstance();
$context = $instance->getContext();
$request = $context->getRequest();
 
$oSort = new CAdminSorting($sTableID, "ID", "asc");
$lAdmin = new CAdminUiList($sTableID, $oSort);
 
$listPersonType = array();
$personTypeQueryObject = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array());
while ($personType = $personTypeQueryObject->GetNext())
{
    $listPersonType[$personType["ID"]] = $personType["NAME"]." (".implode(", ", $personType["LIDS"]).")";
}
 
$filterFields = array(
    array(
        "id" => "NAME",
        "name" => GetMessage("SALE_NAME"),
        "filterable" => "%",
        "quickSearch" => "%"
    ),
    array(
        "id" => "ACTIVE",
        "name" => GetMessage("SALE_F_ACTIVE"),
        "type" => "list",
        "items" => array(
            "Y" => GetMessage("SALE_YES"),
            "N" => GetMessage("SALE_NO")
        ),
        "filterable" => "",
        "default" => true
    ),
    array(
        "id" => "PERSON_TYPE_ID",
        "name" => GetMessage("SALE_F_PERSON_TYPE"),
        "type" => "list",
        "items" => $listPersonType,
        "filterable" => "",
        "params" => array("multiple" => "Y"),
    )
);
 
$filter = array();
 
$lAdmin->AddFilter($filterFields, $filter);
 
$personTypeId = [];
if (!empty($filter["PERSON_TYPE_ID"]))
{
    $personTypeId = $filter["PERSON_TYPE_ID"];
    unset($filter["PERSON_TYPE_ID"]);
}
 
if (($ids = $lAdmin->GroupAction()) && $saleModulePermissions >= "W")
{
    if ($request->get('action_target')=='selected')
    {
        $ids = array();
        $dbRes = \Bitrix\Sale\Internals\PaySystemActionTable::getList(
            array(
                'select' => array('ID'),
                'filter' => $filter,
                'order' => array(ToUpper($by) => ToUpper($order))
            )
        );
 
        while ($arResult = $dbRes->fetch())
            $ids[] = $arResult['ID'];
    }
 
    foreach ($ids as $id)
    {
        if ((int)$id <= 0)
            continue;
 
        switch ($_REQUEST['action'])
        {
            case "delete":
                $dbRes = \Bitrix\Sale\Internals\PaymentTable::getList(array('filter' => array('PAY_SYSTEM_ID' => $id)));
                if ($dbRes->fetch())
                {
                    $lAdmin->AddGroupError(Loc::getMessage("SALE_DELETE_ERROR"), $id);
                    continue;    [B]Ошибка здесь[/B]
                }

Понравилась статья? Поделить с друзьями:
  • Билайн ошибка 651 windows 7
  • Битрикс ошибка при печати чека
  • Билайн ошибка 633
  • Бета исправление ошибок
  • Битрикс ошибка открытия файла импорта битрикс