1С Предприятие 7.7 Настройка автообмена через FTP

  • Автор:

1c_complex77.png

По мере роста организации возникает необходимость оперативного обмена информацией бухгалтерского и оперативного учета. На базе 1С Предприятие данный вопрос решается при помощи стандартной компоненты управления распределенными информационными базами (УРИБ). В данной статье мы рассмотрим создание и настройку надежной системы автообмена на базе ftp-сервера.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Базовые возможности УРИБ предусматривают использование электронной почты, в частности требуется наличия MS Office Outlook, что не всегда приемлемо. Альтернативой может служить использование компоненты URBD4Mail, однако у нее иногда бывают проблемы совместимости. Кроме того при использовании электронной почты трудно достичь стабильной работы системы.

Во многом это связано с особенностями данного вида связи, такими как: ограничение максимального размера вложения, возможные задержки при передаче сообщения, ошибки в работе спам-фильтров, предельный размер почтового ящика (который может оказаться забит спамом). Более удобным и надежным способом способом организации автообмена будет использование ftp-сервера. Сервер может быть как корпоративным, так и внешним (провайдера интернет или хостинг провайдера).

Создаем распределенную БД

Первым делом нам необходимо создать распределенную БД, это делается стандартными средствами 1С Предприятия и требует наличия компоненты УРИБ. В нашем случае это будет конфигурация Торговля и Склад (ТиС). Для этого заходим в Конфигуратор, выбираем Администрирование - Распределенная ИБ - Управление, сначала создаем центральную ИБ (нажав соответствующую кнопку)

1cv77-urib-ftp-001.jpg

затем периферийные ИБ в необходимом количестве. В папке с базой не забываем создать два каталога с именами "PC" и "CP" на латинице ("периферия-центр" и "центр-периферия" соответственно), в настройках автообмена следует установить автоматический режим для всех периферийных баз. После чего необходимо выгрузить данные для каждой периферийной базы (кнопка Выгрузить данные). Отдельно хотелось бы обратить внимание, что все пути к базам и названия папок баз должны быть только на латинице.

1cv77-urib-ftp-002.jpgТеперь необходимо развернуть периферийную БД на целевой машине. Для этого нам потребуется файл выгрузки (находится в каталоге CP базы данных) и заготовка базы. Для создания заготовки необходимо скопировать из целевой базы все каталоги и необходимые файлы и библиотеки (V7Plus.dll, компоненты для работы с торговым оборудованием и т.п.), пример такой заготовки на рисунке слева. На удаленной машине подключаем папку с заготовкой базы и загружаем ее в Конфигуратор, далее Администрирование - Загрузить данные указываем файл выгрузки и загружаем в базу данные.

1cv77-urib-ftp-003.jpgОсталось произвести окончательную настройку баз - установить префиксы БД (каждая база должна иметь свой уникальный префикс), откорректировать списки пользователей и, если необходимо, привести в соответствие печатные формы. Следует помнить, что все изменения конфигурации следует производить только в центральной базе, а печатные формы, списки пользователей и прочее содержимое каталогов Extforms и ExtDb следует изменять для каждой базы в отдельности (изменения этих каталогов при автообмене не учитываются).Также необходимо создать в каждой базе пользователя для автообмена с правами Администратора и обязательно задать для него пароль, имя пользователя обязательно должно быть на латинице.

Настраиваем автообмен

Для настройки автообмена через ftp можно использовать входящий в поставку Windows клиент ftp.exe, однако мы рекомендуем использовать для этих целей бесплатную программу WinSCP (скачать), к преимуществам которой можно отнести широкие возможности скриптового языка и работу по защищенным протоколам. Из папки с установленной программой нам необходим только один файл WinSCP.exe, который мы помещаем в отдельную папку, здесь же будут храниться все необходимые скрипты (В нашем примере C:\1c_bases\script). Сама процедура автообмена выглядит следующим образом:

  1. Загрузка с FTP сервера файлов автообмена и помещение их в необходимые папки базы данных.
  2. Запуск 1С в пакетном режиме для осуществления автообмена.
  3. Выгрузка файлов автообмена и загрузка их на FTP сервер.

