Настройка 1С:Сервера Взаимодействия (Collaboration Server) — задача нетривиальная, особенно когда речь заходит о подключении внешнего хранилища файлов. Часто встроенные инструменты регистрации через командную строку (Ring) или специальные обработки не отрабатывают корректно с S3-совместимыми хранилищами, такими как MinIO. В этой статье мы подробно разберем, как «подружить» 1С и MinIO, выполнив настройки напрямую в базе данных PostgreSQL, и решим распространенные ошибки, возникающие в процессе.
При попытке зарегистрировать хранилище через утилиту curl, консоль администрирования или стандартную обработку CollaborationSystemRegister.epf, администраторы часто сталкиваются с ошибками HTTP 400 (Bad Request) или проблемами с авторизацией. Это связано с тем, что сервер взаимодействия может некорректно формировать запросы к MinIO или использовать параметры, которые ваша версия хранилища не поддерживает (например, различия в версиях подписи V2/V4 или API).
Самый надежный способ настройки в таких случаях — прямая вставка конфигурации в таблицу public.storage_server базы данных, которую использует сервер взаимодействия.
Рассмотрим ситуацию, когда сервер взаимодействия установлен, PostgreSQL работает, но при попытке отправить файл через обсуждения 1С возникает ошибка. Нам необходимо добавить запись о сервере хранилища вручную.
Для этого нам понадобится инструмент администрирования PostgreSQL, например, pgAdmin или DBeaver. Подключимся к базе данных сервера взаимодействия и выполним SQL-запрос INSERT. Обратите внимание, что структура таблицы может меняться в зависимости от версии сервера взаимодействия, поэтому мы приведем наиболее полный вариант запроса, решающий проблему отсутствующих полей.
Сформируем запрос, учитывая обязательные поля api_type и storage_type, отсутствие которых часто вызывает ошибку SQL state: 23502 (нарушение ограничения NOT NULL).
INSERT INTO public.storage_server(
id,
type,
base_url,
container_url,
container_name,
region,
access_key_id,
secret_key,
signature_version,
is_deleted,
upload_limit,
download_limit,
file_size_limit,
created_at,
updated_at,
cdn_url,
cdn_key_id,
cdn_secret_key,
state,
cdn_enabled,
path_style_access_enabled,
bytes_to_keep,
days_to_keep,
pricing_url,
api_type, -- Важное поле для новых версий
storage_type -- Важное поле для новых версий
) VALUES (
uuid_generate_v4(),
'AMAZON',
'http://IP_ВАШЕГО_MINIO:9000', -- Внимание на порт!
'',
'имя_вашего_бакета',
'us-east-1', -- Регион (часто можно оставить пустым или us-east-1)
'minio_access_key', -- Ваш логин MinIO
'minio_secret_key', -- Ваш пароль MinIO
'V2', -- Версия подписи (V2 часто стабильнее для старых версий CS)
false,
1073741824, -- Лимиты
1073741824,
104857600,
CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP,
NULL, NULL, NULL,
'ACTIVE',
false,
true, -- path_style_access_enabled (важно для локальных IP)
0, 0, NULL,
'AMAZON', -- Значение для S3-совместимых хранилищ
'DEFAULT'
);
Разберем ключевые параметры, влияющие на успех подключения:
api_type и storage_type: Если при выполнении запроса вы получаете ошибку о том, что значение NULL недопустимо, обязательно добавьте эти поля со значениями 'AMAZON' и 'DEFAULT' соответственно. В крайнем случае, можно временно снять галочку «Not NULL» в свойствах столбца через pgAdmin, но лучше заполнить данные корректно.path_style_access_enabled: Установите в true. MinIO в локальной сети обычно работает через путь (http://host/bucket), а не через субдомены (http://bucket.host), что характерно для настоящего Amazon S3.signature_version: Если с V4 возникают проблемы (ошибки подписи), попробуйте указать V2.Одна из самых частых и неочевидных проблем: файлы успешно загружаются в MinIO (их видно в веб-интерфейсе), но в 1С приходят битые файлы размером около 2 КБ. При попытке открыть такой файл пользователь видит ошибку формата.
Причина: В новых версиях MinIO разделены порты для API и для веб-консоли.
Если в поле base_url вы укажете порт веб-консоли (например, 9001), сервер взаимодействия вместо файла скачает HTML-код страницы авторизации MinIO. Этот HTML-код как раз весит около 2 КБ.
Решение: Проверьте, на каких портах слушает MinIO. В Linux это можно сделать командой:
sudo netstat -pnltu | grep minio
Убедитесь, что в базе данных в поле base_url указан именно API-порт (чаще всего 9000).
Если вы все настроили верно, порты указаны правильно, но при отправке файла вы получаете ошибку HTTP 403 Forbidden, а в логах MinIO видите сообщение Access Denied, связанное с полями формы (PostPolicyBucket), проблема кроется в версиях ПО.
Современные версии MinIO (выпущенные в конце 2023 – 2024 годах) стали строже проверять POST-запросы. 1С:Сервер Взаимодействия может отправлять дополнительные поля формы, которые не объявлены в политике безопасности MinIO, из-за чего сервер отклоняет запрос.
Решение: Использовать более старую версию MinIO. Практика показывает, что версии 2022 года (например, релизы октября-ноября 2022) работают стабильно и не блокируют запросы от 1С.
Иногда после настройки и перезагрузки сервера на Windows службы 1ce-cs-hazelcast или 1ce-cs-elasticsearch не запускаются автоматически, выдавая ошибку: «Служба не ответила на запрос своевременно» (Event ID 7009). Для решения подобных системных сложностей при развертывании инфраструктуры полезно использовать справочник по администрированию систем Windows, Linux и 1С.
Это происходит потому, что Java-приложения тяжелые и не успевают стартовать за отведенные Windows по умолчанию 30 секунд.
Решение: Увеличьте тайм-аут ожидания служб через реестр.
regedit.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control.ServicesPipeTimeout.Если что-то не работает, пройдемся по пунктам:
storage_server обязательно перезапускайте службу сервера взаимодействия.path_style_access_enabled установлен в true.signature_version).Следуя этим шагам и используя прямую конфигурацию через SQL, вы сможете обеспечить стабильную работу обмена файлами в Системе Взаимодействия.