По мере роста организации возникает необходимость оперативного обмена информацией бухгалтерского и оперативного учета. На базе 1С Предприятие данный вопрос решается при помощи стандартной компоненты управления распределенными информационными базами (УРИБ). В данной статье мы рассмотрим создание и настройку надежной системы автообмена на базе ftp-сервера.
Базовые возможности УРИБ предусматривают использование электронной почты, в частности требуется наличия MS Office Outlook, что не всегда приемлемо. Альтернативой может служить использование компоненты URBD4Mail, однако у нее иногда бывают проблемы совместимости. Кроме того при использовании электронной почты трудно достичь стабильной работы системы. Во многом это связано с особенностями данного вида связи, такими как: ограничение максимального размера вложения, возможные задержки при передаче сообщения, ошибки в работе спам-фильтров, предельный размер почтового ящика (который может оказаться забит спамом). Более удобным и надежным способом способом организации автообмена будет использование ftp-сервера. Сервер может быть как корпоративным, так и внешним (провайдера интернет или хостинг провайдера).
Создаем распределенную БД
Первым делом нам необходимо создать распределенную БД, это делается стандартными средствами 1С Предприятия и требует наличия компоненты УРИБ. В нашем случае это будет конфигурация Торговля и Склад (ТиС). Для этого заходим в Конфигуратор, выбираем Администрирование - Распределенная ИБ - Управление, сначала создаем центральную ИБ (нажав соответствующую кнопку), затем периферийные
ИБ в необходимом количестве. В папке с базой не забываем создать два каталога с именами "PC" и "CP" на латинице ("периферия-центр" и "центр-периферия" соответственно), в настройках автообмена следует установить автоматический режим для всех периферийных баз. После чего необходимо выгрузить данные для каждой периферийной базы (кнопка Выгрузить данные). Отдельно хотелось бы обратить внимание, что все пути к базам и названия папок баз должны быть только на латинице.
Теперь необходимо развернуть периферийную БД на целевой машине. Для этого нам потребуется файл выгрузки (находится в каталоге CP базы данных) и заготовка базы. Для создания заготовки необходимо скопировать из целевой базы все каталоги и необходимые файлы и
библиотеки (V7Plus.dll, компоненты для работы с торговым оборудованием и т.п.), пример такой заготовки на рисунке слева. На удаленной машине подключаем папку с заготовкой базы и загружаем ее в Конфигуратор, далее Администрирование - Загрузить данные указываем файл выгрузки и загружаем в базу данные.
Осталось произвести окончательную настройку баз - установить префиксы БД (каждая база должна иметь свой уникальный префикс), откорректировать списки пользователей и, если необходимо, привести в соответствие печатные формы. Следует помнить, что все изменения конфигурации следует производить только в центральной базе, а печатные формы, списки пользователей и прочее содержимое каталогов Extforms и ExtDb следует изменять для каждой базы в отдельности (изменения этих каталогов при автообмене не учитываются).Также необходимо создать в каждой базе пользователя для автообмена с правами Администратора и обязательно задать для него пароль, имя пользователя обязательно должно быть на латинице.
Настраиваем автообмен
Для настройки автообмена через ftp можно использовать входящий в поставку Windows клиент ftp.exe, однако мы рекомендуем использовать для этих целей бесплатную программу WinSCP (скачать), к преимуществам которой можно отнести широкие возможности скриптового языка и работу по защищенным протоколам. Из папки с установленной программой нам необходим только один файл WinSCP.exe, который мы помещаем в отдельную папку, здесь же будут храниться все необходимые скрипты (В нашем примере C:\1c_bases\script). Сама процедура автообмена выглядит следующим образом:
Первая строка запускает загрузку автообмена с ftp-сервера, вторая запускает 1С в пакетном режиме, после ключа /D указывается в кавычках путь к БД так, как он прописан в окне запуска 1С, ключ /N указывает пользователя для допуска у БД, а ключ /P его пароль. Последний ключ /@ указывает путь к файлу autoexec.prm без кавычек. Обратите внимание, что между ключем и его параметром пробелы отсутствуют. Третья строка запускает загрузку на сервер. Если все пути и учетные данные указаны правильно, то по запуску bat-файла должно появиться черное окно консоли WinSCP, затем окно конфигуратора 1С, затем снова консоль WinSCP, которая закроется автоматически.
Для периферийной базы необходимо изменить get.ini и put.ini на загрузку / выгрузку файлов соответствующих базе. В нашем примере следует изменить следующие строки (будем считать, что пути к базам на обоих машинах одинаковы):
get.ini
put.ini
В окончание настройки следует внести коррективы в Avtoobmen.bat с учетом реальных путей файлам и параметров доступа к базе. В дальнейшем обмен осуществляется запуском пользователем ярлыка на Avtoobmen.bat.
Создаем распределенную БД
Теперь необходимо развернуть периферийную БД на целевой машине. Для этого нам потребуется файл выгрузки (находится в каталоге CP базы данных) и заготовка базы. Для создания заготовки необходимо скопировать из целевой базы все каталоги и необходимые файлы и
Осталось произвести окончательную настройку баз - установить префиксы БД (каждая база должна иметь свой уникальный префикс), откорректировать списки пользователей и, если необходимо, привести в соответствие печатные формы. Следует помнить, что все изменения конфигурации следует производить только в центральной базе, а печатные формы, списки пользователей и прочее содержимое каталогов Extforms и ExtDb следует изменять для каждой базы в отдельности (изменения этих каталогов при автообмене не учитываются).Также необходимо создать в каждой базе пользователя для автообмена с правами Администратора и обязательно задать для него пароль, имя пользователя обязательно должно быть на латинице.
Настраиваем автообмен
Для настройки автообмена через ftp можно использовать входящий в поставку Windows клиент ftp.exe, однако мы рекомендуем использовать для этих целей бесплатную программу WinSCP (скачать), к преимуществам которой можно отнести широкие возможности скриптового языка и работу по защищенным протоколам. Из папки с установленной программой нам необходим только один файл WinSCP.exe, который мы помещаем в отдельную папку, здесь же будут храниться все необходимые скрипты (В нашем примере C:\1c_bases\script). Сама процедура автообмена выглядит следующим образом:
- Загрузка с FTP сервера файлов автообмена и помещение их в необходимые папки базы данных.
- Запуск 1С в пакетном режиме для осуществления автообмена.
- Выгрузка файлов автообмена и загрузка их на 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- путь к файлу обмена в БД
# Вывод лога на экран
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.zipput.ini
put С:\1c_bases\DB\PC\F9.zip /tis/F9.zip В окончание настройки следует внести коррективы в Avtoobmen.bat с учетом реальных путей файлам и параметров доступа к базе. В дальнейшем обмен осуществляется запуском пользователем ярлыка на Avtoobmen.bat.

ещё вариант - использовать ftpdrive http://www.killprog.com/fdrvr.html
А смысл?
В том, что отпадает необходимость в бат файлах. Т.е. исчезают промежуточные звенья. Я раньше тоже использовал метод описанный в статье и он вполне нормально работал, но с фтпдрайв всё гораздо проще.
А автообмен запускается вручную из конфигуратора? Не знаю как вы, но я не считаю хорошей идеей доступ пользователей в конфигуратор, поэтому один бат-файл делать все равно придется.
Один ярлык для запуска + один .prm + dropbox
ps. вариант не для параноиков