среда, 14 марта 2018 г.

Переносим список баз или ковыряем 1CEStart.cfg


Переносим список баз с одного места в другое. Пользователей настолько много что я даже не знаю сколько их. Скрипт который админы полажт в нужное место. Меняем данные в файле 1CEStart.cfg
Основная проблема которая была  это кодировка

сам скрипт

 '==========================================================================
'
' AUTHOR: GNN (3:16) ,
' DATE  : 14.03.2018
'
'==========================================================================

On Error Resume Next
Dim fso
Dim V8iConfigFile
Dim dir
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'Настраиваем лог файл
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("Wscript.Shell")
strSysVarTEMP = WshShell.ExpandEnvironmentStrings("%TEMP%")
Set oScriptLog = fso.OpenTextFile(strSysVarTEMP + "\_dbconn.log",ForWriting,True)
oScriptLog.Write ""
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Start..."
oScriptLog.WriteLine(strToLog)

'Проверяем, что 1С установлена
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not (objFSO.FolderExists("C:\Program Files\1cv8") Or objFSO.FolderExists("C:\Program Files (x86)\1cv8")) Then
 strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "1C 8 не установлена... Выход..."
 oScriptLog.WriteLine(strToLog)
    WScript.quit
End If

'Проверяем есть ли старый файл и удаляем в случае наличия'
 APPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%")
 v8i = APPDATA + "\1C\1CEStart\ibases.v8i"
 If fso.FileExists(v8i) Then
    fso.DeleteFile(v8i)
    Set V8iConfigFile = fso.CreateTextFile(v8i ,True)
    strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Удален файл v8i и создан новый"
    oScriptLog.WriteLine(strToLog)
' Если файла нет (1С только установлена), то создаем файла по указанному пути
 Else
    Set dir = fso.CreateFolder(APPDATA + "\1C")
    Set dir = fso.CreateFolder(dir + "\1CEStart")
    Set V8iConfigFile = fso.CreateTextFile(v8i ,True)
    strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Создан файл v8i"
    oScriptLog.WriteLine(strToLog)
 End If

fName = APPDATA + "\1C\1CEStart\1CEStart.cfg"                     ' Где текстовый файл

' Что бы прочитать файл меняем кодировку с UCS-2 Little Endian на UTF-8

Set ADODBStream = CreateObject("ADODB.Stream")
ADODBStream.Type = 2
ADODBStream.Charset = "UTF-16"
ADODBStream.Open()
ADODBStream.LoadFromFile(fName)
Text = ADODBStream.ReadText()
ADODBStream.Close()
ADODBStream.Charset = "UTF-8"
ADODBStream.Open()
ADODBStream.WriteText(Text)
ADODBStream.SaveToFile fName, 2
ADODBStream.Close()

tStrok = "\\data-server\1C\Bases"                         ' Что ищем в строке текста
oStrok = "\\data-server.dpmz.local\1C\Bases"
bStrok = "\\n.n.ru\ch\G\PROGRAMS\1C\Baselist"  ' Что вставляем

Set FSO = CreateObject("Scripting.FileSystemObject")

Set F = FSO.OpenTextFile(fName, 1, False)       ' Открываем исходный текст файл для чтения
AllTxt = F.ReadAll()                            ' Cчитываем весь файл в строковую переменную
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "прочитали 1CEStart"
    oScriptLog.WriteLine(strToLog)
F.Close                                         ' Закрываем файл

AllTxt=Replace(AllTxt, oStrok, bStrok)
AllTxt=Replace(AllTxt, tStrok, bStrok)
   
Set F = FSO.OpenTextFile(fName, 2, False)   ' Открываем исходный файл для записи
F.Write AllTxt                              ' Записываем полученное на место исходного файла
F.Close                                     ' Закрываем файл
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Записали 1CEStart"
oScriptLog.WriteLine(strToLog)

1 комментарий:

  1. не оптимально! Можно было не ковырять файл, а просто его удалить и на его место скопировать нужный. Но это конечно в зависимости от ситуации

    ОтветитьУдалить

Печать чека ККМ из драйвера ККМ

Суть проблемы: Пробиваем чек из 1С: Бухгалтерии. Чек пробит не  правильно. Теперь нужно сделать чек коррекции. Но в программе это сделать н...