С определенной версии ядра (примерно с 17.5) для пользовательских полей типа «файл» была изменена логика.
Теперь, если требуется обновить поле, добавив туда ещё несколько файлов, недостаточно просто передать ID уже загруженных, необходимо ещё выполнить процедуру регистрации этих файлов.
Разберем подробнее.
1. Создаем для пользователя пользовательское поле типа «Файл», множественное
2. Загружаем в папку /upload/testfiles/ 3 картинки:
3. Выполняем код. У пользователя будут установлены 2 картинки
Если передать полю другое значение:
то все картинки будут перезалиты заново. В т.ч. изменяются их пути, что немаловажно.
4. Допустим, мы загрузили картинку 1 и 3
5. Через день хотим добавить ещё туда картинку 2.
Раньше такой код работал (на версии 17.0.9 еще работает):
У пользователя в поле UF_FILES получалось 3 файла: 2 существующих файла и 1 новый.
На последних версиях это уже не работает: Остается 2 файла, а внутри выдается ошибка.
Чтобы у пользователя стало 3 файла, необходимо зарегистрировать существующие:
где, USER-18-UF_FILES – Id контрола, который формируется из параметров поля:
Чтобы автоматически получить ID контрола, можно выполнить следующий код:
Возможно это баг. Или новая фича безопасности.
Техподдержка разбираться не стала: «В административной части сайта работает добавление файла, значит бага нет, а ошибка в вашем скрипте.»
Теперь, если требуется обновить поле, добавив туда ещё несколько файлов, недостаточно просто передать ID уже загруженных, необходимо ещё выполнить процедуру регистрации этих файлов.
Разберем подробнее.
1. Создаем для пользователя пользовательское поле типа «Файл», множественное

2. Загружаем в папку /upload/testfiles/ 3 картинки:

3. Выполняем код. У пользователя будут установлены 2 картинки

Если передать полю другое значение:

то все картинки будут перезалиты заново. В т.ч. изменяются их пути, что немаловажно.
4. Допустим, мы загрузили картинку 1 и 3

5. Через день хотим добавить ещё туда картинку 2.
Раньше такой код работал (на версии 17.0.9 еще работает):
У пользователя в поле UF_FILES получалось 3 файла: 2 существующих файла и 1 новый.

На последних версиях это уже не работает: Остается 2 файла, а внутри выдается ошибка.
Чтобы у пользователя стало 3 файла, необходимо зарегистрировать существующие:

где, USER-18-UF_FILES – Id контрола, который формируется из параметров поля:

Чтобы автоматически получить ID контрола, можно выполнить следующий код:

Возможно это баг. Или новая фича безопасности.
Техподдержка разбираться не стала: «В административной части сайта работает добавление файла, значит бага нет, а ошибка в вашем скрипте.»