1616
1717 ТекстФайла = ПрочитатьФайл(ПутьКФайлу);
1818
19- Возврат ПрочитатьТекстСкобкоФайла(ТекстФайла);
19+ Возврат ПрочитатьТекстСкобкоФайлаРегулярками(ТекстФайла);
20+
21+ КонецФункции
22+
23+
24+ Функция ПрочитатьТекстСкобкоФайлаРегулярками (Знач Текст )
25+
26+ Текст = СтрЗаменить (Текст, """"" " , "'" );
27+
28+ РегВыражение = Новый РегулярноеВыражение("[\{]"" #"" ,"" ([^"" ]+)["" ][\}]" );
29+ МассивСовпадений = РегВыражение.НайтиСовпадения(Текст);
30+
31+ Массив = Новый Массив();
32+
33+ Для каждого Совпадение Из МассивСовпадений Цикл
34+ Массив.Добавить(Совпадение.Группы[1 ].Значение);
35+ КонецЦикла ;
36+
37+ ТаблицаВерсий = СформироватьТаблицуВерсий(Массив);
38+
39+ Возврат ТаблицаВерсий;
2040
2141КонецФункции
2242
5878 Продолжить ;
5979 КонецЕсли ;
6080
61- НовыйМассив.Добавить(РекурсивныйОбход(Стр) );
81+ НовыйМассив.Добавить(ЭначениеСтр );
6282
6383 КонецЦикла ;
6484
6989 Если НовыйМассив.Количество() = 1 Тогда
7090 Возврат НовыйМассив[0 ];
7191 КонецЕсли ;
72-
7392
7493 Возврат НовыйМассив;
7594
82101
83102 КонецЦикла ;
84103
85- Возврат Элемент;
104+ Возврат УбратьКавычки(Элемент);
105+
106+ ИначеЕсли СтрНачинаетсяС (Элемент, """ #"" " ) Тогда
107+
108+ Возврат Неопределено ;
86109
87110
88111 ИначеЕсли Не СтрНачинаетсяС (Элемент, """ " ) Тогда
91114
92115 Иначе
93116
94- Возврат Элемент;
117+ Возврат УбратьКавычки( Элемент) ;
95118
96119 КонецЕсли ;
97120
102125 ТаблицаВерсий = Новый ТаблицаЗначений;
103126 ТаблицаВерсий.Колонки.Добавить("Номер" );
104127 ТаблицаВерсий.Колонки.Добавить("Дата" );
128+ ТаблицаВерсий.Колонки.Добавить("Время" );
105129 ТаблицаВерсий.Колонки.Добавить("Автор" );
106130 ТаблицаВерсий.Колонки.Добавить("Комментарий" );
131+ ТаблицаВерсий.Колонки.Добавить("Изменены" );
132+ ТаблицаВерсий.Колонки.Добавить("Добавлены" );
133+ ТаблицаВерсий.Колонки.Добавить("Удалены" );
107134
108135 Возврат ТаблицаВерсий;
109136
112139Функция СформироватьТаблицуВерсий (Массив )
113140
114141 ТаблицуВерсий = ПолучитьТаблицуВерсий();
115- Версия = Неопределено ;
116-
142+ СтрокаТаблицы = Неопределено ;
143+ ИмяПоля = "" ;
117144 Для ИИ = 0 По Массив.ВГраница() Цикл
118145
119- Стр = Массив[ИИ];
120-
121- Если НЕ ТипЗнч (Стр) = Тип ("Массив" ) Тогда
122- Продолжить ;
123- КонецЕсли ;
124-
125- Если Стр.Количество() > 2 Тогда
126- Продолжить ;
127- КонецЕсли ;
128-
129- ТекстЭлемента = УбратьКавычки(Стр[1 ]);
146+ ТекущаяСтрока = Массив[ИИ];
130147
131- Если СтрНачинаетсяС (ТекстЭлемента , "Версия:" ) Тогда
148+ Если СтрНачинаетсяС (ТекущаяСтрока , "Версия:" ) Тогда
132149
133- Версия = ТаблицуВерсий.Добавить();
134-
135- ИИ = ИИ + 1 ;
150+ СтрокаТаблицы = ТаблицуВерсий.Добавить();
151+ СтрокаТаблицы.Изменены = Новый Массив;
152+ СтрокаТаблицы.Добавлены = Новый Массив;
153+ СтрокаТаблицы.Удалены = Новый Массив;
154+ ИмяПоля = "Номер" ;
136155
137- Версия.Номер = УбратьКавычки(Массив[ИИ][1 ]);
156+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Пользователь:" ) Тогда
157+ ИмяПоля = "Автор" ;
158+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Дата создания:" ) Тогда
159+ ИмяПоля = "Дата" ;
160+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Время создания:" ) Тогда
161+ ИмяПоля = "Время" ;
162+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Комментарий:" ) Тогда
163+ ИмяПоля = "Комментарий" ;
164+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Изменены:" ) Тогда
165+ ИмяПоля = "Изменены" ;
166+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Добавлены:" ) Тогда
167+ ИмяПоля = "Добавлены" ;
168+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Удалены:" ) Тогда
169+ ИмяПоля = "Удалены" ;
170+ Иначе
138171
139- ИначеЕсли СтрНачинаетсяС (ТекстЭлемента, "Пользователь:" ) Тогда
140- ИИ = ИИ + 1 ;
141- Версия.Автор = УбратьКавычки(Массив[ИИ][1 ]);
172+ Если НЕ СтрокаТаблицы = Неопределено Тогда
173+
174+ Если ИмяПоля = "Изменены"
175+ Или ИмяПоля = "Добавлены"
176+ ИЛИ ИмяПоля = "Удалены" Тогда
177+
178+ СтрокаТаблицы[ИмяПоля].Добавить(ТекущаяСтрока);
179+
180+
181+
182+ ИначеЕсли ИмяПоля = "Комментарий" Тогда
183+
184+ СтрокаТаблицы[ИмяПоля] = СократитьКавычки(ТекущаяСтрока);
185+
186+ Иначе
187+
188+ СтрокаТаблицы[ИмяПоля] = ТекущаяСтрока;
189+
190+ Конецесли ;
191+
192+
193+ КонецЕсли ;
142194
143- ИначеЕсли СтрНачинаетсяС (ТекстЭлемента, "Дата создания:" ) Тогда
144- ИИ = ИИ + 1 ;
145- Версия.Дата = УбратьКавычки(Массив[ИИ][1 ]);
146-
147- ИначеЕсли СтрНачинаетсяС (ТекстЭлемента, "Время создания:" ) Тогда
148- ИИ = ИИ + 1 ;
149- Версия.Дата = СтрШаблон ("%1 %2" , Версия.Дата, УбратьКавычки(Массив[ИИ][1 ]));
150-
151- ИначеЕсли СтрНачинаетсяС (ТекстЭлемента, "Комментарий:" ) Тогда
152- ИИ = ИИ + 1 ;
153- Версия.Комментарий = УбратьКавычки(Массив[ИИ][1 ]);
154195 КонецЕсли ;
155-
156196
157197 КонецЦикла ;
158198
159199 Для Каждого ОписаниеВерсии Из ТаблицуВерсий Цикл
160200
161- ОписаниеВерсии.Номер = Число (ОписаниеВерсии.Номер);
162- ОписаниеВерсии.Дата = РаботаСДатой.СтрокаВДату(ОписаниеВерсии.Дата, "dd.MM.yyyy HH:mm:ss" );
201+ ОписаниеВерсии.Номер = Число (СтрЗаменить (ОписаниеВерсии.Номер, Символы.НПП, "" ));
202+ ВремяВСекундах = ВремяВСекундах(ОписаниеВерсии.Время);
203+ ОписаниеВерсии.Дата = РаботаСДатой.СтрокаВДату(ОписаниеВерсии.Дата, "dd.MM.yyyy" ) + ВремяВСекундах;
163204
164205 КонецЦикла ;
165206
166207 Возврат ТаблицуВерсий;
167208
168209КонецФункции
169210
211+ Функция ВремяВСекундах (Время )
212+
213+ МассивЧисел = СтрРазделить (Время, ":" );
214+ Часы = МассивЧисел[0 ];
215+ Минуты = МассивЧисел[1 ];
216+ Секунды = МассивЧисел[2 ];
217+
218+ Возврат Часы * 3600 + Минуты* 60 + Секунды;
219+
220+ КонецФункции
221+
170222Функция УбратьКавычки (Знач СтрокаДанных )
171223
172224 Если СтрНачинаетсяС (СтрокаДанных, """ " ) Тогда
185237
186238КонецФункции
187239
240+ Функция СократитьКавычки (Знач СтрокаДанных )
241+
242+ Возврат СтрЗаменить (СтрокаДанных, """"" " , """ " );
243+
244+ КонецФункции
0 commit comments