|
Пользователь 412397 Заглянувший Сообщений: 10 |
#1 0 02.12.2015 09:50:52 Подключил робокассу. настроил по инструкции. Опата проодит. но статус заказа остается — Принят, ожидается оплата файл result.php
|
||
|
Пользователь 265201 Эксперт Сообщений: 1340 |
в настройках модуля интернет-магазин /bitrix/admin/settings.php?lang=ru&mid=sale&mid_menu=1 посмотрите параметры http://take.ms/cp8C2 |
|
Пользователь 412397 Заглянувший Сообщений: 10 |
При получении оплаты переводить заказ в статус: — поставил — Оплачен. до это стояло не изменять. Но статус заказа всё равно не меняется |
|
Пользователь 68923 Заглянувший Сообщений: 8 |
Столкнулся сегодня с такой же проблемой — не меняется статус на «Оплачен». Здесь /bitrix/admin/settings.php?lang=ru&mid=sale&mid_menu=1 настроено, что при оплате менять статус, с Робокассы приходит подтверждение, что заказ Оплачен, и заказе стоит «Оплачен: да». Обновления последние все стоят, модуль робокассы стандартный. |
|
Администратор Сообщений: 1376 |
Была похожая проблема с Яндексом, и она в принципе могла быть глобальная на все системы. Исправление было в sale 15.5.11, подскажите какая версия у вас? |
|
Пользователь 419351 Заглянувший Сообщений: 2 |
Такая же проблема! Версия 16.0.1 . оплата через эквайринг сбербанк. Оплачен, и заказе стоит «Оплачен: да» . Статус заказа: (N) Принят, ожидается оплата |
|
Пользователь 442517 Заглянувший Сообщений: 10 |
Та же проблема. Только с платёжной системой webmoney. Версия модуля: sale (16.0.2). Вам удалось решить проблему ? |
|
Пользователь 415309 Заглянувший Сообщений: 4 |
Добрый день, аналогично с LiqPay — статус «Оплачен» не изменяется. Вдобавок в списке вариантов опции «При получении оплаты переводить заказ в статус» нету варианта «Оплачен», только «в обработке, подтвержден, отгружен, выполнен». Версия модуля sale 15.5.11 |
|
Пользователь 159326 Заглянувший Сообщений: 4 |
Привет. Вот решение этой проблемы Добавляем: AddEventHandler(«sale», «OnSalePayOrder», «ChangeStatus»); function ChangeStatus($id,$val) { |
|
Пользователь 80740 Постоянный посетитель Сообщений: 97 |
#10 0 18.10.2016 13:40:03
код статуса это что? |
||
|
Пользователь 34550 Эксперт Сообщений: 1579 |
#11 0 18.10.2016 14:28:12 код статуса — символьный код 1-2 буквы из админки |
|
Пользователь 80740 Постоянный посетитель Сообщений: 97 |
#12 0 18.10.2016 15:30:52 спасибо. я разобрался |
|
Пользователь 34550 Эксперт Сообщений: 1579 |
#13 0 19.10.2016 12:51:21 это в настройках модуля делается. что и как должно меняться |
|
Пользователь 80740 Постоянный посетитель Сообщений: 97 |
#14 0 19.10.2016 13:05:56
мы о разном говорим. |
||
|
Пользователь 41311 Заглянувший Сообщений: 3 |
#15 0 06.06.2017 23:02:59
вы не подскажите функцию для изменения этого статуса? Дело в том что здесь статус оплачен а в блоке «оплата» флаг нет, подскажите как изменять флаг на «оплачено»? |
||
|
Пользователь 396250 Постоянный посетитель Сообщений: 78 |
#16 0 30.06.2017 11:09:47 логируйте запрос с робокассы — идет ли запрос на result.php и с какими параметрами. |
|
Пользователь 330687 Заглянувший Сообщений: 11 |
#17 0 04.09.2017 11:44:30
Это называется «костыль», а не «решение проблемы» -__- |
||
|
Пользователь 80740 Постоянный посетитель Сообщений: 97 |
#18 1 04.09.2017 11:57:28
вы наверное с Битркисом не давно С ряда PayPal гейтов и карточных вопрос открыт с 14 года и думаю это уже на всегда |
||||
|
Пользователь 330687 Заглянувший Сообщений: 11 |
#19 0 04.09.2017 15:42:55
Я наверное сейчас серьёзно отвечаю на шутку, но «кастомизацией» был бы хотя бы такой вариант:
|
||||||||
|
Пользователь 44102 Постоянный посетитель Сообщений: 77 |
#20 0 06.09.2017 11:10:15 Ребята, может кто подскажет как в D7 это выглядит? AddEventHandler(«sale», «OnSalePayOrder», «ChangeStatus»); |
|
Пользователь 244255 Заглянувший Сообщений: 15 |
#21 0 24.11.2017 02:02:10
Павел, примерно так:
|
||||
|
Пользователь 47602 Заглянувший Сообщений: 13 |
#22 0 13.01.2018 18:53:56 Добрый день, подскажите пожалуйста, https://yadi.sk/i/boRxGdw23RRXhv настройки автоматизации: что делать? 1С-Битрикс: Управление сайтом 17.5.4. |
|
Пользователь 47602 Заглянувший Сообщений: 13 |
#23 0 21.01.2018 13:06:21 |
|
Пользователь 370394 Заглянувший Сообщений: 22 |
#24 0 30.01.2018 11:52:04
столкнулись с аналогичной ситуацей, кто нибудь разобрался? |
||
|
Пользователь 47602 Заглянувший Сообщений: 13 |
#25 1 30.01.2018 12:49:09
Вам следует перейти в админку, Магазин-Настройки-Бизнес смыслы, включить опцию «Автоматически оплачивать заказ при получении успешного статуса оплаты» и сохранить. мне помогло.. |
||||
Чтобы заказ успешно удалился из системы, у него не должно быть активных оплат и отгрузок. Поэтому перед удалением нужно проверить эти условия.
Подключаем необходимые модули.
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);
}
Не меняется статус при оплате
Внимание!
Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Не меняется статус при оплате
|
Adrian Lazarov Пользователь Сообщений: 5 |
При оплате через яндекс кассу, в админке не меняется стастус на выполнен, постоянно весит статус «Принят, ожидается оплата» хотя все оплачено и средства поступили на счет, в чем может быть причина? |
|
Adrian Lazarov Пользователь Сообщений: 5 |
Внутренний счет пользователя не пополняется, но деньги на счет приходят |
|
Михаил Базаров Администратор Сообщений: 1746 |
#3 Это нравится:0Да/0Нет 11.02.2020 18:04:45
Проверьте вот эти настройки в модуле Интернет-магазина Прикрепленные файлы
|
||
|
Цитировать Имя |
|
Adrian Lazarov Пользователь Сообщений: 5 |
#4 Это нравится:0Да/0Нет 11.02.2020 19:54:04 В настройках стоят вот эти параметры Прикрепленные файлы
|
|
Цитировать Имя |
|
Поблагодарить и поддержать!
Поддержать выпуски видео уроков, поблагодарить за полезную инструкцию или заметку можно через:
Юманей
Записная книжка разработчика
Примерно с 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
Например вам нужно выводить информацию исключительно для определенного пользователя. Само …
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] } |
Статусами заказа в «Битрикс» называют этапы, через которые заказ проходит во время обработки. Они помогают проинформировать клиентов и сотрудников интернет-магазина о том, в каком состоянии заказ находится в текущий момент. При необходимости можно создать неограниченное количество статусов заказа — это зависит от того, как именно организован процесс обработки. Например, заказы могут находиться в статусе «Отгружен», «Отложен», «В пути» и т.д.
Статусы позволяют охарактеризовать не только состояние заказа в целом, но и отдельно состояние отгрузки и доставки товаров из заказа. Поэтому статусы делятся на 2 типа: заказ и доставка.

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

