diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 7db3feb1..c6d89c59 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -322,6 +322,7 @@ СоответствиеИменФайловДляПропуска.Вставить(".git", Истина); СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаАвторов(), Истина); //Соответствие авторов и транслитерации. СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаВерсииХранилища(), Истина); //Номер версии, может использоватся для синхронизации с хранилищем. + СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаСпискаЗадач(), Истина); //Список задач, может использоватся для синхронизации с хранилищем. //Удалим все каталоги с файлами в папке для разбора, кроме папки, начинающейся с с точки. ЕстьОшибкаУдаления = Ложь; @@ -795,6 +796,15 @@ КонецФункции +Функция НоваяТаблицаЗадач() + + Таблица = Новый ТаблицаЗначений; + Таблица.Колонки.Добавить("НомерЗадачи"); + Таблица.Колонки.Добавить("ОписаниеЗадачи"); + + Возврат Таблица; +КонецФункции + Процедура ДополнитьТаблицуВерсийИменамиАвторов(Знач ТаблицаВерсий, Знач ТаблицаПользователей) Для Каждого Строка Из ТаблицаВерсий Цикл @@ -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(Знач ИмяФайлаХранилища, Знач ВыходнойФайл) Экспорт @@ -972,6 +1112,9 @@ ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища); ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии, ПроверитьАвторовХранилища); + + ДополнитьТаблицаИсторииХранилищаДаннымиОЗадачах(ТаблицаИсторииХранилища, КаталогРабочейКопии); + ТекущаяВерсия = НомерСинхронизированнойВерсии(КаталогРабочейКопии); Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия); @@ -1285,6 +1428,10 @@ Возврат "VERSION" КонецФункции +Функция ИмяФайлаСпискаЗадач() Экспорт + Возврат "ListTasks.txt" +КонецФункции + Процедура ЗаписатьФайлВерсийГит(Знач КаталогФайлаВерсий, Знач Версия = "") Экспорт ПутьКФайлуВерсий = ОбъединитьПути(КаталогФайлаВерсий, ИмяФайлаВерсииХранилища());