Настройка обмена УРБД через интернет по шагам 1-3 и 5 (1C 7.7 + windows 7):
1) Стандартный процесс создания периферийной базы через «Файл/Загрузить данные» подробно описан в фирменной документации (это от Сергея Коцюры раздел Документация по УРИБ (методические рекомендации, установка и подключение, принципы работы, инициализация, выгрузка и загрузка, управление режимами миграции, средства встроенного языка).
Если периферийка не новая (например восстанавливается после сбоя), заново выгрузите из центральной базы первоначальный образ (для этого в центральной базе в файле 1SDBSET поменяйте значение поля DBSTATUS этой периферийной базы на "N").
Если ждать загрузки периферийной базы приходится долго, есть быстрый способ – копируем центральную и в копии (периферийной) удаляем таблицы 1SDWNLDS, 1SUPDTS, редактируем таблицу 1SDBSET, удаляем в ней все строчки кроме строчки данной периферийной ПБ и центральной ЦБ базы. В оставшихся двух строчках меняем статусы, в колонке DBSTATUS переназываем, меняем местами значения полей M и P.
Как пересоздать периферийку на mssql я написал в неубиваемой базе. Для mssql есть скрипт у Maksim K.
2) Обмен выполняем в пакетном режиме 1С:Предприятия 7.7, теория:
http://www.softpoint.ru/article_id75.htm - подробно. Здесь у Ильи - кратко.
Настраиваю автообмен (операционная система windows 7) в центральной базе. Для удобства отладки и диагностики не совмещаю загрузку и выгрузку. Сначала настраиваю автообмен в центральной базе (папка для обмена D:\1C-Data\ExchangeC). В батнике создаю скрипт загрузки D:\1C-Data\CIB\Exchange\download\download_SKL.bat со следующим содержимым:
cscript D:\1C-Data\CIB\Exchange\VBS\Obmen.Center.vbs "SKL" "D:\1C-Data\CIB\" UPLOAD %WINDIR% 1
Мои файлы настройки пакетного режима в каталоге D:\1C-Data\CIB\prm раздельные на загрузку и на выгрузку. На загрузку в центральной базе D:\1C-Data\CIB\prm\SKL.Download.prm вот такой:
[General]
Quit = 1
AutoExchange = 1
Output= "D:\1C-Data\CIB\\prm\SKL.Download.log"
[AutoExchange]
SharedMode = Y
WriteTo = SKL
Исходники скриптов обмена для центральной базы Obmen.Center.vbs и периферийки Obmen.Peref.vbs и соответствующие bat-файлы для запуска обмена (загрузки и выгрузки отдельно) доступны в файле для скачивания во вложении к этой публикации. Файлы для скачивания распаковываются непосредственно в информационную базу (в архиве две папки, одна для центра другая для периферийной базы).
Батник для выгрузки изменений из центральной базы D:\1C-Data\CIB\Exchange\upload\upload_SKL.bat вот такой:
cscript D:\1C-Data\CIB\Exchange\VBS\Obmen.Center.vbs "SKL" "D:\1C-Data\CIB\" DOWNLOAD %WINDIR% 1
Файл настройки пакетного задания 1С:Предприятия 7.7 для выгрузки изменений из центральной базы D:\1C-Data\CIB\prm\SKL.Upload.prm в каталоге D:\1C-Data\CIB\prm центральной базы вот такой:
[General]
Quit = 1
AutoExchange = 1
Output= "D:\1C-Data\CIB\\prm\SKL.Upload.log"
[AutoExchange]
SharedMode = Y
ReadFrom = SKL
----------------------------------------------------------------------------------------------------------------
*Еще для настройки локального обмена есть такие публикации Александра и Никиты, а так же «Мастер пакетных файлов для 1Сv7.7» для настройки любого пакетного задания и в том числе автообмена. Далее возможные способы настройки обмена через интернет.
3) Настраиваем обмен по протоколу ФТП.
Но я уже давно привык к мощному ФТП-клиенту winscp и сделал настройки для него. При подготовке этой статьи наткнулся на подходящую респектабельную ссылку с картинками: http://center-comptech.ru/1c_7_7_nastroyka_avtoobmena_cherez_ftp.html.
Вот мои настройки. Батник запуска скачивания апдейтов для центральной базы D:\1C-Data\CIB\Exchange\download\download_SKL_run.bat следующего содержания:
runas /savecred /user:file-server\admin D:\1C-Data\CIB\Exchange\download\download_SKL.bat
D:\1C-Data\CIB\Exchange\WinSCP.com /script=D:\1C-Data\CIB\Exchange\download.txt /log=D:\1C-Data\CIB\Exchange\exchange.log
WinSCP устанавливается в папку D:\CIB\Exchange. Настройки подключений сохраняются в файл WinSCP.ini, пароль подключения шифруется. Файл WinSCP.ini формируется автоматически при создании нового подключения в графическом режиме WinSCP.exe (у меня оно называется snkosm), когда вы скачали, распаковали и запустили клиент и добавили новый логин (stored session). В расширенном режиме настройки (advanced options) можно настроить таймауты соединений (connections), а когда установите соединение в режиме ФТП-браузера будет доступна настройка options->preferences->presets->binary особенностей передачи и записи файлов на ФТП сервер.
Там есть русский интерфейс (скачивается отдельно) и все понятно. Если будут вопросы по настройке клиента, допишу об этом.
Вот настройка D:\1C-Data\CIB\Exchange\download.txt для пакетного запуска WinSCP на загрузку в центральную базу:
open snkosm
option transfer binary
option confirm off
cd exchange
get SKL1.zip \\file-server\1C-Data\ExchangeC\SKL1.zip
rm SKL1.zip
close
exit
Вот настройка пакетного запуска WinSCP для выгрузки изменений из центральной базы на ФТП D:\1C-Data\CIB\Exchange\upload.txt:
open snkosm
option transfer binary
option confirm off
cd exchange
put \\file-server\1C-Data\ExchangeC\SKL0.zip \SKL0.zip
close
exit
snkosm - это имя соединения, которое подхватывается в файле настройки акетного задания winscp, само же соединение редактируется в графическом интерфейсе winscp.
Настройки автообмена в периферийной базе (папка обмена ExchangeK):
Exchange копия\prm\SKL.Upload.prm
[General]
Quit = 1
AutoExchange = 1
Output= "D:\1C-Data\Копия\\prm\SKL.Upload.log"
[AutoExchange]
SharedMode = Y
ReadFrom = SKL
Exchange копия\prm\SVR.Download.prm
[General]
Quit = 1
AutoExchange = 1
Output= "D:\1C-Data\CIB\\prm\SKL.Download.log"
[AutoExchange]
SharedMode = Y
WriteTo = SKL
Exchange копия\Exchange\download\download_SKL.bat
rem "C:\Program Files\The Bat!\thebat.exe"/NOLOGO /CHECKautoobmen_sklad@mail.ru /EXIT;
cscript D:\1C-Data\Копия\Exchange\VBS\Obmen.Peref.vbs "SKL" "D:\1C-Data\Копия\" UPLOAD %WINDIR% 1
Exchange копия\Exchange\download\download_SKL_run.bat
D:\1C-Data\Копия\Exchange\WinSCP.com /script=D:\1C-Data\Копия\Exchange\download.txt /log=D:\1C-Data\Копия\Exchange\exchange.log
D:\1C-Data\Копия\Exchange\download\download_SKL.bat
Exchange копия\Exchange\upload\upload_SKL.bat
cscript "D:\1C-Data\Копия\Exchange\VBS\Obmen.peref.vbs" "SKL" "D:\1C-Data\Копия\" DOWNLOAD %WINDIR% 1
rem "C:\Program Files\The Bat!\thebat.exe"/NOLOGO /MAIL;USER="autoobmen_sklad@mail.ru";TO="autoobmen_cib@mail.ru";ATTACH="D:\1C-Data\ExchangeK\SKL1.zip";SUBJECT="from SKL";SEND; /EXIT
Exchange копия\Exchange\upload\upload_SKL_run.bat
cscript "D:\1C-Data\Копия\Exchange\VBS\Obmen.peref.vbs" "SKL" "D:\1C-Data\Копия\" DOWNLOAD %WINDIR% 1
rem "C:\Program Files\The Bat!\thebat.exe"/NOLOGO /MAIL;USER="autoobmen_sklad@mail.ru";TO="autoobmen_cib@mail.ru";ATTACH="D:\1C-Data\ExchangeK\SKL1.zip";SUBJECT="from SKL";SEND /EXIT
D:\1C-Data\Копия\Exchange\WinSCP.com /script=D:\1C-Data\Копия\Exchange\upload.txt /log=D:\1C-Data\Копия\Exchange\exchange.log
Exchange копия\Exchange\download.txt
open snkosm
option transfer binary
option confirm off
cd exchange
get SKL0.zip d:\1C-Data\ExchangeK\SKL0.zip
rm SKL0.zip
close
exit
Exchange копия\Exchange\upload.txt
open snkosm
option transfer binary
option confirm off
cd exchange
put d:\1C-Data\ExchangeK\SKL1.zip \SKL1.zip
close
exit
Все это есть в файле для скачивания, все содержимое подпапки "F:\Exchange копия" распаковывается непосредственно в информационную базу (в архиве две папки, одна для центра другая для периферийной базы).
Есть еще несколько вещей, о которых хочется упомянуть в заключение.
В некоторых публикациях предлагаются платные способы решения нашей задачи - УРБД Мастер и ROBOтяга, описывать которые здесь подробно не будем, предпочтем вручную поколупаться, скопировать и поправить несколько батников проприетарному ПО.
Понравилась статья «Автообмен через dropbox» от //infostart.ru/profile/36474/ (//infostart.ru/public/72556/), но только увидел её, а сам не пробовал.
О том, как организовать обмен по почте можно писать отдельно – это не просто и многие от этого способа плюются, но у него есть свои достоинства, наример – логи ФТП не всегда есть у нас в распоряжении, то есть обвинить в ошибке при желании можно и программиста (размыта ответственность) а вот пришло ли письмо на почту и когда оно пришло все могут видеть однозначно. Рою в сторону воспользоваться клиентом The bat:
Загрузка (центральная база) в bat-файле download_SKL.bat
"C:\Program Files (x86)\The Bat!\thebat.exe"/NOLOGO /CHECKautoexchange_cib@mail.ru /EXIT;
И выгрузка (центральная база)
"C:\Program Files (x86)\The Bat!\thebat.exe"/NOLOGO /MAIL;USER="autoexchange_cib@mail.ru";TO=" autoexchange_skl@mail.ru";ATTACH="D:\1C-Data\ExchangeC\SKL0.zip";SUBJECT="from CIB";SEND /EXIT
Как делается загрузка и выгрузка по почте в периферийной базе показано там, где я пишу про периферийную базу (в комментариях "rem" чуть выше).
В общем пакеты отправляются и принимаются, но пока не поборол зависание The bat после отправки письма с вложением. В гугли можно выловить несколько коварных настроек реестра для The bat, но это не так быстро как с winscp...
При обмене по почте могут быть проблемы с рассылкой измененной конфигурации из-за большого размера файлов. Выходом может служить способ перепаковки (побить архив), предложенный //infostart.ru/profile/20743/ - на Инфостарте не выложено, а выложено в http://venger.narod.ru/storage/1Cv77_BatchFiles.zip Пакетные файлы (*.bat) для архивации/обновления и/или отсылки по почте (многотомными архивами с паролем) баз данных 1С:Предприятие 7.7 (dbf-версий).