Чтобы при обмене не изменялось описание товара в Bitrix

Собственно все описания делаем на сайте, а в 1С пустота.

Чтобы не перезатереть описание пустотой нужно добавить в init.php следующее:

Читать далее Чтобы при обмене не изменялось описание товара в Bitrix

Увеличение размера существующего жесткого диска BitrixVM

Вторым способом увеличения дискового пространства в BitrixVM является увеличение размера уже существующего жесткого диска виртуальной машины.

В данном примере воспользуемся виртуальной машиной BitrixVM для VMWare и покажем, как увеличить размер системного диска до 100Гб. Читать далее Увеличение размера существующего жесткого диска BitrixVM

Запустить apache с опцией ulimit -s unlimited в CentOS| The Bitrix

Bitrix ругается на pcre.recursion_limit при проверке сайта. Исправление для deb делается крайне просто и сто раз уже мусолилось на просторах сети. Нужно дополнить вызов apache опцией «ulimit -s unlimited» в /etc/init.d/apache2.

Однако, у меня CentOS и там не все так весело. Init.d, конечно, есть, но вот в нем никакого apache нет.

Долгий поиск давал в основном танцы с бубном вокруг limits.conf, но плевать apache на него хотел.

Итого, все же, было найдено решение:

/usr/lib/systemd/system/httpd.service и в /lib/systemd/system/php5-fpm.service, поскольку у меня php-fpm в блоке [Service] добавить опцию LimitSTACK=infinity.

Ребутаем сервер и Bitrix счастлив!

Учет наличия товаров на складах поставщиков

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

Дело было в УТ 11, где такой возможности, странно, но факт, нет. Есть разные предложения по «закостыливанию», к примеру, сделать отдельный склад в 1С и заводить туда товары через инвентаризацию, но это изничтожит весь учет в программе, или есть вариант скопировать обработки склада в конфигурации, но это тоже не айс, т.к. требует сильных изменений.

Тогда решили сделать отдельный ИБ в Битрикс, где будет всего два поля — Название, оно же артикул товара, и наличие на складах поставщика.

Далее в работе компонентов битрикса по определению наличия товара добавили вызов нашего компонента:

$APPLICATION->IncludeComponent("spl:instock","",Array("SKU" => $arResult["DISPLAY_PROPERTIES"]["CML2_ARTICLE"]["VALUE"]));

Само тело компонента:

<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$search_in=array(12,13);//список ИБ, где искать наличие

if(CModule::IncludeModule("iblock")) {
    foreach ($search_in as $search_block_id){
        $arSelect = Array("ID","NAME","PROPERTY_INSTOCK");
        $arFilter = Array("IBLOCK_ID"=>$search_block_id,"NAME"=>$arParams['SKU']);
        $arCargo = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);

        if ($ob = $arCargo->GetNextElement()) {
            $arFields = $ob->GetFields();
            $arProps = $ob->GetProperties();
            if ($arFields['PROPERTY_INSTOCK_VALUE']>0)break;
        }
    }
    return $arFields['PROPERTY_INSTOCK_VALUE'];
}
?>

Обмен заказами с сайтом Bitrix

Ситуевина:
Было решение из которого был создан каталог товаров на сайте.
Позже было принято решение перейти на УТ 11. Переход был через мастер импорта товаров с сайта. Успешно.
Товары выгружаются, все отл! Но заказы через модуль сайта не идут — xml не распознан, типа сайт старый.
Сделали загрузку заказов через встроенный модуль обмена с сайтом. Заказы пришли, но вот товары из заказа на сайте пропали.
Дело оказалось в том, что при обмене заказами из 1С идут другие xml_id. а почему??! и как исправить??? никто не в курсе?

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

Решением стало изменение функции ПолучитьУникальныйИдентификаторОбъекта модуля ОбменССайтомПовтИсп

Функция ПолучитьУникальныйИдентификаторОбъекта(Объект, Характеристика = Неопределено) Экспорт 
//Ид = Строка(Объект.УникальныйИдентификатор()); 
Ид = Строка(Объект.Б_Идентификатор); 
Если ТипЗнч(Объект) = Тип("СправочникСсылка.Номенклатура" И (НЕ Объект.ЭтоГруппа) И (НЕ Объект.ВидНоменклатуры.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать) И ЗначениеЗаполнено(Характеристика) Тогда 
Ид = Ид + "#" + Строка(Характеристика.УникальныйИдентификатор()); 
КонецЕсли; 
Возврат Ид; 
КонецФункции

И все! Товары синхронятся великолепно в заказах!
П.С. критикам — характеристики не используются.

Заметки разработчика: Битрикс. Выгрузка заказов из 1С: Произошла ошибка на стороне сервера

Ситуация

При выгрузке заказов из 1С в битрикс выдает ошибку

Произошла ошибка на стороне сервера. Не получен статус завершения операции. Файл не отправлен

Окружение 1С 8, Битрикс 14

Разбирательство

ошибка начала появляться после обновления на битрикс версию 14.

Источник: Заметки разработчика: Битрикс. Выгрузка заказов из 1С: Произошла ошибка на стороне сервера.

Про меню каталога товаров Битрикс

В прошлой версии оказались сложности с меню более 4х уровней..

Исправил :)

Читать далее Про меню каталога товаров Битрикс

Показывать вложенные подразделы только для активного раздела Bitrix

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

Скрипт основан на стандартном шаблоне многоуровневого меню Bitrix Читать далее Показывать вложенные подразделы только для активного раздела Bitrix