Skip to content

Commit 76a243b

Browse files
diwolandartbear
authored andcommitted
Возможность изменения автора для загрузки в Git (#121)
возможно изменения автора для закладки в хранилище указав в метке "--GitSyncAuthor ИмяПользователя", в Git данная закладка загрузится под пользователем ИмяПользователя. Важно! Пользователь ИмяПользователя должен быть создан в хранилище 1С
1 parent fa25113 commit 76a243b

File tree

1 file changed

+45
-4
lines changed

1 file changed

+45
-4
lines changed

src/core/Классы/МенеджерСинхронизации.os

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
///////////////////////////////////////////////////////////////////////////////////////////////
1+
///////////////////////////////////////////////////////////////////////////////////////////////
22
//
33
// Модуль основан на проекте v83unpack (https://github.com/xDrivenDevelopment/v83unpack)
44
// и является скорее глубоким рефакторингом под 1Script, нежели самостоятельной разработкой.
@@ -667,13 +667,15 @@
667667

668668
Перем ТаблицаВерсий;
669669
Перем ТаблицаПользователей;
670+
Перем ТаблицаМеток;
670671

671672
ЧтениеБазыДанных = Новый ЧтениеТаблицФайловойБазыДанных;
672673
ЧтениеБазыДанных.ОткрытьФайл(ФайлХранилища);
673674
Попытка
674-
Таблицы = ЧтениеБазыДанных.ВыгрузитьТаблицыВXML("USERS;VERSIONS");
675+
Таблицы = ЧтениеБазыДанных.ВыгрузитьТаблицыВXML("USERS;VERSIONS;LABELS");
675676
ТаблицаВерсий = ЧтениеБазыДанных.ПрочитатьТаблицуИзXml(Таблицы["VERSIONS"]);
676677
ТаблицаПользователей = ЧтениеБазыДанных.ПрочитатьТаблицуИзXml(Таблицы["USERS"]);
678+
ТаблицаМеток = ЧтениеБазыДанных.ПрочитатьТаблицуИзXml(Таблицы["LABELS"]);
677679
Исключение
678680
ЧтениеБазыДанных.ЗакрытьФайл();
679681
ВызватьИсключение;
@@ -683,8 +685,9 @@
683685

684686
ТаблицаВерсий = КонвертироватьТаблицуВерсийИзФорматаБД(ТаблицаВерсий);
685687
ТаблицаПользователей = КонвертироватьТаблицуПользователейИзФорматаБД(ТаблицаПользователей);
688+
ТаблицаМеток = КонвертироватьТаблицуМеток(ТаблицаМеток);
686689

687-
ДополнитьТаблицуВерсийИменамиАвторов(ТаблицаВерсий, ТаблицаПользователей);
690+
ДополнитьТаблицуВерсийИменамиАвторов(ТаблицаВерсий, ТаблицаПользователей, ТаблицаМеток);
688691
ТаблицаВерсий.Сортировать("НомерВерсии");
689692

690693
Возврат ТаблицаВерсий;
@@ -754,6 +757,19 @@
754757
Возврат ТаблицаВерсий;
755758
КонецФункции
756759

760+
Функция КонвертироватьТаблицуМеток(Знач ТаблицаБД)
761+
ТаблицаМеток = НоваяТаблицаМеток();
762+
763+
Для Каждого СтрокаБД Из ТаблицаБД Цикл
764+
НоваяСтрока = ТаблицаМеток.Добавить();
765+
НоваяСтрока.НомерВерсии = Число(СтрокаБД.VERNUM);
766+
НоваяСтрока.Метка = СтрокаБД.NAME;
767+
КонецЦикла;
768+
769+
Возврат ТаблицаМеток;
770+
771+
КонецФункции
772+
757773
Функция КонвертироватьТаблицуПользователейИзФорматаБД(Знач ТаблицаБД)
758774
ТаблицаПользователей = НоваяТаблицаПользователейХранилища();
759775

@@ -769,6 +785,16 @@
769785

770786
КонецФункции
771787

788+
Функция НоваяТаблицаМеток()
789+
790+
Таблица = Новый ТаблицаЗначений;
791+
Таблица.Колонки.Добавить("НомерВерсии");
792+
Таблица.Колонки.Добавить("Метка");
793+
794+
Возврат Таблица;
795+
796+
КонецФункции
797+
772798
Функция НоваяТаблицаИсторииВерсий()
773799

774800
Таблица = Новый ТаблицаЗначений;
@@ -795,9 +821,24 @@
795821

796822
КонецФункции
797823

798-
Процедура ДополнитьТаблицуВерсийИменамиАвторов(Знач ТаблицаВерсий, Знач ТаблицаПользователей)
824+
Процедура ДополнитьТаблицуВерсийИменамиАвторов(Знач ТаблицаВерсий, Знач ТаблицаПользователей, Знач ТаблицаМеток)
799825

800826
Для Каждого Строка Из ТаблицаВерсий Цикл
827+
СтрокаМеток = ТаблицаМеток.Найти(Строка.НомерВерсии, "НомерВерсии");
828+
Если Не СтрокаМеток = Неопределено Тогда
829+
Если Врег(Лев(СтрокаМеток.Метка, 15)) = Врег("--GitSyncAuthor") Тогда
830+
ПользовательДляЗамены = СокрЛП(Сред(СтрокаМеток.Метка, 17));
831+
СтрокаПользователя = ТаблицаПользователей.Найти(ПользовательДляЗамены, "Автор");
832+
Если СтрокаПользователя = Неопределено Тогда
833+
Сообщение = "Не удалось найти пользователя для замены <%1> в номере версии <%2>, метка <%3> - ПолучитьТаблицуВерсийИзФайлаХранилища1С";
834+
Лог.Ошибка(СтроковыеФункции.ПодставитьПараметрыВСтроку(Сообщение, ПользовательДляЗамены, Строка.НомерВерсии, СтрокаМеток.Метка));
835+
Иначе
836+
Строка.Автор = СтрокаПользователя.Автор;
837+
Строка.ГУИД_Автора = СтрокаПользователя.ГУИД_Автора;
838+
Продолжить;
839+
КонецЕсли;
840+
КонецЕсли;
841+
КонецЕсли;
801842
строкаПользователя = ТаблицаПользователей.Найти(Строка.ГУИД_Автора, "ГУИД_Автора");
802843
Если строкаПользователя = Неопределено Тогда
803844
Сообщение = "Не удалось найти автора коммита из хранилища 1С по номеру версии <%1>, комментарий <%2>, ГУИД-у <%3> - ПолучитьТаблицуВерсийИзФайлаХранилища1С";

0 commit comments

Comments
 (0)