Связь
Здравствуйте! Я Ваш личный надежный программист.
1С Предприятие 8.2-8.3, 1С-Битрикс: Управление сайтом, Битрикс24

HL блоки не работают - куча ошибок

Очевидно что при создании модуля обошли стороной HL блоки, функционал явно сырой.1. Если при вызове HL Блока в getlist вставить "select" => array("*"), то значения вернутся непереведенные. Без этого параметра переводится.2. Массив переведенных значений имеет дубли в названии ключей UF_UF_ и деже если после использовать функцию RenameRowKeys всё равно не переименовываются, она тоже не работает корректно3. Выше пункты еще цветочки, в сравнении с работой с самими...
 
Очевидно что при создании модуля обошли стороной HL блоки, функционал явно сырой.

1. Если при вызове HL Блока в getlist вставить "select" => array("*"), то значения вернутся непереведенные. Без этого параметра переводится.

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

3. Выше пункты еще цветочки, в сравнении с работой с самими блоками из админки.
- зашёл в элемент - сохранил на русском
- переключил язык на En - сохранил - в таблице mm_hl_lang_selector появилась запись, но сбросился чекбокс.
- сохраняю повторно без правок - сбрасываются SITE_ID и LANGUAGE_ID в таблице базы
- сохраняю повторно - записывается новая запись и так до бесконечности

Вообще, зачем добавлять в таблицу SITE_ID когда привязка идёт к языку, это лишнее значение.

4. Не корректно работает обработка мультиполей. При сохранении вызывет ошибку https://72seo.ru/s/2024-01-24_130240.jpg

На данный момент работать с HL Блоками невозможно!
Очень хотелось бы чтобы доработали их в ближайшее время.

Прикладываю Видео по ошибкам https://youtu.be/NcbdbxpsxPQ

==========================

P.S. Поскольку документации нет совершенно по HL Блокам поэтому напишу сюда вызовы, вдруг кому пригодится

$hlblock = Modulemarket\Translator\Highloadblock\HighloadBlockTable::getById($hlblock_id)->fetch();
$entity = \Modulemarket\Translator\Highloadblock\HighLoadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
$arRes = $entity_data_class::getList([
'order' => ['UF_SORT' => 'ASC'],
   'filter' => $arFilter,
])->fetchAll();

Также можно запустить переименование ключей, UF_UF_ на UF_
\Modulemarket\Translator\Highloadblock\HighLoadBlockTable::RenameRowKeys($arRes);
Только нужно саму функцию переписать

В файле /bitrix/modules/modulemarket.translator/lib/highloadblock/highloadblocktable.php функция RenameRowKeys
Заменить весь код на этот

// Замена UF_UF_ на UF_ / Кастом
       foreach ($row as &$subArray) {
           $newSubArray = array();
           foreach ($subArray as $key => $item) {
               $newKey = str_replace('UF_UF_', 'UF_', $key);
               $newSubArray[$newKey] = $item;
           }
           $subArray = $newSubArray;
       }

==========================

ОЧЕНЬ надеюсь, что функционал HL блоков получится сделать в самое ближайшее время.
 
  1. Исправлено
  2. Доработано. Теперь RenameRowKeys больше не нужен
  3. Данной проблемы не наблюдаю
  4. Опишите пожалуйста подробнее
 
1 и 2 пункты исправлены, теперь ошибок нет, НО! Теперь вообще не переводит, т.е. не выводит значения на другом языке.
Скрин запроса https://72seo.ru/s/2024-02-07_150639.jpg
Скрин ответа https://72seo.ru/s/2024-02-07_150657.jpg
Скринт HL https://72seo.ru/s/2024-02-07_150719.jpg - выделил то что должно было вывести

3. Ошибка сохраняется, видео по ошибкам https://youtu.be/NcbdbxpsxPQ
4. Ошибка https://72seo.ru/s/2024-02-07_150322.jpg возникает в случаях:
- когда добавляется новое пользовательское поле при сохранении HL элемента
- при втором сохранении элемента

при этом в базе пропадает значения SITE_ID и LANGUAGE_ID

________________________
Резюмирую, после доработок в файле datamanager.php принципиально вообще ни чего не поменялось. Ошибки как были так и есть, HL как не работал так и не работает.
Только сейчас окончательно поломался, даже перевод не выдаёт в ответе getlist.
Читают тему
file_download Скачать Модуль Маркет
file_download Скачать Модуль Маркет