«1С-Битрикс: Управление сайтом» предлагает стандартный набор этапов, который сформирован по умолчанию.
Рекомендуемые решения
Общий принцип достаточно прост: обязательно должен присутствовать начальный этап и два финальных статуса, предназначенные для успешного и неуспешного завершения заказа. Промежуточное количество статусов может быть любым в зависимости от особенностей вашего бизнеса.
У заполнения полей формы есть свои нюансы:
- Уникальный код статуса задается одной или двумя латинскими буквами.
- Выбрать нужный тип — «Заказ» или «Доставка» можно в поле «Тип статуса».
- Задать относительный вес статуса можно в поле «Сортировка». Таким образом вы определите положение конкретного статуса в списке других статусов.
- Чтобы отправить покупателю письмо о переводе заказа в определенный статус, воспользуйтесь опцией «Отправлять почтовое уведомление». Как сгенерировать письмо? Для этого существуют шаблоны. Чтобы создать или отредактировать шаблон, пройдите по ссылке «Почтовый шаблон статуса».
- Отдельно для каждого языка, определенного в системе, задаются Название и Описание.
- Чтобы группа пользователей могла попасть в секцию «Право на доступ», ее уровень в настройках модуля «Интернет-магазин» должен быть не ниже, чем «Обработка заказов». Определить уровень доступа к заказам для той или иной группы можно при помощи выпадающего списка. Что делать, если в списке нет какой-либо группы? Пройдите по ссылке «Группы пользователей» и назначьте этой группе в настройках модуля требуемое право доступа, которое должно быть не ниже «Обработки заказов». Назначив право доступа, вернитесь к настройке статуса. Теперь вы можете предоставить добавленной группе право доступа в рамках данного статуса.
- Добавлять статусы заказов можно через «Администрирование».
Чтобы добавить новый промежуточный статус «Подтверждение заказа», выберите «Добавить статус».
Как получить текущий статус заказа? Воспользуйтесь следующим методом — 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С и картинки не выгрузились в первый раз на сайт, то в настройках модуля обмена выполните обмен через кнопку принудительной полной выгрузке картинок.
10.11.2020
08:34
10.11.2020 08:34:14

У заказчика есть постоплата после доставки, а есть предоплата до поставки
Поэтому в зависимости от текущего статуса надо переводить в в 1 из 2х статусов:
- Если предоплата, то в статус «Оплачен, формируется к отправке»
- Если постоплата, то в статус «Выполнено»
Битрикс стандартными настройками умеет переводить только в 1 статус.
1. Отключить все изменения Битриксом:
- В роботах-триггерах (если CRM)
- В настройках модуля платежной системы «Статус заказа после оплаты»
- В настройках модуля «интернет-магазин» вкладка «автоматизация процессов» поле «При получении полной оплаты переводить заказ в статус»
2. добавляем в /bitrix/php_interface/init.php
AddEventHandler("sale", "OnSalePayOrder", "MyOnSalePayOrder");
function MyOnSalePayOrder($id,$val){
if($val=="Y" && CModule::IncludeModule('sale') && ($arOrder = CSaleOrder::GetByID($id))) {
if(in_array($arOrder['STATUS_ID'], array("N","NP"))){//если на стадии "В обработке", "Ожидает оплаты""
CSaleOrder::StatusOrder($id, "P"); //переводим в статус "оплачен, формируется к отправке"
}
elseif(in_array($arOrder['STATUS_ID'], array("S","Z"))){//если на стадии "Отправлен", "Отправлен, ожидание оплаты"
CSaleOrder::StatusOrder($id, "F"); //переводим в статус "выполнен"
}
}
}