Skip to content

Commit d5b305d

Browse files
author
Хорев Алексей Андреевич
committed
Finish 0.6.4
2 parents 79ed5d7 + 1877746 commit d5b305d

8 files changed

Lines changed: 250 additions & 26 deletions

File tree

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
Пример работы:
88
```bsl
99
ХранилищеКонфигурации = Новый МенеджерХранилищаКонфигурации();
10-
ХранилищеКонфигурации.УстановитьКаталогХранилища(КаталогХранилища);
10+
ХранилищеКонфигурации.УстановитьПутьКХранилищу(КаталогХранилища);
1111
1212
ХранилищеКонфигурации.ПрочитатьХранилище();
1313
@@ -41,12 +41,12 @@
4141
//
4242
```
4343

44-
#### УстановитьКаталогХранилища
44+
#### УстановитьПутьКХранилищу
4545
```bsl
46-
// Установка каталога файлового хранилища конфигурации
46+
// Установка путь к хранилищу конфигурации
4747
//
4848
// Параметры:
49-
// НовыйКаталогХранилища - Строка - путь к папке с хранилищем конфигурации 1С
49+
// НовыйПутьКХранилищу - Строка - путь к хранилищу конфигурации 1С
5050
//
5151
```
5252

@@ -111,7 +111,7 @@
111111
//
112112
```
113113

114-
#### СоздатьФайловоеХранилищеКонфигурации
114+
#### СоздатьХранилищеКонфигурации
115115
```bsl
116116
// Создание файлового хранилища конфигурации используя контекст конфигуратора
117117
//

epf/ОбработкаКонвертацииMXLJSON/ОбработкаКонвертацииMXLJSON/Ext/ObjectModule.bsl

Lines changed: 178 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,187 @@
8585
Дата = ТабДок.Область(НачальнаяПозицияВерсии+2,2,НачальнаяПозицияВерсии+2,2).Текст;
8686
Время = ТабДок.Область(НачальнаяПозицияВерсии+3,2,НачальнаяПозицияВерсии+3,2).Текст;
8787

88-
Возврат СтрШаблон("%1 %2", Дата, Время);
88+
Возврат СтрВДату(СтрШаблон("%1 %2", Дата, Время));
8989

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

