|
v7: Выгрузка 1c 7.7 из SQL в DBF в автоматическом режиме | ☑ | ||
---|---|---|---|---|
0
Kasperok
07.07.14
✎
11:27
|
Добрый день. Суть задачи сводится к тому чтобы раз в день/неделю на автомате выгружать базу которая крутится в SQL и загружать ее в DBF формате. Но в пакетном режиме 1с умеет только выгружать, а как тогда загрузить ?
|
|||
1
NikVars
07.07.14
✎
12:10
|
||||
2
Kasperok
07.07.14
✎
12:11
|
И в чем это мне поможет ?
|
|||
3
floody
07.07.14
✎
12:15
|
(2) что, действительно не понимаете?
|
|||
4
xXeNoNx
07.07.14
✎
12:16
|
(0) Любой шетдуллер и командная строка
|
|||
5
Kasperok
07.07.14
✎
12:22
|
А есть пример использования. просто как выгрузить я понимаю а вот как загрузить пока нет.
|
|||
6
Феофан
07.07.14
✎
12:29
|
УРБД уже предлагали?
|
|||
7
Kasperok
07.07.14
✎
12:37
|
(6) это не пойдет
|
|||
8
NikVars
07.07.14
✎
12:41
|
(5) Учу читать
"AutoIt использует симуляцию нажатия клавиш, движений мыши и манипуляции с окнами..." |
|||
9
Dolly_EV
07.07.14
✎
14:24
|
(8) Да зачем AutoIt? WShell Senkeys хватит
|
|||
10
PRO100 NigGaZ
07.07.14
✎
14:48
|
Ща напишу не уходи ))
|
|||
11
PRO100 NigGaZ
07.07.14
✎
14:49
|
Dim loadMD ' Имя загружаемого файла
Dim Wrapper Dim loadPass ' Пароль loadMD = "" Const WM_SETTEXT = &H000C Const WM_GETTEXT = &HD Sub Configurator_AllPluginsInit() loadMD = InStr(CommandLine, "/load") ' Ищем ключ /load loadPass = InStr(CommandLine, "/pass") ' Ищем ключ /Pass If loadMD <> 0 Then ' Если есть, получаем имя файла Set Wrapper = CreateObject("DynamicWrapper") Wrapper.Register "USER32.DLL", "GetFocus", "f=s", "r=l" Wrapper.Register "USER32.DLL", "SendMessage", "I=lllr", "f=s", "r=l" Message "Команда: " & CommandLine, mInformationmMetaData loadPass = Mid(CommandLine, loadPass + 5) Message "Пароль базы: " & loadPass, mInformationmMetaData loadMD = Mid(CommandLine, loadMD + 5, Len(CommandLine) - loadMD - 5 - Len(loadPass) - 5) Message "Загрузка из: " & loadMD, mInformationmMetaData ' Если выполняются эти строки, значит надо загружать данные ' Для начала надо выгрузить все остальные скрипты, ' чтобы не мешались их обработчики событий k = 0 While Scripts.Count <> 1 n = Scripts.Name(k) If LCase(n) <> SelfScript.Name Then Message "Unload " & n, mMetaData Scripts.Unload k Else k = 1 End If Wend ' Возможно другие скрипты успели открыть какиенить окна. ' Надо их закрыть. While Not Windows.ActiveWnd Is Nothing Windows.ActiveWnd.Close Wend ' Теперь дадим команду на загрузку данных SendCommand 33205 Else ' Иначе выгружаем скрипт, как ненужный Scripts.Unload SelfScript.Name End If End Sub Sub Configurator_OnMsgBox(Text, Style, DefAnswer, Answer) ' Во время всего действа, 1С периодически будет что-то спрашивать ' На предложение продолжить отвечаем просто согласием ' После всех остальных сообщений закрываем программу If loadMD <> "" Then Answer = DefAnswer If InStr(LCase(Text), "продолжить") = 0 Then loadMD = "" End If End If End Sub Sub Configurator_OnDoModal(Hwnd, Caption, Answer) ' В поле ввода устанавливаем переданный путь If loadMD <> "" Then Text = LCase(Caption) If InStr(Text, "загрузка данных") <> 0 Then Wrapper.Register "USER32.DLL", "FindWindowExA", "I=llsl", "f=s", "r=l" EditBox = Wrapper.FindWindowExA(Hwnd,0,"ComboBox",NULL) EditBox = Wrapper.FindWindowExA(EditBox,0,"Edit",NULL) Wrapper.SendMessage EditBox, WM_SETTEXT, 1, LCase(loadMD) EditBox = Wrapper.FindWindowExA(Hwnd,0,"Edit",NULL) Wrapper.SendMessage EditBox, WM_SETTEXT, 100, LCase(loadPass) Message "Пароль: " & res, mInformationmMetaData Answer = mbaOK End If End If End Sub Sub Configurator_OnIdle() ' Все работы закончены, нужно выйти ' Выход делается после обработки всех сообщений в очереди, дабы не падало If loadMD = "" Then Windows.MainWnd.Close End Sub |
|||
12
PRO100 NigGaZ
07.07.14
✎
14:50
|
loaddatabase.vbs
в папку C:\Program Files (x86)\1Cv77\BIN\Config\Scripts когда то находил этот скрипт, не помню правил или нет |
|||
13
VladZ
07.07.14
✎
14:50
|
(0) Я могу узнать, для каких целей?
|
|||
14
PRO100 NigGaZ
07.07.14
✎
14:53
|
из 1с загрузку запускаю так
Сист.ЗапуститьОжидая(" """ + КаталогПрограммы() + "1cv7.exe"" config /D""" + СокрЛП(Путь) + """ /N" + СокрЛП("Загрузка") + " /P" + СокрЛП("Пароль") + " /load" + ФС.ТекКаталог() + "\Загрузка" + ФайлЗагрузка + " " + "/pass" + Пароль); |
|||
15
PRO100 NigGaZ
07.07.14
✎
14:54
|
вот так загрузить базу командной строкой...
|
|||
16
Kasperok
07.07.14
✎
16:37
|
Цель такая что надо ежедневно отдавать базу в другой офис, и чтобы люди не делали это руками стоит цель автоматизировать
|
|||
17
Kasperok
07.07.14
✎
16:38
|
(14) Что-то не видел этих параметров в документации
|
|||
18
Мигало
07.07.14
✎
16:39
|
||||
19
NikVars
07.07.14
✎
17:05
|
(17) Учу читать.
Смотри руководство Конфигурирование и администрирование. Глава 27. Администрирование. Пакетный режим. |
|||
20
vcv
07.07.14
✎
20:56
|
Откуда у 1с может взяться ключ "/pass" + Пароль
У (14), наверное, какой-то стартер это делает. |
|||
21
Kasperok
08.07.14
✎
10:20
|
Да и судя по описания (18) ключа /load нету
|
|||
22
NikVars
08.07.14
✎
10:24
|
(21) Этот ключ из скрипта, что в (11).
|
|||
23
Kasperok
08.07.14
✎
10:29
|
тогда понятно :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |