MCPcopy Index your code
hub / github.com/LazarenkoA/1C2GIT

github.com/LazarenkoA/1C2GIT @1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.1 ↗ · + Follow
71 symbols 170 edges 4 files 5 documented · 7%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

1C to Git

Простая в настройки утилита для синхронизации хранилища 1С и GIT репозитория.

Watch the video

Данное решение я постарался сделать максимально простым в настройки, по факту нужно два действия

  • Прописать настройки в конфиге
  • Запустить exe

:warning: Соответственно у вас уже должен быть локальный каталог и Git репозиторий с настроенной синхронизацией в этот каталог!

:warning: При первом запуске программа начнет получать историю начиная с первой версии в хранилище 1С, если вы хотите загружать историю начиная с определенной версии, тогда в каталоге с программой необходимо создать файл (без расширения) с именем репозитория в котором указать версию с которой необходимо начать загрузку. Например мы хотим синхронизировать репозиторий "tcp://192.168.0.1/acc" начиная с 34 версии, создаем в каталоге с exe файл "acc" содержимым "33" (без каких-либо переносов строк и всякого такого)


Конфигурационных файлов два, оба располагаются в каталоге Confs

  • Config.conf - основной в который вносятся настройки синхронизации
  • MapUsers.conf - не обязательный, для того что бы задать соответствия пользователя хранилища и git.

Структура Config.conf

{
      "Bin1C": "C:\\Program Files\\1cv8\\8.3.13.1513\\bin\\1cv8.exe",
      "RepositoryConf": [
        {
          "TimerMinute": 30,
          "From": {
            "Rep": "tcp://....../.....",
            "Extension": true,
            "Login": "",
            "Pass": ""
          },
          "To": {
            "RepDir": "",
            "Branch": "Dev"
          }
        }
      ]
    }
  • RepositoryConf - это массив, т.е. таких элементов может быть несколько
    • TimerMinute - расписание в минутах через сколько будет производиться синхронизация
    • From - тут настраивается подключение к хранилищу 1С.
      • Rep - строка подключения к хранилищу, может быть как по tcp://, так и файловая шара.
      • Extension - флаг того является конфигурация расширением или нет.
      • Login - имя пользователя для подключения к хранилищу
      • Pass - пароль для подключения к хранилищу
    • To - тут настраивается выгрузка в git
      • RepDir - Директория в которой создан репозиторий для хранилища
      • Branch - Ветка в которую нужно коммитить

Структура MapUsers.conf

{
  "Имя пользователя хранилища 1С": "Ivanov <Ivanov@test.ru>",
  "Имя пользователя хранилища 1С2": "Petrov <Petrov@test.ru>",
  "Default": "Sidorov <Sidorov@test.ru>"
}

Формат пользователя Git обязательно такой должен быть как в примере. Default - это тот пользователь, который будет взят, если не найдено явного соответствия. Если не найдено явное соответствие и нет указание Default, или вообще нет данного конфигурационного файла, коммиты в Git будут делаться без параметра --author, т.е. под тем пользователем под каким настроен Git.

Логирование

Утилита поддерживает 4 уровня логирования - ошибка (2) - предупреждение (3) - информация (4) - дебаг (5)

Уровень debug самый подробный. По умолчанию используется уровень "предупреждение". Задать уровень логирования можно при запуске параметром -LogLevel=5. Логи складываются в каталог Logs расположенный в директории с программой.

Запуск как службы

Для запуска синхронизации в виде службы можно воспользоваться приложением nssm.

nssm install 1C2GIT - Добавление службы

nssm set 1C2GIT Description "Выгрузка хранилища 1С в Git" - Установить описание для службы

nssm remove 1C2GIT - Удаление службы

Подробности см. readme в каталоге nssm-2.24

За процессом синхронизации можно наблюдать через веб интерфейс, по url

http://localhost:2020

Если хотите использовать web интерфейс, тогда в html\index.html в строке conn = new WebSocket("ws://127.0.0.1:2020/notifications"); установите имя хоста вместо 127.0.0.1

В web интерфейс выводятся как ошибки, так и информация о том, что произошла очередная синхронизация screenshot

Extension points exported contracts — how you extend this code

I1CCommit (Interface)
(no doc) [1 implementers]
Git/git.go
IRepository (Interface)
(no doc) [1 implementers]
Configuration/conf.go

Core symbols most depended-on inside this repo

GetRepPath
called by 13
Configuration/conf.go
run
called by 9
Git/git.go
IsExtension
called by 7
Configuration/conf.go
createTmpFile
called by 6
Configuration/conf.go
run
called by 6
Configuration/conf.go
GetRepPath
called by 3
main.go
New
called by 3
Git/git.go
GetOutDir
called by 3
Configuration/conf.go

Shape

Method 47
Function 14
Struct 7
Interface 2
TypeAlias 1

Languages

Go100%

Modules by API surface

main.go27 symbols
Configuration/conf.go26 symbols
Git/git.go17 symbols
Confs/settings.go1 symbols

For agents

$ claude mcp add 1C2GIT \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page