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

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

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


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

 

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С и картинки не выгрузились в первый раз на сайт, то в настройках модуля обмена выполните обмен через кнопку принудительной полной выгрузке картинок.

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

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

BitrixMainLoader::includeModule('sale');
use BitrixSale;

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

$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 = SaleOrder::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 = SaleOrder::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);
}

Добрый день!

Подскажите пожалуйста пример кода как можно изменить статус оплаченного заказа.

Код
$order = BitrixSaleOrder::load((int)$id); 
$order->setField('STATUS_ID', $status);

Этот код возвращает ошибку: «У заказа есть активные оплаты»

При этом успешно сохраняет заказ.

Так тоже статус не изменяет:

Код
$ID = 447;
$arFields = array(
    "STATUS_ID" => "D",
    "EMP_STATUS_ID" => 68,
);
CSaleOrder::Update($ID, $arFields);   

Это вообще возможно: изменить статус оплаченного заказа?

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

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


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

 

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

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

 

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

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

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

2

Регистрация: 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 КБ)

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

  • Ошибка у вашего аккаунта недостаточно прав для выполнения этого действия
  • Ошибка у вас отсутствует либо установлена устаревшая версия flash player как убрать сообщение
  • Ошибка у вас нет разрешения на доступ к этой папке
  • Ошибка тсо на мерседес атего
  • Ошибка у вас нет прав на управление аудитом robocopy