Для пользователя процесс должен быть максимально простым и сводиться к запуску единственного ярлыка. Рассмотрим содержимое скриптов для центральной базы. Создадим текстовый документ следующего содержания:

# Вывод лога на экран
option echo on

# Автоматическое подтверждение действия по умолчанию
option confirm off

# Соединяемся с сервером
open ftp://login:password@mysite.ru -passive

# Загружаем файл обмена в каталог БД
get /tis/F9.zip С:\1c_bases\DB\PC\F9.zip

# Отсоединяемся от сервера
close

# Закрываем WinSCP
exit

Сохраним его как get.ini, это скрипт загрузки обмена с ftp, в данном файле мы использовали следующие обозначения:

  • mysite.ru- адрес вашего ftp-сервера
  • /tis/F9.zip - путь к файлу обмена на ftp-сервере (имена файлов можно посмотреть в настройках обмена, рис.2)
  • С:\1c_bases\DB\PC\F9.zip - путь к файлу обмена в БД

Для загрузки файлов на сервер создадим скрипт put.ini, который аналогичен get.ini и отличается от него одной строкой:

# Вывод лога на экран
option echo on

# Автоматическое подтверждение действия по умолчанию
option confirm off

# Соединяемся с сервером
open ftp://login:password@mysite.ru -passive

# Загружаем файл обмена на сервер
put С:\1c_bases\DB\CP\F8.zip
/tis/F8.zip

# Отсоединяемся от сервера
close

# Закрываем WinSCP
exit

Для пакетного запуска 1С в режиме автообмена создаем следующий скрипт, и сохраняем его как autoexec.prm

[General]

AutoExchange=Y
Quit=Y
Output=C:\1c_bases\script\avtoobmen.log

[AutoExchange]

SharedMode=Y
ReadFrom=*
WriteTo=*

Команда Output задает путь для вывода лог-файла в который будет выводится результат обмена. Для автоматического запуска наших скриптов создадим пакетный файл Avtoobmen.bat и напишем в него следующие строки:

winscp.exe /console /script=get.ini

"C:\Program Files\1Cv77\BIN\1cv7.exe" CONFIG /D"С:\1с_bases\DB\" /NAvtoobmen/P123456 /@С:\1с_bases\script\autoexec

winscp.exe /console /script=put.ini

Первая строка запускает загрузку автообмена с ftp-сервера, вторая запускает 1С в пакетном режиме, после ключа /D указывается в кавычках путь к БД так, как он прописан в окне запуска 1С, ключ /N указывает пользователя для допуска у БД, а ключ /P его пароль. Последний ключ /@ указывает путь к файлу autoexec.prm без кавычек. Обратите внимание, что между ключем и его параметром пробелы отсутствуют. Третья строка запускает загрузку на сервер. Если все пути и учетные данные указаны правильно, то по запуску bat-файла должно появиться черное окно консоли WinSCP, затем окно конфигуратора 1С, затем снова консоль WinSCP, которая закроется автоматически.

Для периферийной базы необходимо изменить get.ini и put.ini на загрузку / выгрузку файлов соответствующих базе. В нашем примере следует изменить следующие строки (будем считать, что пути к базам на обоих машинах одинаковы):

get.ini

get /tis/F8.zip С:\1c_bases\DB\CP\F8.zip

put.ini

put С:\1c_bases\DB\PC\F9.zip /tis/F9.zip

В окончание настройки следует внести коррективы в Avtoobmen.bat с учетом реальных путей файлам и параметров доступа к базе. В дальнейшем обмен осуществляется запуском пользователем ярлыка на Avtoobmen.bat.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments