[Решено] API. Как добавлять файлы в поле "Вложения"?

Все вопросы/проблемы по установке и использовании.
tehnos
Сообщения: 155
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

[Решено] API. Как добавлять файлы в поле "Вложения"?

Сообщение tehnos »

Задача добавлять файлы к записям в поле "Вложения".
Возможно ли это? В документации не нашёл этой возможности.
Последний раз редактировалось tehnos 10 июн 2024, 12:00, всего редактировалось 1 раз.
Аватара пользователя
support
Техническая поддержка
Сообщения: 9166
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение support »

Добавил инфу в документацию https://docs.rukovoditel.net.ru/index.php?p=159
tehnos
Сообщения: 155
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение tehnos »

Благодарю!
tehnos
Сообщения: 155
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение tehnos »

Работает, но есть нюанс.
При добавлении файла, предыдущий удаляется.
Можно ли добавлять файлы без удаления ранее прикреплённых?
Аватара пользователя
support
Техническая поддержка
Сообщения: 9166
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение support »

Добавил информацию в документацию https://docs.rukovoditel.net.ru/index.p ... e_vlozenij
tehnos
Сообщения: 155
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение tehnos »

Спасибо!
Однако видимо есть ещё баг.
При попытке передать массив файлов $files, PHP сообщает об ошибке:

Код: Выделить всё

[Wed Jun 05 14:29:21.171605 2024] [php:error] [pid 60358] [client 192.168.1.2:50334] PHP Fatal error:  Uncaught TypeError: strlen(): Argument #1 ($string) must be of type string, array given in /var/www/oms/plugins/ext/classes/api/api.php:1072
Stack trace:
#0 /var/www/oms/plugins/ext/classes/api/api.php(75): api->action_update()
#1 /var/www/oms/api/rest.php(58): api->request()
#2 {main}
  thrown in /var/www/oms/plugins/ext/classes/api/api.php on line 1072
Если переменная $files является строкой (например, ссылка на файл) - всё работает.
Аватара пользователя
support
Техническая поддержка
Сообщения: 9166
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение support »

А покажите ваш код.
tehnos
Сообщения: 155
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение tehnos »

field_727 - тип поля "Вложения"

Код: Выделить всё

		// смотрим уже добавленные вложения
		$query = array(
			'entity_id' => 27,
			'select_fields' => '727',
			'filters' => array('id' => (string) $id)
		);
		$result = oms('select', $query);

		// записываем имена файлов (вложений) в массив (если они есть)
		$files = [];
		if(!empty($result['data'][0]['727'])) {
			foreach(explode(',', $result['data'][0]['727']) AS $filename) {
				$files[] = ['name' => $filename];
			}
		}
		
		// добавляем новый файл к ранее созданному массиву файлов
		$files[] = [
			'name' => $file_name,
			'content' => base64_encode(file_get_contents($file_link))
		];

		// отправляем вложения в запись
		$query = array(
			'entity_id' => 27,
			'data' => array('field_727' => $files),
			'update_by_field' => array('id' => (string) $id)
		);
		$result = oms('update', $query);
Аватара пользователя
support
Техническая поддержка
Сообщения: 9166
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение support »

А версия программы какая?
tehnos
Сообщения: 155
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: API. Как добавлять файлы в поле "Вложения"?

Сообщение tehnos »

Я кажется понимаю где у меня ошибка.
Разбираю. Напишу о результате.
Ответить