Что нового

[Автоматизация] автоматическое добавление баз 1с

millgan

Новичок
Сообщения
42
Репутация
2
Всем привет нарыл вот такой скрипт
Код:
#include <AD.au3> ; библиотека для работы с АД
#include <Array.au3> ; библиотека для работы с массивами
 
$pathDB = @AppDataDir & '\1C\1CEStart\' ;путь куда должен записаться файл  ibases.v8i
 
; делаем бэкап файла. В дальнейшем рекомендуется отключить или периодически чистить старые бекапы во избания переполнения дискового пространства
If FileExists($pathDB & '\ibases.v8i') Then FileCopy($pathDB & '\ibases.v8i', $pathDB & "\backup\" & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & '\', 8)
 
; Открываем соединение к Active Directory
_AD_Open()
If @error Then Exit MsgBox(16, "Active Directory Example Skript", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)
 
Global $aProperties[1][2]
 
Global $aUser
$aUser = _AD_GetUserGroups(@UserName) ; парсим в каких группах находится пользователь
If $aUser[0] = 0 Then
        ConsoleWrite(@UserName & " group not found" & @CRLF)
 Else
        $file = FileOpen($pathDB & '\ibases.v8i', 138) ; открываем файл для записи в кодировке UTF-8 удалив содержимое текущего файла
       
        ; На всякий случай проверяем права на запись файла
   If $file = -1 Then
           ConsoleWrite("Error!!! Unable to open file." & @CRLF)
           Exit
   EndIf
 
        For $i = 1 to (UBound($aUser, 1) -1) Step 1 ; в цикле проверяем записи в всех группах пользователя
          Global $sGroup = _AD_FQDNToSamAccountName($aUser[$i])
          $aProperties = _AD_GetObjectProperties($sGroup)
          ;_ArrayDisplay($aProperties, "Свойства группы '" & $sGroup & "'") ; !!! информация для дебага
          $iIndex = _ArraySearch($aProperties, "info", 0, 0, 0, 1, 1, 0) ; ищем заметки в настройках группы
          If @error Then
                  ConsoleWrite("Error!!! Note INFO not found." & @CRLF)
          Else
                  ConsoleWrite($pathDB & "Найден в массиве в позиции "& $iIndex & ' Записано: ' & $aProperties[$iIndex][1] & @CRLF)
                  FileWrite($file, $aProperties[$iIndex][1])
                 
          EndIf
   Next ; конец цикла
   FileClose($file) ; закрываем ранее открытый файл
EndIf
 
; Закрываем соединение к Active Directory
_AD_Close()

проверяет в каких группах находится доменный пользователь от имени которого запустился скрипт

проверяет для каждой есть ли запись в поле "Заметки" или если смотреть через ADSIedit, то поле info

Записывает содержимое поля info в файл ibases.v8i
-----------------------
Помогите сделать скрипт универсальным... Добавить возможность обработки баз 7.7 и 8.1

Для 7.7 есть некоторые мысли: там, как известно базы прописываются в реестре. что если добвлять в поле info в греппе ad строчку типо CMD: reg import \\путь\путь\файлик.reg , а скрипт обнаружив сочетание REG IMPORT выполнял эту команду

для 8.1 и 8.2 видимо нужно делать разделение по порту сервера, тоесть для 8.1 это srvsql:1541 а для 8.2 srvsql:1641
вот пример записи обеих версий
Код:
[Бухгалтерия  8.2]
Connect=Srvr="SRVSQL:1641";Ref="BUH82";
ID=c796b9a3-9948-4594-8c78-36dfb1cf9955
OrderInList=98560
Folder=/Ниссан
OrderInTree=38229.33333333334
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.2
DefaultApp=ThickClient

Код:
[CRM 8.1]
Connect=Srvr="SRVSQL:1541";Ref="CRM";
ID=1a6d33ad-5bf4-4a87-8b57-0f784361bbf9
OrderInList=16640
Folder=/
OrderInTree=81920
External=0
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Верх