Как мне найти путь к видеофайлу?

Я создал свойство типа "файл" и теперь мне нужно получить путь к видео. Я использую следующий код: 

```php
<?php
$ID = $_POST['arr'][0];
if (CModule::IncludeModule("iblock")):
    $iblock_id = 10;
    $mySlider = CIBlockElement::GetList (
        Array(
            "ID" => "ASC"
        ),
        Array(
            "IBLOCK_ID" => $iblock_id,
            "ID" => $ID
        ),
        false,
        false,
        Array(
            'PROPERTY_MY_FILES'
        )
    );
    while($arFields = $mySlider->GetNext())
    {
        ?>
        <pre><? print_r ($arFields); ?></pre>
        <?php
    }
endif;
?>
```

Однако вместо ожидаемого пути к файлу я получаю следующий вывод:

```
Array
(
    [PROPERTY_MY_FILES_VALUE] => 
    [~PROPERTY_MY_FILES_VALUE] => 
    [PROPERTY_MY_FILES_VALUE_ID] => 
    [~PROPERTY_MY_FILES_VALUE_ID] => 
    [ID] => 15861
    [~ID] => 15861
)
```

Что я делаю неправильно?
  • 24 сентября 2024 г. 17:03
Ответы на вопрос 2
В вашем коде вы правильно запрашиваете данные из инфоблока. Однако, проблема может заключаться в неправильной интерпретации результата запроса. Обратите внимание, что вы используете только одно свойство `PROPERTY_MY_FILES`, и, возможно, оно не заполнено или указано неправильно.

### Проверьте следующие моменты:

1. **Проверьте наличие и правильность свойства**:
   Убедитесь, что свойство `PROPERTY_MY_FILES` действительно существует в инфоблоке и правильно настроено (это должно быть свойство типа "файл").

2. **Проверьте, заполнено ли свойство**:
   Убедитесь, что для элемента с ID, который вы запрашиваете, это свойство действительно заполнено.

3. **Используйте правильные ключи для доступа**:
   Если ваше свойство настроено правильно, вы сможете получить путь к файлу через `$arFields['PROPERTY_MY_FILES_VALUE']` или `$arFields['PROPERTY_MY_FILES']`, в зависимости от ваших настроек и версии.

### Обновлённый код:

Попробуйте обновить код, чтобы он выглядел следующим образом:

```php
<?php
$ID = $_POST['arr'][0];
if (CModule::IncludeModule("iblock")):
    $iblock_id = 10;
    $mySlider = CIBlockElement::GetList(
        Array("ID" => "ASC"),
        Array("IBLOCK_ID" => $iblock_id, "ID" => $ID),
        false,
        false,
        Array('ID', 'PROPERTY_MY_FILES')
    );

    while ($arFields = $mySlider->GetNext())
    {
        if (!empty($arFields['PROPERTY_MY_FILES_VALUE_ID'])) {
            $fileID = $arFields['PROPERTY_MY_FILES_VALUE_ID'];
            $file = CFile::GetFileArray($fileID);
            if ($file) {
                echo '<pre>';
                print_r($file);
                echo '</pre>';
                echo 'Путь к файлу: ' . $file['SRC'];
            } else {
                echo 'Файл не найден.';
            }
        } else {
            echo 'Свойство не заполнено.';
        }
    }
endif;
?>
```

### Примечания:
- Этот код сначала проверяет, заполнено ли поле файла. Если заполнено, он получает ID файла и использует `CFile::GetFileArray`, чтобы извлечь информацию о файле, включая полный путь.
- Убедитесь, что вы используете корректный ID элемента и что свойство действительно содержит данные.
ID у вас есть, теперь просто получите данные файла и все: https://dev.1c-bitrix.ru/api_help/main/reference/c...
Похожие вопросы