График : Пн-Пт: 9.30 - 18.00
По мере роста организации возникает необходимость оперативного обмена информацией бухгалтерского и оперативного учета. На базе 1С Предприятие данный вопрос решается при помощи стандартной компоненты управления распределенными информационными базами (УРИБ). В данной статье мы рассмотрим создание и настройку надежной системы автообмена на базе ftp-сервера.
Базовые возможности УРИБ предусматривают использование электронной почты, в частности требуется наличия MS Office Outlook, что не всегда приемлемо. Альтернативой может служить использование компоненты URBD4Mail, однако у нее иногда бывают проблемы совместимости. Кроме того при использовании электронной почты трудно достичь стабильной работы системы. Во многом это связано с особенностями данного вида связи, такими как: ограничение максимального размера вложения, возможные задержки при передаче сообщения, ошибки в работе спам-фильтров, предельный размер почтового ящика (который может оказаться забит спамом). Более удобным и надежным способом организации автообмена будет использование ftp-сервера. Сервер может быть как корпоративным, так и внешним (провайдера интернет или хостинг провайдера).
Создаем распределенную БД
Первым делом нам необходимо создать распределенную БД, это делается стандартными средствами 1С Предприятия и требует наличия компоненты УРИБ. В нашем случае это будет конфигурация Торговля и Склад (ТиС). Для этого заходим в Конфигуратор, выбираем Администрирование - Распределенная ИБ - Управление, сначала создаем центральную ИБ (нажав соответствующую кнопку), затем периферийные
ИБ в необходимом количестве. В папке с базой не забываем создать два каталога с именами "PC" и "CP" на латинице ("периферия-центр" и "центр-периферия" соответственно), в настройках автообмена следует установить автоматический режим для всех периферийных баз. После чего необходимо выгрузить данные для каждой периферийной базы (кнопка Выгрузить данные). Отдельно хотелось бы обратить внимание, что все пути к базам и названия папок баз должны быть только на латинице.
Теперь необходимо развернуть периферийную БД на целевой машине. Для этого нам потребуется файл выгрузки (находится в каталоге CP базы данных) и заготовка базы. Для создания заготовки необходимо скопировать из целевой базы все каталоги и необходимые файлы и библиотеки (V7Plus.dll, компоненты для работы с торговым оборудованием и т.п.), пример такой заготовки на рисунке слева. На удаленной машине подключаем папку с заготовкой базы и загружаем ее в Конфигуратор, далее Администрирование - Загрузить данные указываем файл выгрузки и загружаем в базу данные.
Осталось произвести окончательную настройку баз - установить префиксы БД (каждая база должна иметь свой уникальный префикс), откорректировать списки пользователей и, если необходимо, привести в соответствие печатные формы. Следует помнить, что все изменения конфигурации следует производить только в центральной базе, а печатные формы, списки пользователей и прочее содержимое каталогов Extforms и ExtDb следует изменять для каждой базы в отдельности (изменения этих каталогов при автообмене не учитываются).Также необходимо создать в каждой базе пользователя для автообмена с правами Администратора и обязательно задать для него пароль, имя пользователя обязательно должно быть на латинице.
Настраиваем автообмен
Для настройки автообмена через ftp можно использовать входящий в поставку Windows клиент ftp.exe, однако мы рекомендуем использовать для этих целей бесплатную программу WinSCP (a rel="nofollow" target="_blank" href="http://winscp.net/eng/download.php">скачать), к преимуществам которой можно отнести широкие возможности скриптового языка и работу по защищенным протоколам. Из папки с установленной программой нам необходим только один файл WinSCP.exe, который мы помещаем в отдельную папку, здесь же будут храниться все необходимые скрипты (В нашем примере C:\1c_bases\script). Сама процедура автообмена выглядит следующим образом:
Для пользователя процесс должен быть максимально простым и сводиться к запуску единственного ярлыка. Рассмотрим содержимое скриптов для центральной базы. Создадим текстовый документ следующего содержания:
# Вывод лога на экран
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, в данном файле мы использовали следующие обозначения:
Для загрузки файлов на сервер создадим скрипт 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.