92+
93+
Функция СтрВДату(Знач сДата) Экспорт
94+
95+
Перем п_мТЕМП; // массив временных переменных
96+
97+
//-----для локализации ------------------------------
98+
Перем п_мФорматы;
99+
п_мФорматы = Новый Массив(4);
100+
п_мФорматы[0] = "г"; // знак года
101+
п_мФорматы[1] = "ЧЦ=2; ЧН=; ЧВН=";
102+
п_мФорматы[2] = "ЧГ=0";
103+
п_мФорматы[3] = "ДФ=МММ";
104+
//---------------------------------------------------
105+
106+
Если ПустаяСтрока(сДата) Тогда
107+
п_мТЕМП[6] =Дата("00010101000000");
108+
Возврат п_мТЕМП[6];
109+
КонецЕсли;
110+
111+
сДата = Формат(сДата, п_мФорматы[2]); //на случай если в формате 1с числом: 20150320220315. (+локализация)
112+
113+
//Если использовать конструкцию "Если Найти(сДата,..." , то перебор букв строки будет происходить 2а раза: Найти и СтрЗаменить //Использование Найти в данном случае бессмысленно
114+
// можно добавить любой разделитель - @, #, %, и тд, неважно. Главное, заменить их на "."
115+
сДата = СтрЗаменить(сДата, "«", ""); //«1 Фев 05 г.»
116+
сДата = СтрЗаменить(сДата, "»", ""); //«1 Фев 05 г.»
117+
сДата = СтрЗаменить(сДата, п_мФорматы[0] + ".", ""); //1 Фев 05 г. 17:20:00 //просто "г" нельзя из-за "авГуст", например. Но в далее,после парсинга месяца, любое "г" в строке, удаляется
118+
сДата = СтрЗаменить(сДата, "/", "."); // 1/2/5
119+
сДата = СтрЗаменить(сДата, "\", "."); // 1\02\05
120+
сДата = СтрЗаменить(сДата, "-", "."); // 1-02-05
121+
сДата = СтрЗаменить(сДата, Символы.Таб, "."); // 01.02.2005 17:20:00
122+
сДата = СтрЗаменить(сДата, " ", "."); // 1/02 2005 17:20:00
123+
сДата = СтрЗаменить(сДата, "..", "."); //Возможны, появление двойных точек из за "янв." в "янв" или из-за " г. ".
124+
сДата = НРег(СокрЛП(сДата)); // строку в нижний регистр, чтоб проще было с Янв Январь янв и тд
125+
126+
п_мТЕМП = Новый массив(7);//массив для временных переменных
127+
128+
п_мТЕМП[0] = Найти(сДата,".");
129+
130+
Если п_мТЕМП[0] = 0 Тогда
131+
//если точек нет
132+
133+
Если Найти(сДата,":") Тогда
134+
//только время (или ошибка)
135+
сДата = "01.01.0001." + сДата;
136+
п_мТЕМП[0] = Найти(сДата,".");
137+
иначе
138+
//похоже на формат 1с. Можно добавить "попытку"...
139+
п_мТЕМП[6] = дата(сДата);
140+
Возврат п_мТЕМП[6];
141+
142+
КонецЕсли;
143+
144+
145+
//иначеЕсли п_мТЕМП[0] = 1 Тогда
146+
// //например, месяц и год
147+
КонецЕсли;
148+
149+
150+
// ----- ДНИ -------------------------------------
151+
п_мТЕМП[0] = Лев(сДата, п_мТЕМП[0] - 1);//дни
152+
п_мТЕМП[4] = Прав(сДата, СтрДлина(сДата) - СтрДлина(п_мТЕМП[0])-1);// месяц и все что справа
153+
п_мТЕМП[0] = Формат(Число(п_мТЕМП[0]),п_мФорматы[1]);//дни в формат двух чисел
154+
// ----- Месяц -----------------------------------
155+
п_мТЕМП[1] = Лев(п_мТЕМП[4], найти(п_мТЕМП[4],".") - 1);// месяц
156+
п_мТЕМП[4] = Прав(п_мТЕМП[4], СтрДлина(п_мТЕМП[4]) - СтрДлина(п_мТЕМП[1])-1);// год и все что справа
157+
//Возможны варианты месяца "янв" "янв." "январь" "января"
158+
Если СтрДлина(п_мТЕМП[1]) > 2 Тогда // месяц в виде янв или январь
159+
160+
п_мТЕМП[2] = 0;
161+
Пока п_мТЕМП[2] < 12 Цикл
162+
163+
п_мТЕМП[2] = п_мТЕМП[2]+1;
164+
// берем из "янв." только "янв"
165+
п_мТЕМП[3] = СтрЗаменить(Формат(Дата("2001" + Формат(п_мТЕМП[2],п_мФорматы[1]) + "01"), п_мФорматы[3]),".","");// + локализация
166+
167+
п_мТЕМП[3] = найти(п_мТЕМП[1], п_мТЕМП[3]);
168+
169+
Если п_мТЕМП[3] > 0 тогда
170+
п_мТЕМП[1] = Формат(п_мТЕМП[2],п_мФорматы[1]);
171+
прервать;
172+
КонецЕсли;
173+
КонецЦикла;
174+
Иначе
175+
п_мТЕМП[1] = Формат(Число(п_мТЕМП[1]),п_мФорматы[1]);
176+
КонецЕсли;
177+
// ----- ГОД -----------------------------------
178+
//Если в строке было "г" без точки("г.")
179+
п_мТЕМП[4] = СтрЗаменить(п_мТЕМП[4], п_мФорматы[0], "");
180+
//ищем год. Дата может быть без времени, т.е. год последний в строке
181+
п_мТЕМП[2] = Найти(п_мТЕМП[4],".");
182+
183+
Если п_мТЕМП[2]>0 Тогда
184+
п_мТЕМП[2] = Лев(п_мТЕМП[4], п_мТЕМП[2] - 1);// год
185+
п_мТЕМП[4] = Прав(п_мТЕМП[4], СтрДлина(п_мТЕМП[4]) - СтрДлина(п_мТЕМП[2])-1);//время и все что справа
186+
Иначе
187+
п_мТЕМП[2] = п_мТЕМП[4];
188+
п_мТЕМП[4] = "";
189+
КонецЕсли;
190+
191+
//проверяем год
192+
п_мТЕМП[3] = СтрДлина(п_мТЕМП[2]);
193+
//если год из двух цыфр
194+
Если п_мТЕМП[3] = 2 или п_мТЕМП[3] = 1 Тогда
195+
п_мТЕМП[3] = Число(п_мТЕМП[2]);// год как число
196+
197+
//что означает 15 в "20.03.15"? это 2015г или 1915г? (Настраиваем под себя или выдаём ошибку)
198+
// в моем варианте если < 50 то это 2000г. иначе 1900г.
199+
Если п_мТЕМП[3] < 50 Тогда
200+
п_мТЕМП[2] = "20" + Формат(п_мТЕМП[3],п_мФорматы[1]);
201+
Иначе
202+
п_мТЕМП[2] = "19" + Формат(п_мТЕМП[3],п_мФорматы[1]);
203+
КонецЕсли;
204+
205+
КонецЕсли;
206+
207+
// ======================= Форматируем время ==============================
208+
п_мТЕМП[6] = СтрЗаменить(п_мТЕМП[4],":", ".");// если дата была, например: 17-30-10, то сейчас 17.30.10
209+
//"попытка" на преобразование даты, по времени, занимает столько же, а по ресурсам больше, чем сам парсинг времени.
210+
//поэтому, убиваем двух зайцев перебором часы/мин/сек сразу
211+
Если СтрДлина(п_мТЕМП[6]) > 0 Тогда
212+
213+
п_мТЕМП[5] = найти(п_мТЕМП[6],".");
214+
Если п_мТЕМП[5] > 0 Тогда
215+
// ========= часы =================
216+
п_мТЕМП[3] = Лев(п_мТЕМП[6], найти(п_мТЕМП[6],".") - 1);//часы
217+
п_мТЕМП[6] = Прав(п_мТЕМП[6], СтрДлина(п_мТЕМП[6]) - СтрДлина(п_мТЕМП[3])-1);// минуты и все что справа
218+
219+
Если п_мТЕМП[3] = "" тогда
220+
п_мТЕМП[3] = "00";
221+
Иначе
222+
//при переводе в дату лидирующий 0 у часов удаляется. Т.е. след. строка бесполезна
223+
//п_мТЕМП[3] = Формат(Число(п_мТЕМП[3]),п_мФорматы[1]);//часы в формат двух чисел
224+
КонецЕсли;
225+
226+
п_мТЕМП[5] = найти(п_мТЕМП[6],".");
227+
Если п_мТЕМП[5] > 0 Тогда
228+
// ========= минуты =================
229+
п_мТЕМП[4] = Лев(п_мТЕМП[6], найти(п_мТЕМП[6],".") - 1);
230+
п_мТЕМП[6] = Прав(п_мТЕМП[6], СтрДлина(п_мТЕМП[6]) - СтрДлина(п_мТЕМП[4])-1);// секунды и все что справа
231+
Если п_мТЕМП[4] = "" тогда
232+
п_мТЕМП[4] = "00";
233+
Иначе
234+
п_мТЕМП[4] = Формат(Число(п_мТЕМП[4]),п_мФорматы[1]);//минуты в формат двух чисел
235+
КонецЕсли;
236+
237+
// ========= секунды =================
238+
Если СтрДлина(п_мТЕМП[6]) = 0 Тогда
239+
п_мТЕМП[5] = "00";
240+
Иначе
241+
п_мТЕМП[5] = Формат(Число(п_мТЕМП[6]),п_мФорматы[1]);//секунды в формат двух чисел
242+
КонецЕсли;
243+
244+
Иначе
245+
п_мТЕМП[4] = Формат(Число(п_мТЕМП[6]),п_мФорматы[1]);
246+
п_мТЕМП[5] = "00";
247+
КонецЕсли;
248+
Иначе
249+
п_мТЕМП[3] = Формат(Число(п_мТЕМП[6]),п_мФорматы[1]);
250+
п_мТЕМП[4] = "00";
251+
п_мТЕМП[5] = "00";
252+
КонецЕсли;
253+
254+
Иначе
255+
п_мТЕМП[3] = "00";
256+
п_мТЕМП[4] = "00";
257+
п_мТЕМП[5] = "00";
258+
КонецЕсли;
259+
260+
п_мТЕМП[6] = п_мТЕМП[0] + "." + п_мТЕМП[1] + "." + п_мТЕМП[2] + " " + п_мТЕМП[3] + ":" + п_мТЕМП[4] + ":" + п_мТЕМП[5];
261+
п_мТЕМП[6] = дата(п_мТЕМП[6]);
262+
263+
Возврат п_мТЕМП[6];
264+
265+
266+
КонецФункции
267+
268+
92269
Функция ПолучитьКомментарийВерсии(ТабДок, НачальнаяПозицияВерсии)
93270

94271
Возврат ТабДок.Область(НачальнаяПозицияВерсии+4,2,НачальнаяПозицияВерсии+4,2).Текст;

features/step_definitions/ОбщиеФункции.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
Процедура ЯСоздаюФайловоеХранилищеСПараметромПодключенияБазыКхранилищу(Знач ПодключитьсяКхранилищу) Экспорт
4949

5050
ХранилищеКонфигурации = БДД.ПолучитьИзКонтекста("ХранилищеКонфигурации");
51-
ХранилищеКонфигурации.СоздатьФайловоеХранилищеКонфигурации(ПодключитьсяКхранилищу);
51+
ХранилищеКонфигурации.СоздатьХранилищеКонфигурации(ПодключитьсяКхранилищу);
5252

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

features/step_definitions/ПолучениеОтчетаИзХранилища.os

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
2+
#Использовать asserts
3+
#Использовать tempfiles
4+
#Использовать fs
25

36
Перем БДД; //контекст фреймворка 1bdd
47

features/step_definitions/РаботаСФайломСпискаОбъектов.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
Процедура ЯУстанавливаюКаталогХранилищаИзПеременной(Знач КаталогХранилищаКонфигурации) Экспорт
133133

134134
ХранилищеКонфигурации = БДД.ПолучитьИзКонтекста("ХранилищеКонфигурации");
135-
ХранилищеКонфигурации.УстановитьКаталогХранилища(БДД.ПолучитьИзКонтекста(КаталогХранилищаКонфигурации));
135+
ХранилищеКонфигурации.УстановитьПутьКХранилищу(БДД.ПолучитьИзКонтекста(КаталогХранилищаКонфигурации));
136136

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

features/step_definitions/ЧтениеДанныхХранилища.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
Процедура ЯУстанавливаюКаталогХранилищаВоВременныйКаталог() Экспорт
6767

6868
ХранилищеКонфигурации = БДД.ПолучитьИзКонтекста("ХранилищеКонфигурации");
69-
ХранилищеКонфигурации.УстановитьКаталогХранилища(БДД.ПолучитьИзКонтекста("КаталогХранилищаКонфигурации"));
69+
ХранилищеКонфигурации.УстановитьПутьКХранилищу(БДД.ПолучитьИзКонтекста("КаталогХранилищаКонфигурации"));
7070

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

packagedef

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@
8181
КонецПроцедуры
8282

8383
Описание.Имя("v8storage")
84-
.Версия("0.6.3")
84+
.Версия("0.6.4")
85+
.ВерсияСреды("1.0.18")
8586
.ЗависитОт("asserts")
8687
.ЗависитОт("json")
8788
.ЗависитОт("v8runner")

0 commit comments

Comments
 (0)