Писалось для 1С 8.1 8.2, на основании этого добра, со скуки был написан генератор этого скрипта на delphi (если нужно, попробую почистить его и выложить)
Функции:
Добавление, исправление, записей к базам.
Создание файла с записями, если не существовал.
Установка новых релизов платформ (требует ввода пароля во всплывающем окне командной строки для пользователя Setup@DOMAIN.LOCAL). Криво, но на тот момент вариантов увы не было.
Фильтрация добавления, исправления, записей к базам для конкретных групп.
Установка компоненты ScanOPOS для 1С
и может быть что то еще ))
Код
on error resume next
Dim FSO,WshShell,WshEnvVolatile,WshEnvUser,UserProfile
Dim Title81(),Server81(),Base81(),ConnType81(),Incor81(),Add81()
Dim Title82(),Server82(),Base82(),ConnType82(),Incor82(),Add82()
Dim arrMyFile81,arrMyFile82
Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshEnvVolatile = WshShell.Environment("Volatile")
Set WshEnvUser = WshShell.Environment("User")
Set WshEnvPROCESS = WshShell.Environment("PROCESS")
Set WshNet=WScript.CreateObject("WScript.Network")
Set objGroup1 = GetObject("LDAP://CN="+WshNet.UserName+",CN=Users,DC=DOMAIN,DC=LOCAL")
GroupList=objGroup1.GetEx("memberOf")
'#################Настройки#####################
SkipChekBase81 = 1 ' Если 1, то не исправлять пути к базам 8.1
SkipChekBase82 = 1 ' Если 1, то не исправлять пути к базам 8.2
SkipAddBase81 = 1 ' Если 1, не добавлять новые базы 8.1
SkipAddBase82 = 0 ' Если 1, не добавлять новые базы 8.2
SkipEraseCache82 = 1 ' Если 1, не очищать кэш 8.2
SkipEndEcho = 1 ' Если 1, не показывать сообщение по окончанию работы скрипта
SkipSetup = 1 ' Если 1, не производить установку
strRELIZ = "C:\Program Files\1cv82\8.2.13.205\"
strRunRELIZ = "\\DOMAIN.LOCAL\SYSVOL\DOMAIN.LOCAL\1C_82\setup.exe"
strRunAs = "runas /user:Setup@DOMAIN.LOCAL"
ScanOposdll = "\\DOMAIN.LOCAL\SYSVOL\DOMAIN.LOCAL\1C_82\ScanOPOS.dll\"
SkipScanOpos = 1 ' Если 1, не производить установку ScanOpos.dll в папку strRELIZ\bin\
'Не выполнять для пользователей входящих в группу
SkipGroup = "GroupProg1C"
SkipGroupChekBase81 = 1 ' Если 1, то не исправлять пути к базам 8.1
SkipGroupChekBase82 = 1 ' Если 1, то не исправлять пути к базам 8.2
SkipGroupAddBase81 = 1 ' Если 1, не добавлять новые базы 8.1
SkipGroupAddBase82 = 1 ' Если 1, не добавлять новые базы 8.2
'###############################################
Numb81 = -1 'не менять
Numb82 = -1 'не менять
'##### 8.1 Bases #####
'ZP_GR
Numb81=Numb81+1 'не менять
Redim Preserve Title81(Numb81),Server81(Numb81),Base81(Numb81),ConnType81(Numb81),Incor81(Numb81),Add81(Numb81) 'не менять
Title81(Numb81) = "[ZP_GR]"
ConnType81(Numb81) = "Srvr"
Server81(Numb81) = "bdsrv"
Base81(Numb81) = "ZP_GR"
Incor81(Numb81) = 0 'не менять
Add81(Numb81) = 0 'Если 1, то прописать базу
'Торговое оборудование
Numb81=Numb81+1
Redim Preserve Title81(Numb81),Server81(Numb81),Base81(Numb81),ConnType81(Numb81),Incor81(Numb81),Add81(Numb81)
Title81(Numb81) = "[Торговое оборудование]"
ConnType81(Numb81) = "Srvr"
Server81(Numb81) = "bdsrv"
Base81(Numb81) = "TorgovoeOborudovanie"
Incor81(Numb81) = 0 'не менять
Add81(Numb81) = 0 'Если 1, то прописать базу
'#####################
'Мусор, но без него удаляются записи 8.1
ID = "ID=00000000-0000-0000-0000-00000000001"
OrderInList = "OrderInList=0"
Folder = "Folder=/"
OrderInTree = "OrderInTree=0"
External = "External=0"
'#####################
'##### 8.2 Bases #####
'Сайт_через_сайт
Numb82=Numb82+1
Redim Preserve Title82(Numb82),Server82(Numb82),Base82(Numb82),ConnType82(Numb82),Incor82(Numb82),Add82(Numb82)
Title82(Numb82) = "[Сайт]"
ConnType82(Numb82) = "ws"
Server82(Numb82) = "http://SRV.RU:8081/"
Base82(Numb82) = "dsite/"
Incor82(Numb82) = 0 'не менять
Add82(Numb82) = 0 'Если 1, то прописать базу
'Сайт_Резерв
Numb82=Numb82+1
Redim Preserve Title82(Numb82),Server82(Numb82),Base82(Numb82),ConnType82(Numb82),Incor82(Numb82),Add82(Numb82)
Title82(Numb82) = "[Сайт_Резерв]"
ConnType82(Numb82) = "Srvr"
Server82(Numb82) = "SRV"
Base82(Numb82) = "dsite"
Incor82(Numb82) = 0 'не менять
Add82(Numb82) = 1 'Если 1, то прописать базу
If SkipSetup = 0 Then
If NOT FSO.FileExists(strRELIZ & "bin\1cv8.exe") Then
Set oExec = WshShell.Run(strRunAs & " " & Chr(34) & strRunRELIZ & " /S" & Chr(34),1,true)
'Else
'WScript.Echo "Релиз 8.2.13.205 уже установлен. Нажмите " &Chr(34)& "Ок" &Chr(34)& " для продолжения"
End If
End If
If SkipScanOpos = 0 Then
If NOT FSO.FileExists(strRELIZ & "bin\ScanOPOS.dll") Then
TimeStart = 0
Do
If FSO.FolderExists(strRELIZ & "bin") Then Exit Do End If
TimeStart = TimeStart + 1
WScript.sleep 30000
Loop Until TimeStart = 10
Set oExec1 = WshShell.Run(strRunAs & Chr(32) & Chr(34) & "cmd " & Chr(47)& "C copy " & Chr(92) & Chr(34) & ScanOposdll & Chr(34) & Chr(32) & Chr(92) & Chr(34)& strRELIZ & "\bin\" & Chr(92) & Chr(34) & Chr(34),1,true)
End If
End If
AppData = WshEnvVolatile.Item("APPDATA")
UserName = WshEnvUser.Item("USERNAME")
Path1C = AppData & "\1C"
Path1C81 = AppData & "\1C\1Cv81" 'Путь к папке с файлом базы
File1C81 = Path1C81 & "\ibases.v8i"
File1C81New = Path1C81 & "\ibases.new"
Path1C82 = AppData & "\1C\1CEStart" 'Путь к папке с файлом базы
File1C82 = Path1C82 & "\ibases.v8i"
File1C82New = Path1C82 & "\ibases.new"
for Each val in GroupList
str = lcase(val)
str1 = lcase("CN="&SkipGroup&",CN=Users,DC=DOMAIN,DC=LOCAL")
If str=str1 Then
If SkipGroupChekBase81 = 1 Then SkipChekBase81 = 1 End If
If SkipGroupChekBase82 = 1 Then SkipChekBase82 = 1 End If
If SkipGroupAddBase81 = 1 Then SkipAddBase81 = 1 End If
If SkipGroupAddBase82 = 1 Then SkipAddBase82 = 1 End If
End if
next
'#########################################
If FSO.FolderExists(Path1C) Then 'Проверка существования пути AppData & "\1C", если нет, создаем
Else
FSO.CreateFolder(AppData & "\1C") 'Создаем папку "\1C"
End If
If FSO.FolderExists(Path1C81) Then 'Проверка существования пути, если нет, создаем
If FSO.FileExists(File1C81) Then 'Проверка существования файла баз, если нет, создаем
Set File81 = FSO.OpenTextFile(File1C81, 1) 'Читаем файл с базами
Set Temp81 = FSO.CreateTextFile(File1C81New, true) 'Создаем temp фаил
Else
Set File81 = FSO.CreateTextFiles(File1C81, true) 'Создаем File фаил
Set Temp81 = FSO.CreateTextFile(File1C81New, true) 'Создаем temp фаил
End If
Else
FSO.CreateFolder(AppData & "\1C\1Cv81")
Set File81 = FSO.CreateTextFiles(File1C81, true) 'Читаем файл с базами
Set Temp81 = FSO.CreateTextFile(File1C81New, true) 'Создаем temp фаил
End If
If FSO.FolderExists(Path1C82) Then 'Проверка существования пути, если нет, создаем
If FSO.FileExists(File1C82) Then 'Проверка существования файла баз, если нет, создаем
Set File82 = FSO.OpenTextFile(File1C82, 1) 'Читаем файл с базами
Set Temp82 = FSO.CreateTextFile(File1C82New, true) 'Создаем temp фаил
Else
Set File82 = FSO.CreateTextFiles(File1C82, true) 'Создаем File фаил
Set Temp82 = FSO.CreateTextFile(File1C82New, true) 'Создаем temp фаил
End If
Else
FSO.CreateFolder(AppData & "\1C\1CEStart")
Set File82 = FSO.CreateTextFiles(File1C82, true) 'Читаем файл с базами
Set Temp82 = FSO.CreateTextFile(File1C82New, true) 'Создаем temp фаил
End If
'#########################################
arrMyFile81 = Split(File81.ReadAll, vbNewLine) 'Создаем массив из файла с базами 81
For a = 0 To UBound(arrMyFile81) 'Читаем поэлементно массив arrMyFile81
str81 = arrMyFile81(a) 'строка из массива
str81Low = lcase(arrMyFile81(a)) 'строка из массива переведенная в нижний регистр
If InStr(1, str81Low, "connect", vbTextCompare) Then 'Находим строку с путями к базе
Result = 0 'Флаг нахождения строки конекта, если база не указанна в списке, то строка будет записанна без изменений
For b = 0 To UBound(Base81) 'Обрабатываем массив предопределенных баз
If InStr(1, str81Low, lcase(Base81(b)), vbTextCompare) Then 'Ищем базу Base81(b)
If InStr(1, str81Low, lcase(ConnType81(b)), vbTextCompare) Then 'Проверяем тип соединения
Result = 1 'Флаг База найдена
Add81(b) = 0 'Флаг База уже прописанна
End If
If SkipChekBase81 = 0 Then
If InStr(1, str81Low, lcase(Server81(b)), vbTextCompare) Then 'Проверяем адресс сервера прописанный для базы Base81(b), и если он правельный по заканчиваем обработку строки, если неправильный, правим
Result = 0 'Пишем строку без изменений
Else
If ConnType81(b) = "File" Then Temp81.WriteLine("Connect="&ConnType81(b)&"="&Chr(34)&Base81(b)&Chr(34)&";") End If
If ConnType81(b) = "Srvr" Then Temp81.WriteLine("Connect="&ConnType81(b)&"="&Chr(34)&Server81(b)&Chr(34)&";Ref="&Chr(34)&Base81(b)&Chr(34)&";") End If
End If
Else
Result = 0
End If
End If
Next
If Result = 0 Then Temp81.WriteLine(str81) End If
Else
Temp81.WriteLine(str81) 'Пишем строку без изменений если не найдено слово connect
End If
Next
arrMyFile82 = Split(File82.ReadAll, vbNewLine) 'Создаем массив из файла с базами 82
For a = 0 To UBound(arrMyFile82) 'Читаем поэлементно массив arrMyFile82
str82 = arrMyFile82(a) 'строка из массива
str82Low = lcase(arrMyFile82(a)) 'строка из массива переведенная в нижний регистр
If InStr(1, str82Low, "connect", vbTextCompare) Then 'Находим строку с путями к базе
Result = 0
For b = 0 To UBound(Base82) 'Обрабатываем массив предопределенных баз
If InStr(1, str82Low, lcase(Base82(b)), vbTextCompare) Then 'Ищем базу Base82(b)
If InStr(1, str82Low, lcase(ConnType82(b)), vbTextCompare) Then 'Проверяем тип соединения
Result = 1
Add82(b) = 0 ' База существует
End If
If SkipChekBase82 = 0 Then
If InStr(1, str82Low, lcase(Server82(b)), vbTextCompare) Then 'Проверяем адресс сервера прописанный для базы Base82(b), и если он правельный по заканчиваем обработку строки, если неправильный, правим
Result = 0 'Пишем строку без изменений
Else
If ConnType82(b) = "ws" Then Temp82.WriteLine("Connect="&ConnType82(b)&"="&Chr(34)&Server82(b)&Base82(b)&Chr(34)&";") End If
If ConnType82(b) = "Srvr" Then Temp82.WriteLine("Connect="&ConnType82(b)&"="&Chr(34)&Server82(b)&Chr(34)&";Ref="&Chr(34)&Base82(b)&Chr(34)&";") End If
End If
Else
Result = 0
End If
End If
Next
If Result = 0 Then Temp82.WriteLine(str82) End If
Else
Temp82.WriteLine(str82) 'Пишем строку без изменений если не найдено слово connect
End If
Next
If SkipAddBase81 = 0 Then
For a = 0 To UBound(Add81) 'Добавляем базы у которых Add(a) = 1
If Add81(a) = 1 Then
Temp81.WriteLine(Title81(a))
If ConnType81(a) = "File" Then Temp81.WriteLine("Connect="&ConnType81(a)&"="&Chr(34)&Base81(a)&Chr(34)&";") End If
If ConnType81(a) = "Srvr" Then Temp81.WriteLine("Connect="&ConnType81(a)&"="&Chr(34)&Server81(a)&Chr(34)&";Ref="&Chr(34)&Base81(a)&Chr(34)&";") End If
Temp81.WriteLine(ID&a)
Temp81.WriteLine(OrderInList)
Temp81.WriteLine(Folder)
Temp81.WriteLine(OrderInTree)
Temp81.WriteLine(External)
End If
Next
End If
If SkipAddBase82 = 0 Then
For a = 0 To UBound(Add82) 'Добавляем базы у которых Add(a) = 1
If Add82(a) = 1 Then
Temp82.WriteLine(Title82(a))
If ConnType82(a) = "ws" Then Temp82.WriteLine("Connect="&ConnType82(a)&"="&Chr(34)&Server82(a)&Base82(a)&Chr(34)&";") End If
If ConnType82(a) = "Srvr" Then Temp82.WriteLine("Connect="&ConnType82(a)&"="&Chr(34)&Server82(a)&Chr(34)&";Ref="&Chr(34)&Base82(a)&Chr(34)&";") End If
End If
Next
End If
File81.Close
Temp81.Close
FSO.DeleteFile File1C81, 0
FSO.MoveFile File1C81New, File1C81
File82.Close
Temp82.Close
FSO.DeleteFile File1C82, 0
FSO.MoveFile File1C82New, File1C82
If SkipEraseCache82 = 0 Then
UserProfile = WshEnvPROCESS.Item("userprofile")
FSO.DeleteFolder(UserProfile & "\Application Data\1C\1Cv82")
FSO.DeleteFolder(UserProfile & "\Local Settings\Application Data\1C\1Cv82")
End If
If SkipEndEcho = 0 Then
WScript.Echo "Скрипт выполнен. Нажмите " &Chr(34)& "Ок" &Chr(34)& " для выхода"
End If
vbscript — изучал на написании данного скрипта, соответственно может быть очень криво.
Коментарии писал вроде бы понятные.
Если есть вопросы по этой каше, спрашивайте, попробую вспомнить почему так писал.
Лет 6 назад писал vbs скрипт который который умел добавлять, удалять и исправлять базы у пользователя. С тех пор ничего не изменилось. Даже и не думал что это такая проблема. Поищу в архивах, может сохранился.
Пытался использовать эту приставку на работе, в связке с планшетом sony под управлением win8(До 8.1 еще не выпустили обновление). Часто вылетает интеловский софт… В итоге пришлось отказаться от данной схемы, провода хоть и не удобно, но надежно. Пробовал разные версии, не помогло.
С этой экономией я согласен, вот только как до этого работали 4-ре гипотетические компании с численностью более 5-тыс человек без почты до организации холдинга?
Все, дальше молчу. Спасибо за пояснение.
Могу согласиться если только с первым пунктом, второй собственно банально вытекает из первого и не более того.
ИМХО
А третий еще более спорный если экономят, то вряд-ли будут вообще Exchange покупать, а если есть деньги, то предпочитают все таки разносить сервера, как минимум для отказоустойчивости, и стоимость не играет такой большой роли.
___
"… либо функционала там 1/10 от того.." на моей практике Exchange используют также на 1/10
У меня возник почему то только один вопрос — а зачем?
Честно, не могу представить ситуацию, когда нужно бескомпромиссно использовать Exchange для решения данной задачи. Посвятите пожалуйста
Теннис, настольный хоккей, и т.п — это хороший способ переключить внимание, аналог у многих — перекур..., а что делать не курящим? Сам бросил курить, но до сих пор не знаю как устраивать себе «перекуры», а они нужны, особенно когда работаешь с информацией, ведь даже простая смена обстановки порой на 5 минут решала проблему над которой приходилось биться часами.
А с другой стороны для работодателя теннис — тот же простой, а почему соответственно, вместо работы, платит вам за то что вы играете…
Смотря как смотреть, увы не все это понимают
это не хуже, это факт в 99% случаев, чем крупнее компания, тем чаще говорят " незаменимых людей — нет, есть незаменённые ", только никто не оценивает эту замену заранее
Может мне не везет, но пока в моей практике у всех работодателей только одна единственная мотивация поднятия зарплаты/должности – заявление по собственному желанию…
теоретический возможно, у меня на ноуте Ubuntu 12 c ATI+IntelHD, в последних дровах от ати можно переключать активную видяху, тока треба рестарт окошек установка дров
Это же проблема у меня наблюдается на x8, причем проблема появляется только на юге МО (из личного опыта ) от Щербинки по Варшавскому ш. и по Боровскому/ Киевскому ш. от Москвы и аж до Апрелевки, причем частично они видимо «пофиксили», т.к. в некоторых районах телефон начал работать. Общение с ТП — «Ведутся работы по модернизации оборудования»
Причем до весны этого года этой проблемы не было совсем…
Функции:
Добавление, исправление, записей к базам.
Создание файла с записями, если не существовал.
Установка новых релизов платформ (требует ввода пароля во всплывающем окне командной строки для пользователя Setup@DOMAIN.LOCAL). Криво, но на тот момент вариантов увы не было.
Фильтрация добавления, исправления, записей к базам для конкретных групп.
Установка компоненты ScanOPOS для 1С
и может быть что то еще ))
vbscript — изучал на написании данного скрипта, соответственно может быть очень криво.
Коментарии писал вроде бы понятные.
Если есть вопросы по этой каше, спрашивайте, попробую вспомнить почему так писал.
статьюперевод! Аж воспоминания нахлынули о годах радиотехникума, и почему не пошел дальше учиться :(Все, дальше молчу. Спасибо за пояснение.
ИМХО
А третий еще более спорный если экономят, то вряд-ли будут вообще Exchange покупать, а если есть деньги, то предпочитают все таки разносить сервера, как минимум для отказоустойчивости, и стоимость не играет такой большой роли.
___
"… либо функционала там 1/10 от того.." на моей практике Exchange используют также на 1/10
Честно, не могу представить ситуацию, когда нужно бескомпромиссно использовать Exchange для решения данной задачи. Посвятите пожалуйста
А с другой стороны для работодателя теннис — тот же простой, а почему соответственно, вместо работы, платит вам за то что вы играете…
Смотря как смотреть, увы не все это понимают
Support for AMD hybrid technology
Причем до весны этого года этой проблемы не было совсем…