Сбор данных в 1С из удаленно расположенных файлов XLS
Обратился заказчик с проблемой "Как в 1С собирать данные с технологического оборудования которое расположено на разных производственных территориях?" Каждые 10 минут, притом что оборудование каждый день создает новый файл и в него каждые 10 минут дополняет данные.
Исходные условия:
Более десяти удалённых производственных точек с динамическими IP формируют в C:\Export ежедневные файлы вида export_data_ДД_ММ_ГГГГ_ИмяТочки.xls. Файл дополняется примерно каждые 10 минут. Центральный Debian 13 имеет публичный адрес, а Windows Server 2022 запускает сервер 1С.
Цель — доставлять целостные версии файлов, сохранять версии за прошлые дни при сетевых сбоях и предоставлять 1С контролируемый доступ только для чтения.
Реализация:
Решение написать пару powershell и bash скриптов которые запускаются по расписанию и выполняют необходимые действия
Схема решения:

Самое интересное:
Поток данных и атомарность:
- Клиент сканирует все файлы, имя которых соответствует его точке. Поэтому файл за вчера или более ранний период не теряется после полуночи.
- Размер и время изменения сравниваются дважды с паузой. Затем создаётся отдельная staging-копия; передаётся именно она.
- Копия получает SHA-256. Клиент пропускает только версии, чей хеш уже успешно отправлялся.
- Файл загружается по SFTP с уникальным именем исходное-имя.хеш.part. После успешной загрузки SFTP-команда rename меняет суффикс на .ready.
- Publisher принимает только строго допустимый шаблон для каталога конкретной точки. Каноническое имя восстанавливается из проверенного имени.
- incoming, export и archive находятся на одной файловой системе. Перемещение в export выполняется через rename(2), поэтому потребитель не видит частичный файл.
Модель отказов:
- Нет сети или сервер недоступен: исходные файлы остаются на точке; следующий запуск повторно найдёт неотправленные хеши.
- Обрыв загрузки: остаётся только .part, publisher его не читает; устаревшие части удаляются регламентно.
- Сбой после rename в ready: publisher обработает файл на следующем запуске.
- Сбой publisher: готовые файлы накапливаются изолированно; сигнал мониторинга сообщает об очереди.
- Компрометация ключа точки: злоумышленник ограничен chroot-каталогом этой точки; ключ и пользователя можно независимо отключить.
- Недоступна Samba: опубликованные и архивные данные сохраняются; локальный импорт повторяется после восстановления.
Эксплуатация и масштабирование:
- Запуски точек распределяются по минутам или получают случайную задержку, чтобы исключить пиковую нагрузку.
- Планировщик не запускает второй экземпляр задачи; скрипт дополнительно применяет именованный Mutex.
- Каждая новая точка получает отдельные Linux-пользователя, chroot, ключ, имя и запись в конфигурации publisher.
- Отзыв точки: заблокировать пользователя, удалить/отозвать ключ, сохранить журнал и данные согласно регламенту.
- Обновления сначала проверяются на тестовой точке, включая обрыв передачи, смену суток и восстановление из архива.