Автозаполнение символьного кода у товаров. Функция – агент для Битрикса.

Автозаполнение символьного кода у товаров. Функция - агент для Битрикса.

Выкладываю функцию – агент для автоматического заполнения поля «Символьный код» у товаров и разделов каталога в Битриксе. Заполнение происходит по событию OnBeforeIBlockElementAdd, при сохранении элемента инфоблока. Данная функция полезна при выгрузке из 1С УТ и при импорте товаров из файла «.csv».
Заполнение происходит по следующему принципу: берется значение заголовка, переводится в транслит, к получившейся последовательности добавляется текущая дата (это нужно для уникальности символьного кода).
Вот сам код:

<?AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("SimCode", "OnBeforeElementAddHandler")); 

class SimCode
{ 

function OnBeforeElementAddHandler(&$arFields)
{
   if(strlen($arFields["CODE"])<=0)
   {
      $arFields["CODE"] = SimCode::Translite($arFields["NAME"])."_".date('dmY');
      return;
   } 

} 

function Translite($str){
   static $tbl= array(
      'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
      'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
      'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'y', 'э'=>'e', 'А'=>'A',
      'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
      'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
      'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'Y', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
      'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ь'=>"", 'ъ'=>"", 'ю'=>"yu", 'я'=>"ya",
      'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
      'Ю'=>"YU", 'Я'=>"YA", ' '=>"_", '№'=>"", '«'=>"<", '»'=>">", '-'=>"-"
   );
    return strtr($str, $tbl);
} 

}

Данный код нужно добавить в файл init.php (если нет создать), лежащий по адресу /bitrix/php_interface.

Похожие посты:
  • Тест хостинга для Битрикса
  • Товарный чек в формате xml (Excel)
  • Кнопка «повторить заказ» для Битрикс
  • Напоминание пользователю о появлении товара (Битрикс)
  • Создать аккаунт администратора на Битриксе
  • 10 комментариев: Автозаполнение символьного кода у товаров. Функция – агент для Битрикса.

    1. Подскажите пожалуйста. Транслитерация при импорте товара проходит, но почему-то не работает транслитерация категорий. Это я что-то делаю не правильно или нужно что-то дописать, что бы у категорий тоже символьный код прописывался?

      • Лаврушин Алексей

        Да, тут нужно дописывать, точнее тут нужна функция подобная этой, но не на событие «OnBeforeIBlockElementAdd», а на «OnBeforeIBlockSectionAdd».

    2. Отличная капча

    3. у меня почему-то не работает…

      • Andre

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

    4. Отличная вещь !!) вот только вы не учли что люди бывает в названиях и элементах ставят «/» а в функции это не учтено пришлось дописывать) если не дописать то при составлении юрл этот знак распознается как разделитель и выходит ошибка 404

    5. Никита

      Спасибо!
      Перепробовал много подобных скриптов, но они почему не работали.
      отличие вашего от остальных вот в чём:
      у вас – function OnBeforeElementAddHandler
      у всех других -function OnBeforeIBlockElementAddHandler

      в битриксе очень плохо понимаю, поэтому ответить не могу:).

      Добавил в ваш код функцию и для категорий – всё работает.

      НО! Может быть подскажете как обновить уже существующие категории и элементы?
      Нашёл парочку скриптов, но они не помогают.

      p.s. и это, вы бы сделали что-нибудь со своей капчей…

    6. Михаил

      Огромное человеческое спасибо !!!

    7. Сергей

      У меня почему-то транслитерация не проходит хотя символьный код создается. Использую Ваш скрипт.

    Добавить комментарий:

    Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: