УРБД: Автоматический обмен через интернет между центральной и периферийными базами в Windows 7 + 1С:Предприятие 7.7.

06.05.13

Интеграция - Перенос данных 1C

На инфостарте есть ряд навороченных средств, таких как у romix'а http://infostart.ru/public/15564/ или у Вадима http://infostart.ru/public/14945/, а в моей публикации все делается вручную, используются bat- файлы, vbscript, принцип действия прозрачен + по горячим следам поднимания УРБД уделил время многочисленным ссылкам. Весь процесс настройки автообмена через интернет от начала до конца:
1) Создаю периферийную базу.
2) Настраиваю автообмен УРБД (можно мастером).
3) Настраиваю пересылку файликов по ФТП.
4) Еще бывает автообмен через dropbox от Антона  (http://infostart.ru/public/72556/).
5) Настраиваю пересылку файликов по электронной почте (опционально).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
УРБД через интернет
.zip 7,74Mb
40
40 Скачать (1 SM) Купить за 1 850 руб.

Настройка обмена УРБД через интернет по шагам 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 - подробно. Здесь у Ильи - кратко.

Общие принципы на примере совета Vasil Pupkin из Google+. Чтобы посмотреть цитату полностью нажмите спойлер:

------------------------- начало цитаты -----------------------------

Создайте *.cmd или *.vbs, в котором пропишите команды по запуску автообмена.

'On Error Resume Next
Dim DShell
Set DShell = CreateObject("WScript.Shell")

cmdTpl = "C:\Progra~1\1Cv77\BIN\1cv7s.exe CONFIG /DF:\Bases\Centr /nАдминистратор /p265042 /@F:\Start\SharedSync.prm"
DShell.Run cmdTpl, 1, True

cmdTpl = "C:\Progra~1\1Cv77\BIN\1cv7s.exe CONFIG /DF:\Bases\FA_SQL /nАдминистратор /p265042 /@F:\Start\SharedSync.prm"
DShell.Run cmdTpl, 1, True

cmdTpl = "C:\Progra~1\1Cv77\BIN\1cv7s.exe CONFIG /DF:\Bases\Centr /nАдминистратор /p265042 /@F:\Start\SharedSync.prm"
DShell.Run cmdTpl, 1, True

Создайте файл пакетного режима работы (файл F:\Start\SharedSync.prm в данном примере).

[General]

AutoExchange=1
Quit=1

[AutoExchange]

SharedMode=1
ReadFrom=*
WriteTo=*

Настройте планировщик задач (Пуск - Программы - Стандартные - Служебные - Назначенные задания) на запуск созданного файла (первого) по расписанию.

------------------------- конец цитаты -----------------------------

Настраиваю автообмен (операционная система 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\VBS\Obmen.Center.vbs находится в файле для скачивания этой публикации и под этим спойлером:

------------------------- начало цитаты -----------------------------

Set Shell = WScript.CreateObject("WScript.Shell")

Set ArgObj = WScript.Arguments

Dim CodeIB
Dim pathIB
Dim Work
Dim pathWin

Set FS = CreateObject("Scripting.FileSystemObject")

Set Shell = WScript.CreateObject("WScript.Shell")
Set ArgObj = WScript.Arguments

Dim CodeIB
Dim pathIB
Dim Work
Dim pathWin

Dim path_nameUploadPRM
Dim path_nameUploadLog
Dim path_nameDownloadPRM
Dim path_nameDownloadLog
Dim path_nameFullLog

Dim path1cv7
Dim countBase

InitialsSub
WorkSub

Sub InitialsSub

If ArgObj.Count < 5 Then

WScript.Echo "Использование: Obmen.Center.vbs " 
WScript.Quit (GENERAL_FAILURE)

End If

CodeIB = ArgObj.Item(0)
pathIB = ArgObj.Item(1)
Work = ArgObj.Item(2)
pathWin = ArgObj.Item(3)
countBase = ArgObj.Item(4)

V77CLSID = Shell.RegRead("HKEY_CLASSES_ROOT\V77.Application\CLSID\")
path1cv7 = Shell.RegRead("HKEY_CLASSES_ROOT\CLSID\"&V77CLSID&"\LocalServer32\")

if FS.FolderExists(pathIB)=False Then

WScript.Echo "Указанный каталог информационной базы не существует: "+pathIB
WScript.Quit (GENERAL_FAILURE)

End if

pathPRM = pathIB&"\prm\"

If FS.FolderExists(pathPRM)=False Then

FS.CreateFolder(pathPRM)

End if

If Work = "UPLOAD1" Then

BaseCodeFromDisk

End If

nameUploadPRM = CodeIB & ".Upload.prm"
nameUploadLog = CodeIB & ".Upload.log"
nameDownloadPRM = CodeIB & ".Download.prm"
nameDownloadLog = CodeIB & ".Download.log"
nameFullLog = "Distr.log"

path_nameUploadPRM = pathPRM & nameUploadPRM
path_nameUploadLog = pathPRM & nameUploadLog
path_nameDownloadPRM = pathPRM & nameDownloadPRM
path_nameDownloadLog = pathPRM & nameDownloadLog
path_nameFullLog = pathPRM & nameFullLog

End Sub

Sub WorkSub

'Загрузка из
If Work = "UPLOAD" Then

UploadSub 

ElseIf Work = "DOWNLOAD" Then 

DownloadSub

End If

End Sub

Sub UploadSub

set filestream = FS.OpenTextFile(path_nameUploadPRM,2,1)

filestream.Write(_
"[General]" & vbNewLine & _
"Quit = 1" & vbNewLine & _
"AutoExchange = 1" & vbNewLine & _
"Output= """ & path_nameUploadLog &"""" & vbNewLine & _
"[AutoExchange]" & vbNewLine & _
"SharedMode = Y" & vbNewLine & _
"ReadFrom = " & CodeIB & vbNewLine & _
"")

filestream.Close()

If FS.FileExists(path_nameUploadLog) = True Then

FS.DeleteFile(path_nameUploadLog)

End If

Shell.Run """" & path1cv7 & """ config /d""" & pathIB & """ /NURBD /Purbd /@""" & path_nameUploadPRM & """" , vbNoFocus,True
rem Shell.Run """" C:\Program Files (x86)\1Cv77s\BIN\1cv7s.exe """ config /d""" & pathIB & """ /NURBD /Purbd /@""" & path_nameUploadPRM & """" , vbNoFocus,True

UploadFileName = ""
UploadErrorDescriprion = ""
UploadSucces = 0
UploadFail = 0
sMessage = ""

If FS.FileExists(path_nameUploadLog) = True Then

set filestream = FS.OpenTextFile(path_nameUploadLog,1)

While filestream.AtEndOfStream = False

sLine = filestream.ReadLine()

Ar = Split(sLine,";")
If UBound(Ar)>=7 Then

If Ar(4)="Distr" Then

Sobitie = Ar(5)
If Sobitie="DistUplBeg" Then

UploadFileName = Ar(7)
sMessage = sMessage & "Выполнена попытка загрузки из файла: " & UploadFileName & vbNewLine & vbNewLine

ElseIf Sobitie="DistUplErr" Then

sMessage = sMessage & "Во время загрузки возникла ошибка: " & Ar(7) & vbNewLine & vbNewLine
UploadCodeError = cCur(Ar(6))

ElseIf Sobitie="DistUplFail" Then

UploadFail = cCur(Ar(6))
sMessage = sMessage & "ЗАГРУЗКА НЕ БЫЛА ВЫПОЛНЕНА! " & vbNewLine & vbNewLine

ElseIf Sobitie="DistUplSuc" Then

UploadSucces = cCur(Ar(6))
sMessage = sMessage & "Загрузка успешно завершена! " & vbNewLine & vbNewLine

End If

End If

End if

Wend

filestream.Close()

Else

sMessage = sMessage & "Программа 1С:Предприятие не была запущена! " & vbNewLine & vbNewLine

End If

If UploadSucces = 1 Then

msgbox sMessage, vbOKOnly+vbInformation , "Загрузка выполнена успешно."

ElseIf UploadFail = 1 Then

msgbox sMessage, vbOKOnly + vbCritical , "ЗАГРУЗКА НЕ ВЫПОЛНЕНА !!!"

Else

msgbox sMessage, vbOKOnly + vbExclamation, "Результат работы неизвестен !!!"

End If

End Sub

Sub DownloadSub

set filestream = FS.OpenTextFile(path_nameDownloadPRM,2,1)

filestream.Write(_
"[General]" & vbNewLine & _
"Quit = 1" & vbNewLine & _
"AutoExchange = 1" & vbNewLine & _
"Output= """ & path_nameDownloadLog &"""" & vbNewLine & _
"[AutoExchange]" & vbNewLine & _
"SharedMode = Y" & vbNewLine & _
"WriteTo = " & CodeIB & vbNewLine & _
"")

filestream.Close()

If FS.FileExists(path_nameDownloadLog) = True Then

FS.DeleteFile(path_nameDownloadLog)

End If

Shell.Run """" & path1cv7 & """ config /d""" & pathIB & """ /NURBD /Purbd /@""" & path_nameDownloadPRM & """" , vbNoFocus,True

DownloadFileName = ""
DownloadErrorDescriprion = ""
DownloadSucces = 0
DownloadFail = 0
sMessage = ""

If FS.FileExists(path_nameDownloadLog) = True Then

set filestream = FS.OpenTextFile(path_nameDownloadLog,1)

While filestream.AtEndOfStream=False

sLine = filestream.ReadLine()

Ar = Split(sLine,";")
If UBound(Ar)>=7 Then

If Ar(4)="Distr" Then

Sobitie = Ar(5)

If Sobitie="DistDnldBeg" Then

DownloadFileName = Ar(7)
sMessage = sMessage & "Выполнена попытка выгрузки: " & DownloadFileName & vbNewLine & vbNewLine

ElseIf Sobitie="DistDnldErr" Then

sMessage = sMessage & "Во время выгрузки возникла ошибка: " & Ar(7) & vbNewLine & vbNewLine
DownloadCodeError = cCur(Ar(6))

ElseIf Sobitie="DistDnldFail" Then

DownloadFail = cCur(Ar(6))
sMessage = sMessage & "ВЫГРУЗКА НЕ БЫЛА ВЫПОЛНЕНА! " & vbNewLine & vbNewLine

ElseIf Sobitie="DistDnldSuc" Then

DownloadSucces = cCur(Ar(6))
sMessage = sMessage & "Выгрузка успешно завершена! " & vbNewLine & vbNewLine

End If

End if

End If 

Wend

filestream.Close()

Else

sMessage = sMessage & "Программа 1С:Предприятие не была запущена! " & vbNewLine & vbNewLine

End If

If DownloadSucces = 1 Then

msgbox sMessage, vbOKOnly + vbInformation, "Выгрузка выполнена успешно."

ElseIf DownloadFail = 1 Then

msgbox sMessage, vbOKOnly + vbCritical , "ВЫГРУЗКА НЕ ВЫПОЛНЕНА !!!"

Else

msgbox sMessage, vbOKOnly + vbExclamation, "Результат выгрузки неизвестен !!!"

End If

End Sub

------------------------- конец цитаты -----------------------------

Батник для выгрузки изменений из центральной базы 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) Настраиваем обмен по протоколу ФТП.

В комментариях к неубиваемой базе было мнение записывать файл на ФТП примерно так:

------------------------- начало цитаты -----------------------------

' запись архива на FTP 
   ' сначала подготовим сценарий команд FTP 
   set f = fso.OpenTextFile("c:\ftp_cfg.tmp", 2, 1) 
   ' тут пишем адрес FTP (ftp.domain.com) и номера порта (21, если не сказано другое) 
   f.WriteLine "OPEN ftp.domain.com" 
   ' Ваш аккаунт на FTP. Во второй строчке просто пишется пароль. 
   f.WriteLine "anonymous" 
   f.WriteLine "" 
   ' выбор каталога на FTP сервере, куда сохранять ваш архив 
   f.WriteLine "CD pub"
   f.WriteLine "CD exchange.lutek.ru"
   f.WriteLine "bin"
   ' закачка архива 
   f.WriteLine "SEND " + filename 
   ' завершение сеанса FTP 
   f.WriteLine "BYE" 
   f.Close 
   ' запустим FTP-клиент с только что созданным сценарием 
   sh.Run "FTP -i -v -s:c:\ftp_cfg.tmp",10,1 
   ' удалим сценарий 
   fso.DeleteFile("c:\ftp_cfg.tmp") 

------------------------- конец цитаты -----------------------------

Но я уже давно привык к мощному ФТП-клиенту 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 особенностей передачи и записи файлов на ФТП сервер.

 Настройки winscp для УРБД

Там есть русский интерфейс (скачивается отдельно) и все понятно. Если будут вопросы по настройке клиента, допишу об этом.

Вот настройка 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\VBS\Obmen.Peref.vbs

------------------------- начало цитаты -----------------------------

Set FS = CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("WScript.Shell")
Set ArgObj = WScript.Arguments

Dim CodeIB
Dim pathIB
Dim Work
Dim pathWin

Dim path_nameUploadPRM
Dim path_nameUploadLog
Dim path_nameDownloadPRM
Dim path_nameDownloadLog
Dim path_nameFullLog

Dim path1cv7

InitialsSub
WorkSub

Sub InitialsSub

If ArgObj.Count < 3 Then
WScript.Echo "Использование: Obmen.Peref.vbs "
WScript.Quit (GENERAL_FAILURE)
End If

CodeIB = ArgObj.Item(0)
pathIB = ArgObj.Item(1)
Work = ArgObj.Item(2)

V77CLSID = Shell.RegRead("HKEY_CLASSES_ROOT\V77.Application\CLSID\")
path1cv7 = Shell.RegRead("HKEY_CLASSES_ROOT\CLSID\"&V77CLSID&"\LocalServer32\")

If FS.FolderExists(pathIB)=False Then
WScript.Echo "Указанный каталог информационной базы не существует: "+pathIB
WScript.Quit (GENERAL_FAILURE)
End if

pathPRM = pathIB&"\prm\"

If FS.FolderExists(pathPRM)=False Then
FS.CreateFolder(pathPRM)
End if

nameUploadPRM = CodeIB & ".Upload.prm"
nameUploadLog = CodeIB & ".Upload.log"
nameDownloadPRM = CodeIB & ".Download.prm"
nameDownloadLog = CodeIB & ".Download.log"
nameFullLog = "Distr.log"

path_nameUploadPRM = pathPRM & nameUploadPRM
path_nameUploadLog = pathPRM & nameUploadLog
path_nameDownloadPRM = pathPRM & nameDownloadPRM
path_nameDownloadLog = pathPRM & nameDownloadLog
path_nameFullLog = pathPRM & nameFullLog

End Sub

Sub WorkSub

'Загрузка из
If Work = "UPLOAD" Then
UploadSub
ElseIf Work = "DOWNLOAD" Then
DownloadSub
End If

End Sub

Sub UploadSub

set filestream = FS.OpenTextFile(path_nameUploadPRM,2,1)

filestream.Write(_
"[General]" & vbNewLine & _
"Quit = 1" & vbNewLine & _
"AutoExchange = 1" & vbNewLine & _
"Output= """ & path_nameUploadLog &"""" & vbNewLine & _
"[AutoExchange]" & vbNewLine & _
"SharedMode = Y" & vbNewLine & _
"ReadFrom = *" & vbNewLine & _
"")
filestream.Close()

If FS.FileExists(path_nameUploadLog) = True Then
FS.DeleteFile(path_nameUploadLog)
End If
Shell.Run """" & path1cv7 & """ config /d""" & pathIB & """ /NURBD /Purbd /@""" & path_nameUploadPRM & """" , vbNoFocus,True
UploadFileName = ""
UploadErrorDescriprion = ""
UploadSucces = 0
UploadFail = 0
sMessage = ""

If FS.FileExists(path_nameUploadLog) = True Then

set filestream = FS.OpenTextFile(path_nameUploadLog,1)

While filestream.AtEndOfStream = False

sLine = filestream.ReadLine()

Ar = Split(sLine,";")
If UBound(Ar)>=7 Then
If Ar(4)="Distr" Then

Sobitie = Ar(5)
If Sobitie="DistUplBeg" Then
UploadFileName = Ar(7)
sMessage = sMessage & "Выполнена попытка загрузки из файла: " & UploadFileName & vbNewLine & vbNewLine
ElseIf Sobitie="DistUplErr" Then
sMessage = sMessage & "Во время загрузки возникла ошибка: " & Ar(7) & vbNewLine & vbNewLine
UploadCodeError = cCur(Ar(6))
ElseIf Sobitie="DistUplFail" Then
UploadFail = cCur(Ar(6))
sMessage = sMessage & "ЗАГРУЗКА НЕ БЫЛА ВЫПОЛНЕНА! " & vbNewLine & vbNewLine
ElseIf Sobitie="DistUplSuc" Then
UploadSucces = cCur(Ar(6))
sMessage = sMessage & "Загрузка успешно завершена! " & vbNewLine & vbNewLine
End If

End If

End if

Wend

filestream.Close()

Else
sMessage = sMessage & "Программа 1С:Предприятие не была запущена! " & vbNewLine & vbNewLine
End If

If UploadSucces = 1 Then
msgbox sMessage, vbOKOnly+vbInformation , "Загрузка выполнена успешно."
ElseIf UploadFail = 1 Then
msgbox sMessage, vbOKOnly + vbCritical , "ЗАГРУЗКА НЕ ВЫПОЛНЕНА !!!"
Else
msgbox sMessage, vbOKOnly + vbExclamation, "Результат работы неизвестен !!!"
End If

End Sub

Sub DownloadSub

set filestream = FS.OpenTextFile(path_nameDownloadPRM,2,1)

filestream.Write(_
"[General]" & vbNewLine & _
"Quit = 1" & vbNewLine & _
"AutoExchange = 1" & vbNewLine & _
"Output= """ & path_nameDownloadLog &"""" & vbNewLine & _
"[AutoExchange]" & vbNewLine & _
"SharedMode = Y" & vbNewLine & _
"WriteTo = *" & vbNewLine & _
"SendTo = *" & vbNewLine & _
"")

filestream.Close()

If FS.FileExists(path_nameDownloadLog) = True Then
FS.DeleteFile(path_nameDownloadLog)
End If

Shell.Run """" & path1cv7 & """ config /d""" & pathIB & """ /NURBD /Purbd /@""" & path_nameDownloadPRM & """" , vbNoFocus,True

DownloadFileName = ""
DownloadErrorDescriprion = ""
DownloadSucces = 0
DownloadFail = 0
sMessage = ""

If FS.FileExists(path_nameDownloadLog) = True Then

set filestream = FS.OpenTextFile(path_nameDownloadLog,1)

While filestream.AtEndOfStream=False
sLine = filestream.ReadLine()

Ar = Split(sLine,";")
If UBound(Ar)>=7 Then
If Ar(4)="Distr" Then

Sobitie = Ar(5)
If Sobitie="DistDnldBeg" Then
DownloadFileName = Ar(7)
sMessage = sMessage & "Выполнена попытка выгрузки: " & DownloadFileName & vbNewLine & vbNewLine
ElseIf Sobitie="DistDnldErr" Then
sMessage = sMessage & "Во время выгрузки возникла ошибка: " & Ar(7) & vbNewLine & vbNewLine
DownloadCodeError = cCur(Ar(6))
ElseIf Sobitie="DistDnldFail" Then
DownloadFail = cCur(Ar(6))
sMessage = sMessage & "ВЫГРУЗКА НЕ БЫЛА ВЫПОЛНЕНА! " & vbNewLine & vbNewLine
ElseIf Sobitie="DistDnldSuc" Then
DownloadSucces = cCur(Ar(6))
sMessage = sMessage & "Выгрузка успешно завершена! " & vbNewLine & vbNewLine
End If

End if

End If

Wend

filestream.Close()

Else
sMessage = sMessage & "Программа 1С:Предприятие не была запущена! " & vbNewLine & vbNewLine
End If

If DownloadSucces = 1 Then
msgbox sMessage, vbOKOnly + vbInformation, "Выгрузка выполнена успешно."
ElseIf DownloadFail = 1 Then
msgbox sMessage, vbOKOnly + vbCritical , "ВЫГРУЗКА НЕ ВЫПОЛНЕНА !!!"
Else
msgbox sMessage, vbOKOnly + vbExclamation, "Результат выгрузки неизвестен !!!"
End If

End Sub

------------------------- конец цитаты -----------------------------

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-версий).

См. также

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Оперативный учет 7.7 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Переносится из типовой конфигурации «Торговля и Склад», реакции 9.2 платформы «1С:Предприятие 7.7» в типовую конфигурацию «Бухгалтерия предприятия», редакции 3.0 платформы «1С: Предприятие 8.3» следующие документы и их операции (с соблюдением всех соответствующих проводок): Поступления товаров и услуг (в т.ч. комиссия), Реализации товаров и услуг (в т.ч. комиссия), ПКО и РКО, выписки банка, счета фактуры (выданные и полученный), Возвраты от покупателей и поставщику, Заявка Покупателя, Инвентаризация и другие (всего 28 видов документов, смотрите описание, приложенное к обработке)

11988 руб.

30.06.2014    65439    105    96    

113

Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет выгружать данные из ТиС 7.7 в конфигурации 8.3 для сдачи отчетности, для переноса данных при переходе на 8.3, для организации обмена внутри компании при использовании разных версий 1С в структурных подразделениях или формирования отгрузочных накладных для клиентов.

6000 руб.

18.05.2020    23636    64    39    

38

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Оперативный учет 7.7 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 Бухгалтерский учет Управленческий учет Абонемент ($m)

Обработка и правила обмена данными для выгрузки документов и всех связанных с ними справочников из 1С7.7 ТиС 9.2 в 1С8.3 БП 3.0 через файл XML. В типовых конфигурациях уже есть такое решение. Это немного доработанные правила и сама обработка выгрузки, добавлена возможность устанавливать отбор по выгружаемым документам по Фирме, Контрагенту, Складу, Проекту, Автору, ЮрЛицу. А также это внешняя обработка, что даёт возможность адаптировать её под нетиповую ТиС. Обработка и правила тестировались на платформах: 1С: Предприятие 7.7 и 1С: Предприятие 8.3.18.1334. На типовых конфигурациях: «Торговля + склад», редакция 9.2 (7.70 1004) и «Бухгалтерия предприятия» редакция 3.0 (3.0.96.30).

1 стартмани

13.08.2021    9235    55    Kuzya_brаtsk    8    

11

Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 1С:Управление торговлей 10 1С:Комплексная 7.7 Россия Управленческий учет Платные (руб)

Начните вести учет в УТ 10.3! Перенесите все свои данные в УТ 10.3 в любом месяце года и продолжите вести учет! Программа перенесёт любое количество баз с документами и остатками в больших количествах. Обработка выгрузки выполнит проверку исходных данных и сформирует отчет о найденных ошибках в справочниках и документах. Партии переносятся с себестоимостью. Штрихкоды номенклатуры загружаются. Цена переносится. Автор консультирует.

8400 руб.

17.03.2021    15999    5    13    

6

Зарплата Перенос данных 1C Программист Бухгалтер Бухгалтерский учет 7.7 Сложные периодические расчеты 1С:Бухгалтерия 7.7 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Как известно, Бухгалтерия 7.7 не имеет штатной возможности для обмена с ЗУП 3.1. Данная разработка пригодится тем, кто перешел с ЗиК 2.3 на ЗУП 3.1, но вынужден по каким-то своим причинам оставаться на Бухгалтерии 7.7.

18000 руб.

29.09.2020    13844    2    0    

5

SALE! 10%

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 1С:Бухгалтерия 7.7 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0 | Продукт является развитием и исправлением ошибок стандартной обработки для выгрузки данных из 1С Бухгалтерии 7.7 в Бухгалтерию 3.0 | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

55778 50200 руб.

26.05.2020    35104    10    73    

16

Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

При переходе на новую версию 1С в период параллельной эксплуатации может возникнуть необходимость обратной конвертации данных (по правилам КД версии 2.1) из 1С:Предприятие 8.3 в 1С:Предприятие 7.7 для переноса данных из 1С:Предприятие 8.3 в 7.7. Сделать это поможет следующая инструкция по КД2 о том, как создать новую конвертацию из 8.3 в 7.7, сохранить модуль и правила загрузки данных, сделать загрузку данных. КД2.

17.10.2019    15260    ksnik    0    

16

Загрузка и выгрузка в Excel Перенос данных 1C Программист Пользователь Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 1С:ERP Управление предприятием 2 Абонемент ($m)

Описание технологии загрузки любых адресов из 1С 7.7 с разложением по ФИАС в современные конфигурации 1C 8.3 на примере ERP. Предлагаемый способ просто чудо, он гарантирует результат, он очень простой и качественный! Моя обработка является синтаксическим анализатором, который подставляет в строку грязного адреса выражение "Дом №" и "Корпус", благодаря чему грязные адреса 7.7 сами очень хорошо раскладываются по значимым полям ФИАС - заполняется область, город, улица, дом, корпус.. все раскладывается само с помощью встроенного механизма современных конфигураций 1С 8.3, который написали сами сотрудники фирмы 1С!

1 стартмани

16.08.2019    19654    18    ksnik    12    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AlexBugs 08.05.13 08:06 Сейчас в теме
URBDmaster купили и все само делается по FTP, который стоит на севере 1С. На крайняк по почте делаем обмен.
2. uriy 3 08.05.13 10:39 Сейчас в теме
(1) Вот именно присоединяюсь, сам купил урбд мастер настроил за 20 минут, первый раз устанавливал. Все работает уже 3 года без проблем и по почте и по сети и по фтп. Короче УРБД-Мастер рулит. Стоит 1700р
3. ksnik 593 08.05.13 14:05 Сейчас в теме
(1) AlexBugs,
(2) uriy,
получается что на сервере 1С у вас обмен локальный, а на каждую периферийку куплено по своему УРБД-мастеру? Нет смысла предлагать всем закрытое, ресурсозависимое и неизвестно как лицензируемое решение. Вы же не хотите чтобы когда у них все накроется все айтишники не знали, как сделать обмен по интернету потому что когда-то отказались от универсальных технологий в угоду однажды купленному?
4. uriy 3 09.05.13 11:48 Сейчас в теме
(3) Полностью несогласен с вами.
есть сайт программы с поддержкой и инструкциями. и пробной программой http://www.urbdmaster.com/

Обзор на пальцах.
На сервере -клинеты подключены напрямую к базе по сети, а для синхронизации тут уже стоит урбд-мастер и он поддерживает обмен по почте (я использовал один почтовый адрес для всех обменов), есть локально (нужен такой вариант редко, обычно при плохой или не стабильной связи), и FTP - тоже неплохой вариант.
Я настраивал и штатными средствами. Но остановился именно на урбд-матере, по простой причине поставил и забыл все автоматом первоначальная настройка 10-15 минут (на среднее знание, интуитивно понятный интерфейс), дальнейшего участия человека не требуется (ну если не надо сделать выгрузку загрузку срочно то это один щелчек(два щелчка) мыши, а это сможет любой и бух и оператор.
Одна лицензия на неограниченное число подключений, т.е. нужна только одна лицензия ни больше ни меньше.
Можно сохранить копию установленной программы или файл базы данных урбд (на случай если база обмена сбросится -такое видел только один раз за 3 года). Просто копировал по верх и вуаля все настойки на своем месте.

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

Вообщем куча нужных полезностей

НУ И КАК В ЛЮБОЙ ПРОГРАММЕ ЕСТЬ ЛОЖКА ДЕГТЯ.
УРБД-МАСТЕР ХРАНИТ СВОЮ БАЗУ В ВИДЕ MDB (microsoft office accsess)- а это как все понимают стоит отдельно в пакете билла гейтса в нашем любимом офисе.

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

Рекомендовал многим и более и менее опытным it-шникам 80% из них ставили и используют по сей день.
5. ksnik 593 09.05.13 12:12 Сейчас в теме
(4) uriy, а нужно ли платить за каждую копию программы или в периферийных узлах устанавливаются бесплатные копии? А если железо поменять второй раз покупать эту программу не нужно?
6. uriy 3 09.05.13 20:17 Сейчас в теме
(5) Покупается одна лицензия (уже 1980рублей) и она ставится на все урбд (лицензия программная без проверки количества клиентов).Получил файлик скинул в каталог и все пользуюсь. Пере установил систему поставил программу а скинул всю папку и с настройками и с ключом 1 минута и автообмен готов.

Нужно платить только за одну копию программы, да и эта цена по соотношению с продуктом 1с ничтожна.

Есть Еще вопросы?
7. ksnik 593 09.05.13 20:59 Сейчас в теме
(6) uriy, первый мой вопрос был не про перестановку системы а про смену компа, а второй не про все УРБД на центральной машине а про периферийные базы, что делать в этих случаях Вы не ответили. лясать с бубном? А вдруг сразу за заменой компа сервера прийдут проверять лицензию, что тогда делать?
8. uriy 3 09.05.13 21:11 Сейчас в теме
(7) Лицензию чего 1с или УРБД Мастер?
9. uriy 3 09.05.13 21:18 Сейчас в теме
(7) Не совсем понял вопроса. Лицензия УРБД мастер покупается 1 шт и ставится на все машины (в программе после регистрации указывается кто владелец и адресс эл.почты),я платил через сбербанк на какойто он лайн интернет магазин где мне выставили счет, через 3 дня получил.
Лицензия не привязана к железу является "корпоративной". Может знакомы с лицензированием Windows. Лицензия выдается на организацию а не на технику.
Что касается 1с. - то тут правила едины и думаю вы их знаете (что по средствам урбд-мастера что штатными средствами).
10. ksnik 593 09.05.13 22:46 Сейчас в теме
(9) uriy, спасибо вероятно прога не плохая, понятно, но описанный мной способ тоже будучи настроен однажды так же восстанавливается из архива копированием, работает по расписанию windows и вообще не требует лицензии.
11. ksnik 593 09.05.13 22:52 Сейчас в теме
Для любителей заплатить денег чтоб все работало вот еще вдогонку ссылка Cislink.com
1. EDI решения - Решения для электронного обмена данными различного уровня сложности
2. Сервис Контроля Данных (DTS) - Сервис контроля данных CISLink позволяет обеспечить детальный сбор вторичных продаж в сети дистрибьюции производителя.
3. Автоматизированная Система Мобильной Торговли (SFA)
Автоматизированная Система Мобильной Торговли позволяет вашей компании автоматизировать деятельность торговых представителей с помощью терминалов сбора данных (коммуникаторов и планшетов на базе операционных систем Android Windows Mobile).
4. Электронная торговая площадка - Аукционы в режиме реального времени и запросы котировок цен
12. skelelaz 20.03.14 00:17 Сейчас в теме
Хорошо расписано. За это спасибо. Сам долго искал, как бы через емейл настроить обмен.
13. Pavel_nv 17 20.03.14 07:28 Сейчас в теме
Сам пользовался УРБД мастером, но сейчас если приходиться настраивать обмены, то ставлю на всех точках dropbox под одной учеткой, настраиваю все базы на обмен через его папку типовым обменом.
14. mt111 3 31.07.14 20:12 Сейчас в теме
планируем расширятся, из всех расмотреных вариантов пока склоняемся к этому
15. natarezn 22.09.14 12:46 Сейчас в теме
я уже работаю с РИБ. вот буду настраивать выгрузку.
16. ivdvorkovoy 12.02.19 23:24 Сейчас в теме
Привет из 2019 )) Сдулся ваш урбд-мастер! ))))
А автору темы огромное спасибо! Настроил обмен. Работает как часы.
17. oskarsan 26.11.20 17:12 Сейчас в теме
Здравствуйте. Подскажите, почему при пакетной выгрузке 1с повисает минут на 5-10 независимо от количества периферийных (1 или 5)? Объем выгрузки маленький до 50Кб, база 600Мб, выгрузка каждый день. При ручной выгрузке происходит за секунды.
18. oskarsan 26.11.20 17:24 Сейчас в теме
(17) Спасибо, сам разобрался. неверный путь к лог файлу.
Оставьте свое сообщение