Skip to content

#118 Дозаполнение комментария по файлу со списком задач #119

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions src/core/Классы/МенеджерСинхронизации.os
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@
СоответствиеИменФайловДляПропуска.Вставить(".git", Истина);
СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаАвторов(), Истина); //Соответствие авторов и транслитерации.
СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаВерсииХранилища(), Истина); //Номер версии, может использоватся для синхронизации с хранилищем.
СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаСпискаЗадач(), Истина); //Список задач, может использоватся для синхронизации с хранилищем.

//Удалим все каталоги с файлами в папке для разбора, кроме папки, начинающейся с с точки.
ЕстьОшибкаУдаления = Ложь;
Expand Down Expand Up @@ -795,6 +796,15 @@

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

Функция НоваяТаблицаЗадач()

Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("НомерЗадачи");
Таблица.Колонки.Добавить("ОписаниеЗадачи");

Возврат Таблица;
КонецФункции

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

Для Каждого Строка Из ТаблицаВерсий Цикл
Expand All @@ -809,6 +819,136 @@

КонецПроцедуры

Процедура ДополнитьТаблицаИсторииХранилищаДаннымиОЗадачах(ТаблицаИсторииХранилища, КаталогРабочейКопии)

ПутьКФайлуЗадач = ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаСпискаЗадач());

ТаблицаЗадач = ПрочитатьФайлСоСпискомЗадачВТаблицуЗадач(ПутьКФайлуЗадач);

Если ТаблицаЗадач = Неопределено
ИЛИ ТаблицаЗадач.Количество() = 0 Тогда
Возврат;
Конецесли;

Для Каждого СтрокаТаблицаИсторииХранилища Из ТаблицаИсторииХранилища Цикл
пКомментарий = СтрокаТаблицаИсторииХранилища.Комментарий;

МассивЗадач = ПолучитьМассивНомеровЗадачИзТекста(пКомментарий);

Если МассивЗадач.Количество() = 0 Тогда
Продолжить;
Конецесли;

Если МассивЗадач.Количество() > 1 Тогда
ВызватьИсключение "Ошибка! обнаружено более 1 задачи, нет алгоритма для обработки такой ситуации";
Конецесли;

НомерЗадачи = МассивЗадач[0];

СтрокаТаблицаЗадач = ТаблицаЗадач.Найти(НомерЗадачи, "НомерЗадачи");

Если СтрокаТаблицаЗадач <> Неопределено Тогда
пКомментарий = СтрЗаменить(пКомментарий,"#"+НомерЗадачи,СтрокаТаблицаЗадач.ОписаниеЗадачи)
КонецЕсли;

СтрокаТаблицаИсторииХранилища.Комментарий = пКомментарий;

КонецЦикла;

КонецПроцедуры

Функция ПрочитатьФайлСоСпискомЗадачВТаблицуЗадач(ПутьКФайлуЗадач)

Если НЕ ЗначениеЗаполнено(ПутьКФайлуЗадач) Тогда
Возврат Неопределено;
КонецЕсли;

Файл = Новый Файл(ПутьКФайлуЗадач);
Если Не Файл.Существует() Тогда
Возврат НоваяТаблицаЗадач();
КонецЕсли;

ТаблицаЗадач = НоваяТаблицаЗадач();

Попытка
ТекстовыйФайл = Новый ЧтениеТекста(ПутьКФайлуЗадач,"utf-8");
СтрокаФайла = "";
Пока СтрокаФайла <> Неопределено Цикл
СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку();

МассивНомеровЗадач = ПолучитьМассивНомеровЗадачИзТекста(СтрокаФайла);
Если МассивНомеровЗадач.Количество() = 0 Тогда
Продолжить;
Конецесли;

Если МассивНомеровЗадач.Количество() > 1 Тогда
ВызватьИсключение "Ошибка! Найдено более 1 задачи в СтрокеФайла " + СтрокаФайла + " Файл " + ПутьКФайлуЗадач;
Конецесли;

НомерЗадачи = МассивНомеровЗадач[0];

НоваяСтрока = ТаблицаЗадач.Добавить();
НоваяСтрока.НомерЗадачи = НомерЗадачи;
НоваяСтрока.ОписаниеЗадачи = СтрокаФайла;
КонецЦикла;

Исключение
Если ТекстовыйФайл <> Неопределено Тогда
ОсвободитьОбъект(ТекстовыйФайл);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;

Если ТекстовыйФайл <> Неопределено Тогда
ОсвободитьОбъект(ТекстовыйФайл);
КонецЕсли;

Возврат ТаблицаЗадач;

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

Функция ПолучитьМассивНомеровЗадачИзТекста(Текст) Экспорт

МассивНомеровЗадач = Новый Массив();

ЧислоУказанныхЗадач = СтрЧислоВхождений(Текст, "#");
Если ЧислоУказанныхЗадач = 0 Тогда
Возврат МассивНомеровЗадач;
Конецесли;

Для НомерВхождения = 1 По ЧислоУказанныхЗадач Цикл

ПозРешетка = СтрНайти(Текст, "#",,,НомерВхождения);
ТекстНомерЗадачи = "#";
НомерЗадачи = "";

НомерСимвола = ПозРешетка + 1;
Символ = Сред(Текст,НомерСимвола,1);
Пока 48<= КодСимвола(Символ)
И КодСимвола(Символ) <= 57 Цикл

НомерЗадачи = НомерЗадачи + Символ;
НомерСимвола = НомерСимвола + 1;
Символ = Сред(Текст,НомерСимвола,1);
Конеццикла;

НомерЗадачи = СокрЛП(НомерЗадачи);

Если НЕ ЗначениеЗаполнено(НомерЗадачи) Тогда
Продолжить;
Конецесли;

НомерЗадачи = Число(НомерЗадачи);

Если МассивНомеровЗадач.Найти(НомерЗадачи) = Неопределено Тогда
МассивНомеровЗадач.Добавить(НомерЗадачи);
Конецесли;
КонецЦикла;

Возврат МассивНомеровЗадач;

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

// Генерирует файл соответствия пользователей хранилища 1С и git
//
Процедура СформироватьПервичныйФайлПользователейДляGit(Знач ИмяФайлаХранилища, Знач ВыходнойФайл) Экспорт
Expand Down Expand Up @@ -972,6 +1112,9 @@

ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища);
ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии, ПроверитьАвторовХранилища);

ДополнитьТаблицаИсторииХранилищаДаннымиОЗадачах(ТаблицаИсторииХранилища, КаталогРабочейКопии);

ТекущаяВерсия = НомерСинхронизированнойВерсии(КаталогРабочейКопии);

Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия);
Expand Down Expand Up @@ -1285,6 +1428,10 @@
Возврат "VERSION"
КонецФункции

Функция ИмяФайлаСпискаЗадач() Экспорт
Возврат "ListTasks.txt"
КонецФункции

Процедура ЗаписатьФайлВерсийГит(Знач КаталогФайлаВерсий, Знач Версия = "") Экспорт

ПутьКФайлуВерсий = ОбъединитьПути(КаталогФайлаВерсий, ИмяФайлаВерсииХранилища());
Expand Down