Настройка обмена РИБ через FTP

Советую использовать продвинутую технологию обмена через RSYNC. Тут.

Задача - обеспечить обмен Распределенной Информационной Базы (РИБ) 1С через интернет. Решение первое - использовать FTP. Проблема - неустойчивые каналы связи на точках (магазинах), от 32кбит/с, соответственно надо сделать так, чтобы скачивание происходило только при изменении файлов на сервере. Также канал может прерываться, соответственно требуется возможность докачки файлов обмена. Обмен должен происходить раз в час. Размер файлов обмена могут достигать 500мб, например при обновлении конфигурации базы.

Порядок действий:

    1. Скачать на сервер и установить FTP сервер FileZilla Server.

    2. Сделать на сервере папку обмена и настроить FileZilla на доступ к этой папке через FTP по логину/паролю.

    3. Настроить 1С на сервере на загрузку/выгрузку файлов обмена в формате .zip в эту папку.

    4. Настроить 1С на сервере на автоматический запуск обмена данными для определенного пользователя, и автоматический выход из системы по завершению обмена.

    5. Скачать и распаковать на сервер файл md5_server.7z.

    6. Настроить отдельную учетную запись 1c-tasks на сервере на запуск скрипта md5sync.cmd каждую минуту.

    7. Настроить отдельную учетную запись 1c-tasks на сервере на запуск скрипта 1cobmen.cmd каждый час с 7:00 до полуночи.

    8. Скачать и распаковать на клиенте файл OBMEN_client.7z

    9. Настроить 1С на клиенте на загрузку файлов обмена в формате .zip из папки done.

    10. Настроить 1С на клиенте на выгрузку файлов обмена в формате .zip в папку upload.

    11. Настроить 1С на клиенте на автоматический запуск обмена данными для определенного пользователя, и автоматический выход из системы по завершению обмена.

    12. Настроить отдельную учетную запись 1c-tasks на клиенте на запуск скрипта startdownload.cmd каждый час с 7:30 до полуночи.

    13. Настроить отдельную учетную запись 1c-tasks на клиенте на запуск скрипта startupload.cmd каждый час с 7:50 до полуночи.

    14. Настроить отдельную учетную запись 1c-tasks на клиенте на запуск скрипта update1c.cmd на 4 часа утра.

Предварительно надо просмотреть все .cmd файлы и поправить там пути запуска, иначе не заработает.

Алгоритм работы обмена:

    • Каждую минуту на сервере программа генерирует MD5 суммы файлов обмена, и складывает их рядом. Каждый час происходит запуск 1С для обмена РИБ.

    • На клиенте, каждый час до полуночи происходит скачивание файла MD5 с сервера скриптом startdownload.cmd, и сверка с тем файлом, что имеется в локальной папке обмена. Если файл отсутствует, или не соответствует тому, что на сервере, то происходит запуск скачивания файла обмена с сервера. Программа скачивания wget.exe запускается с ключами, позволяющими производить докачку файла в случае неудачи. Допускается 40 попыток неудачного скачивания. Если 40 раз скачать файл не удалось, то пишется файл логов download.log с описанием ошибки.

    • Каждый час происходит также закачка файла обмена из папки upload на сервер, по результату генерируется лог файл upload.log. При после успешной или неуспешной попытки закачивания файла на сервер, лог файл upload.log также закачивается на сервер.

    • Каждый день в 4:00 происходит запуск 1С через скрипт update1c.cmd для обновления конфигурации базы данных.

    • При каждом запуске скрипта update1c.cmd происходит очистка оперативной памяти от всех программ 1cv8* и winrar*. Это соответственно надо для того, чтобы система могла быстро и правильно обновить конфигурацию базы данных. Winrar в моем случае использовался для архивирования баз данных. И мог иногда зависать в памяти с ошибкой.

    • При запуске startdownload.cmd происходит запуск команды: taskkill /IM 1cv8* /T /F /FI "USERNAME eq 1c-tasks", которая очищает память от всех запущенных программ 1С от пользователя 1c-tasks. Иногда 1С зависает при попытке обновиться с какой-то ошибкой.

Дополнительно надо открыть 20 и 21 порты на сервере, а также сделать статичный IP адрес сервера (если есть только динамически, то надо использовать службы, наподобие DynDNS.com).

Также не забываем, что все логины/пароли при такой схеме работы через FTP передаются в открытом виде и могут быть перехвачены. Для полноценной защиты данных, информационный канал должен быть зашифрован!

Минусы:

    1. Если файл обмена очень большой, то скрипт на плохом канале связи не успевает закачать файл клиенту, и каждый час клиент будет безуспешно пытаться скачать заново новый файл обмена.

    2. Докачка файла обмена с сервера происходит не всегда успешно.

    3. По непонятным причинам обмен файлами может прекратиться. Требуется перезагрузка компьютера.