16
16
17
17
ТекстФайла = ПрочитатьФайл(ПутьКФайлу);
18
18
19
- Возврат ПрочитатьТекстСкобкоФайла(ТекстФайла);
19
+ Возврат ПрочитатьТекстСкобкоФайлаРегулярками(ТекстФайла);
20
+
21
+ КонецФункции
22
+
23
+
24
+ Функция ПрочитатьТекстСкобкоФайлаРегулярками (Знач Текст )
25
+
26
+ Текст = СтрЗаменить (Текст, """"" " , "'" );
27
+
28
+ РегВыражение = Новый РегулярноеВыражение("[\{]"" #"" ,"" ([^"" ]+)["" ][\}]" );
29
+ МассивСовпадений = РегВыражение.НайтиСовпадения(Текст);
30
+
31
+ Массив = Новый Массив();
32
+
33
+ Для каждого Совпадение Из МассивСовпадений Цикл
34
+ Массив.Добавить(Совпадение.Группы[1 ].Значение);
35
+ КонецЦикла ;
36
+
37
+ ТаблицаВерсий = СформироватьТаблицуВерсий(Массив);
38
+
39
+ Возврат ТаблицаВерсий;
20
40
21
41
КонецФункции
22
42
58
78
Продолжить ;
59
79
КонецЕсли ;
60
80
61
- НовыйМассив.Добавить(РекурсивныйОбход(Стр) );
81
+ НовыйМассив.Добавить(ЭначениеСтр );
62
82
63
83
КонецЦикла ;
64
84
69
89
Если НовыйМассив.Количество() = 1 Тогда
70
90
Возврат НовыйМассив[0 ];
71
91
КонецЕсли ;
72
-
73
92
74
93
Возврат НовыйМассив;
75
94
82
101
83
102
КонецЦикла ;
84
103
85
- Возврат Элемент;
104
+ Возврат УбратьКавычки(Элемент);
105
+
106
+ ИначеЕсли СтрНачинаетсяС (Элемент, """ #"" " ) Тогда
107
+
108
+ Возврат Неопределено ;
86
109
87
110
88
111
ИначеЕсли Не СтрНачинаетсяС (Элемент, """ " ) Тогда
91
114
92
115
Иначе
93
116
94
- Возврат Элемент;
117
+ Возврат УбратьКавычки( Элемент) ;
95
118
96
119
КонецЕсли ;
97
120
102
125
ТаблицаВерсий = Новый ТаблицаЗначений;
103
126
ТаблицаВерсий.Колонки.Добавить("Номер" );
104
127
ТаблицаВерсий.Колонки.Добавить("Дата" );
128
+ ТаблицаВерсий.Колонки.Добавить("Время" );
105
129
ТаблицаВерсий.Колонки.Добавить("Автор" );
106
130
ТаблицаВерсий.Колонки.Добавить("Комментарий" );
131
+ ТаблицаВерсий.Колонки.Добавить("Изменены" );
132
+ ТаблицаВерсий.Колонки.Добавить("Добавлены" );
133
+ ТаблицаВерсий.Колонки.Добавить("Удалены" );
107
134
108
135
Возврат ТаблицаВерсий;
109
136
112
139
Функция СформироватьТаблицуВерсий (Массив )
113
140
114
141
ТаблицуВерсий = ПолучитьТаблицуВерсий();
115
- Версия = Неопределено ;
116
-
142
+ СтрокаТаблицы = Неопределено ;
143
+ ИмяПоля = "" ;
117
144
Для ИИ = 0 По Массив.ВГраница() Цикл
118
145
119
- Стр = Массив[ИИ];
120
-
121
- Если НЕ ТипЗнч (Стр) = Тип ("Массив" ) Тогда
122
- Продолжить ;
123
- КонецЕсли ;
124
-
125
- Если Стр.Количество() > 2 Тогда
126
- Продолжить ;
127
- КонецЕсли ;
128
-
129
- ТекстЭлемента = УбратьКавычки(Стр[1 ]);
146
+ ТекущаяСтрока = Массив[ИИ];
130
147
131
- Если СтрНачинаетсяС (ТекстЭлемента , "Версия:" ) Тогда
148
+ Если СтрНачинаетсяС (ТекущаяСтрока , "Версия:" ) Тогда
132
149
133
- Версия = ТаблицуВерсий.Добавить();
134
-
135
- ИИ = ИИ + 1 ;
150
+ СтрокаТаблицы = ТаблицуВерсий.Добавить();
151
+ СтрокаТаблицы.Изменены = Новый Массив;
152
+ СтрокаТаблицы.Добавлены = Новый Массив;
153
+ СтрокаТаблицы.Удалены = Новый Массив;
154
+ ИмяПоля = "Номер" ;
136
155
137
- Версия.Номер = УбратьКавычки(Массив[ИИ][1 ]);
156
+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Пользователь:" ) Тогда
157
+ ИмяПоля = "Автор" ;
158
+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Дата создания:" ) Тогда
159
+ ИмяПоля = "Дата" ;
160
+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Время создания:" ) Тогда
161
+ ИмяПоля = "Время" ;
162
+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Комментарий:" ) Тогда
163
+ ИмяПоля = "Комментарий" ;
164
+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Изменены:" ) Тогда
165
+ ИмяПоля = "Изменены" ;
166
+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Добавлены:" ) Тогда
167
+ ИмяПоля = "Добавлены" ;
168
+ ИначеЕсли СтрНачинаетсяС (ТекущаяСтрока, "Удалены:" ) Тогда
169
+ ИмяПоля = "Удалены" ;
170
+ Иначе
138
171
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
+ КонецЕсли ;
142
194
143
- ИначеЕсли СтрНачинаетсяС (ТекстЭлемента, "Дата создания:" ) Тогда
144
- ИИ = ИИ + 1 ;
145
- Версия.Дата = УбратьКавычки(Массив[ИИ][1 ]);
146
-
147
- ИначеЕсли СтрНачинаетсяС (ТекстЭлемента, "Время создания:" ) Тогда
148
- ИИ = ИИ + 1 ;
149
- Версия.Дата = СтрШаблон ("%1 %2" , Версия.Дата, УбратьКавычки(Массив[ИИ][1 ]));
150
-
151
- ИначеЕсли СтрНачинаетсяС (ТекстЭлемента, "Комментарий:" ) Тогда
152
- ИИ = ИИ + 1 ;
153
- Версия.Комментарий = УбратьКавычки(Массив[ИИ][1 ]);
154
195
КонецЕсли ;
155
-
156
196
157
197
КонецЦикла ;
158
198
159
199
Для Каждого ОписаниеВерсии Из ТаблицуВерсий Цикл
160
200
161
- ОписаниеВерсии.Номер = Число (ОписаниеВерсии.Номер);
162
- ОписаниеВерсии.Дата = РаботаСДатой.СтрокаВДату(ОписаниеВерсии.Дата, "dd.MM.yyyy HH:mm:ss" );
201
+ ОписаниеВерсии.Номер = Число (СтрЗаменить (ОписаниеВерсии.Номер, Символы.НПП, "" ));
202
+ ВремяВСекундах = ВремяВСекундах(ОписаниеВерсии.Время);
203
+ ОписаниеВерсии.Дата = РаботаСДатой.СтрокаВДату(ОписаниеВерсии.Дата, "dd.MM.yyyy" ) + ВремяВСекундах;
163
204
164
205
КонецЦикла ;
165
206
166
207
Возврат ТаблицуВерсий;
167
208
168
209
КонецФункции
169
210
211
+ Функция ВремяВСекундах (Время )
212
+
213
+ МассивЧисел = СтрРазделить (Время, ":" );
214
+ Часы = МассивЧисел[0 ];
215
+ Минуты = МассивЧисел[1 ];
216
+ Секунды = МассивЧисел[2 ];
217
+
218
+ Возврат Часы * 3600 + Минуты* 60 + Секунды;
219
+
220
+ КонецФункции
221
+
170
222
Функция УбратьКавычки (Знач СтрокаДанных )
171
223
172
224
Если СтрНачинаетсяС (СтрокаДанных, """ " ) Тогда
185
237
186
238
КонецФункции
187
239
240
+ Функция СократитьКавычки (Знач СтрокаДанных )
241
+
242
+ Возврат СтрЗаменить (СтрокаДанных, """"" " , """ " );
243
+
244
+ КонецФункции
0 commit comments