Skip to content

Commit 974ee87

Browse files
authored
Merge pull request alei1180#137 from Stivo182/refactor/read-text-file
Использование ЧтениеТекста вместо ТекстовыйДокумента (alei1180#134)
2 parents 2e6c394 + 543cad6 commit 974ee87

File tree

3 files changed

+266
-214
lines changed

3 files changed

+266
-214
lines changed

src/core/Классы/ГенераторПрограммногоКода1С.os

Lines changed: 66 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Использовать "../../internal"
22

3-
Перем Конструктор;
3+
Перем Конструктор; // см. КонструкторПрограммногоКода
44
Перем ИсходящиеОшибки; // Массив из Структура:
55
// * Текст - Строка - Текст ошибки
66
// * КритичнаяОшибка - Булево - Признак критичиной ошибки
@@ -18,9 +18,9 @@
1818
// - ПередаваемыйФайл - см. ПередаваемыйФайл
1919
// - ИмяПеременной - Строка
2020
Перем ИспользуетсяПрокси; // Булево
21-
Перем ТелоЗапросаСтрока; // Строка
22-
Перем ЕстьТекстовоеТелоЗапроса; // Булево
2321
Перем ВызванМетодПоТекущемуURL; // Булево
22+
Перем ТелоЗапросаСтрока; // Строка
23+
Перем МетодУстановкиТелаЗапроса; // Строка
2424

2525
#Область ПрограммныйИнтерфейс
2626

@@ -39,8 +39,7 @@
3939

4040
ОписаниеЗапроса = Описание;
4141
ИспользуетсяПрокси = Ложь;
42-
ЕстьТекстовоеТелоЗапроса = Ложь;
43-
ТелоЗапросаСтрока = "";
42+
4443
ВызванМетодПоТекущемуURL = Ложь;
4544
ПрочитанныеФайлы.Очистить();
4645

@@ -52,9 +51,11 @@
5251

5352
Конструктор = Новый КонструкторПрограммногоКода();
5453

54+
ОпределитьМетодУстановкиТелаЗапроса();
55+
5556
ВывестиЗаголовки();
56-
ВывестиЧтениеФайлов();
57-
ВывестиИнициализациюТекстовогоТелаЗапроса();
57+
ДобавитьЧтениеФайлов();
58+
ДобавитьДанныеЗапроса();
5859
ВывестиЗащищенноеСоединение();
5960
ВывестиИнициализациюПрокси();
6061

@@ -74,11 +75,11 @@
7475

7576
Если ОбщегоНазначения.ЭтоHTTP(СтруктураURL.Схема) Тогда
7677
ВывестиHTTPСоединение(СтруктураURL);
77-
ВывестиВызовHTTPМетодаДляКаждогоФайла(ОписаниеРесурса);
78+
ДобавитьПоследовательнуюОтправкуФайлов(ОписаниеРесурса);
7879

7980
Если Не ВызванМетодПоТекущемуURL Тогда
8081
ВывестиHTTPЗапрос(СтруктураURL);
81-
ВывестиУстановкуТелаЗапроса(ОписаниеРесурса);
82+
ДобавитьУстановкуТелаЗапроса(ОписаниеРесурса);
8283
ВывестиВызовHTTPМетода(ОписаниеРесурса);
8384
КонецЕсли;
8485
ИначеЕсли ОбщегоНазначения.ЭтоFTP(СтруктураURL.Схема) Тогда
@@ -122,10 +123,8 @@
122123
ИмяПараметраПрокси = "Прокси";
123124
ИмяПараметраТелоЗапросаСтрока = "ТелоЗапроса";
124125

125-
ПрочитанныеФайлы = Новый Массив;
126+
ПрочитанныеФайлы = Новый Массив();
126127
ИспользуетсяПрокси = Ложь;
127-
ЕстьТекстовоеТелоЗапроса = Ложь;
128-
ТелоЗапросаСтрока = "";
129128
ВызванМетодПоТекущемуURL = Ложь;
130129

131130
КонецПроцедуры
@@ -319,61 +318,6 @@
319318

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

322-
Процедура ВывестиЧтениеФайлов()
323-
324-
ПрочитанныеФайлы.Очистить();
325-
326-
ТребуетсяПрочитатьФайлыТелаЗапроса = ТребуетсяПрочитатьФайлыТелаЗапроса();
327-
328-
НомерФайла = 1;
329-
Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
330-
331-
Если Не (ПередаваемыйФайл.ПрочитатьСодержимое
332-
Или ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса) Тогда
333-
Продолжить;
334-
КонецЕсли;
335-
336-
Если ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса
337-
И Не ТребуетсяПрочитатьФайлыТелаЗапроса Тогда
338-
Продолжить;
339-
КонецЕсли;
340-
341-
ИмяПеременной = "ТекстовыеДанныеИзФайла_" + Формат(НомерФайла, "ЧГ=");
342-
343-
Конструктор.ДобавитьПустуюСтроку();
344-
345-
Шаблон = "ТекстовыйДокумент = Новый ТекстовыйДокумент();
346-
|ТекстовыйДокумент.Прочитать(%2);
347-
|%1 = ТекстовыйДокумент.ПолучитьТекст();";
348-
349-
Если ПередаваемыйФайл.УдалятьПереносыСтрок Тогда
350-
Шаблон = Шаблон + "
351-
|%1 = СтрЗаменить(%1, Символы.ПС, """");
352-
|%1 = СтрЗаменить(%1, Символы.ВК, """");";
353-
КонецЕсли;
354-
355-
Если ПередаваемыйФайл.КодироватьСодержимое Тогда
356-
Шаблон = Шаблон + "
357-
|%1 = КодироватьСтроку(%1, СпособКодированияСтроки.URLВКодировкеURL);";
358-
КонецЕсли;
359-
360-
Если ЗначениеЗаполнено(ПередаваемыйФайл.Ключ) Тогда
361-
Шаблон = Шаблон + "
362-
|%1 = """ + ПередаваемыйФайл.Ключ + "="" + %1;";
363-
КонецЕсли;
364-
365-
Конструктор.ДобавитьСтроку(Шаблон,
366-
ИмяПеременной,
367-
Конструктор.ПараметрВСтроку(ПередаваемыйФайл.ИмяФайла));
368-
369-
ПрочитанныйФайл = Новый Структура("ПередаваемыйФайл, ИмяПеременной", ПередаваемыйФайл, ИмяПеременной);
370-
ПрочитанныеФайлы.Добавить(ПрочитанныйФайл);
371-
372-
НомерФайла = НомерФайла + 1;
373-
КонецЦикла;
374-
375-
КонецПроцедуры
376-
377321
Процедура ВывестиHTTPЗапрос(СтруктураURL)
378322

379323
ПараметрыФункции = Новый Массив;
@@ -462,71 +406,57 @@
462406

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

465-
Процедура ВывестиИнициализациюТекстовогоТелаЗапроса()
466-
467-
ЭлементыТелаЗапросаДляВывода = Новый Массив;
468-
КонкатенацияСПереносомСтрокиИРазделителя = "
469-
| + ""%1"" + ";
470-
КонкатенацияСПереносомСтроки = "
471-
| + ";
409+
Процедура ДобавитьЧтениеФайлов()
472410

473-
ОтправляемаяСтрока = "";
474-
Для Каждого ПередаваемыйТекст Из ОписаниеЗапроса.ОтправляемыеТекстовыеДанные Цикл
475-
Если ПередаваемыйТекст.Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса Тогда
476-
ОтправляемаяСтрока = ОтправляемаяСтрока
477-
+ ?(ОтправляемаяСтрока = "", "", ПередаваемыйТекст.РазделительТелаЗапроса)
478-
+ ПередаваемыйТекст.Значение;
411+
ТребуетсяЧтениеФайловТелаЗапроса = Не МетодУстановкиТелаЗапроса = "ИзФайла";
412+
413+
ФайлыДляЧтения = Новый Массив();
414+
Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
415+
416+
Если Не (ПередаваемыйФайл.ПрочитатьСодержимое
417+
Или ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса) Тогда
418+
Продолжить;
479419
КонецЕсли;
480-
КонецЦикла;
481-
482-
Если ЗначениеЗаполнено(ОтправляемаяСтрока) Тогда
483-
ЭлементыТелаЗапросаДляВывода.Добавить(Конструктор.ПараметрВСтроку(ОтправляемаяСтрока));
484-
КонецЕсли;
485420

486-
Для Каждого ПрочитанныйФайл Из ПрочитанныеФайлы Цикл
487-
Если ПрочитанныйФайл.ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса Тогда
488-
Если ЭлементыТелаЗапросаДляВывода.Количество() Тогда
489-
Если Не ПустаяСтрока(ПрочитанныйФайл.ПередаваемыйФайл.РазделительТелаЗапроса) Тогда
490-
ЭлементыТелаЗапросаДляВывода.Добавить(
491-
СтрШаблон(КонкатенацияСПереносомСтрокиИРазделителя, ПрочитанныйФайл.ПередаваемыйФайл.РазделительТелаЗапроса)
492-
+ ПрочитанныйФайл.ИмяПеременной);
493-
Иначе
494-
ЭлементыТелаЗапросаДляВывода.Добавить(КонкатенацияСПереносомСтроки + ПрочитанныйФайл.ИмяПеременной);
495-
КонецЕсли;
496-
Иначе
497-
ЭлементыТелаЗапросаДляВывода.Добавить(ПрочитанныйФайл.ИмяПеременной);
498-
КонецЕсли;
421+
Если ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса
422+
И Не ТребуетсяЧтениеФайловТелаЗапроса Тогда
423+
Продолжить;
499424
КонецЕсли;
500-
КонецЦикла;
501425

502-
КоличествоЭлементов = ЭлементыТелаЗапросаДляВывода.Количество();
503-
Если КоличествоЭлементов = 0 Тогда
504-
Возврат;
505-
КонецЕсли;
426+
ФайлыДляЧтения.Добавить(ПередаваемыйФайл);
506427

507-
ЕстьТекстовоеТелоЗапроса = Истина;
428+
КонецЦикла;
508429

509-
Если КоличествоЭлементов = 1 Тогда
510-
ТелоЗапросаСтрока = ЭлементыТелаЗапросаДляВывода[0];
511-
Иначе
430+
Код = УниверсальныеБлокиКода.ЧтениеТекстовыхФайлов(ФайлыДляЧтения, ПрочитанныеФайлы);
431+
432+
Если Не ПустаяСтрока(Код) Тогда
512433
Конструктор
513434
.ДобавитьПустуюСтроку()
514-
.ДобавитьСтроку("%1 = %2;",
515-
ИмяПараметраТелоЗапросаСтрока,
516-
СтрСоединить(ЭлементыТелаЗапросаДляВывода));
435+
.ДобавитьСтроку(Код);
517436
КонецЕсли;
518437

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

440+
Процедура ДобавитьДанныеЗапроса()
521441

522-
Процедура ВывестиУстановкуТелаЗапроса(ОписаниеРесурса)
442+
ТелоЗапросаСтрока = "";
443+
ТелоЗапроса = УниверсальныеБлокиКода.СборкаТелаЗапроса(
444+
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные,
445+
ПрочитанныеФайлы);
523446

524-
ВывестиУстановкуТелаЗапросаТекстовымиДанными();
525-
ВывестиУстановкуТелаЗапросаИзФайла(ОписаниеРесурса);
447+
Если ЗначениеЗаполнено(ТелоЗапроса) Тогда
448+
Если СтрЧислоСтрок(ТелоЗапроса) = 1 Тогда
449+
ТелоЗапросаСтрока = ТелоЗапроса;
450+
Иначе
451+
Конструктор
452+
.ДобавитьПустуюСтроку()
453+
.ДобавитьСтроку("%1 = %2;", ИмяПараметраТелоЗапросаСтрока, ТелоЗапроса);
454+
КонецЕсли;
455+
КонецЕсли;
526456

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

529-
Процедура ВывестиВызовHTTPМетодаДляКаждогоФайла(ОписаниеРесурса)
459+
Процедура ДобавитьПоследовательнуюОтправкуФайлов(ОписаниеРесурса)
530460

531461
ДлинаИмениФайлаВКомментарии = 100;
532462

@@ -575,9 +505,16 @@
575505

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

578-
Процедура ВывестиУстановкуТелаЗапросаТекстовымиДанными()
508+
Процедура ДобавитьУстановкуТелаЗапроса(ОписаниеРесурса)
509+
510+
ДобавитьУстановкуТелаЗапросаТекстовымиДанными();
511+
ДобавитьУстановкуТелаЗапросаИзФайла(ОписаниеРесурса);
512+
513+
КонецПроцедуры
514+
515+
Процедура ДобавитьУстановкуТелаЗапросаТекстовымиДанными()
579516

580-
Если Не ЕстьТекстовоеТелоЗапроса Тогда
517+
Если Не МетодУстановкиТелаЗапроса = "ИзСтроки" Тогда
581518
Возврат;
582519
КонецЕсли;
583520

@@ -587,7 +524,11 @@
587524

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

590-
Процедура ВывестиУстановкуТелаЗапросаИзФайла(ОписаниеРесурса)
527+
Процедура ДобавитьУстановкуТелаЗапросаИзФайла(ОписаниеРесурса)
528+
529+
Если Не МетодУстановкиТелаЗапроса = "ИзФайла" Тогда
530+
Возврат;
531+
КонецЕсли;
591532

592533
Файлы = Новый Массив();
593534
ОбщегоНазначения.ДополнитьМассив(Файлы, ОписаниеЗапроса.Файлы);
@@ -763,7 +704,7 @@
763704

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

766-
Функция ТребуетсяПрочитатьФайлыТелаЗапроса()
707+
Процедура ОпределитьМетодУстановкиТелаЗапроса()
767708

768709
КоличествоФайлов = 0;
769710
Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
@@ -781,13 +722,14 @@
781722
КонецЕсли;
782723
КонецЦикла;
783724

784-
Если КоличествоФайлов <= 1
785-
И Не ЕстьТекстовоеТелоЗапроса Тогда
786-
Возврат Ложь;
725+
Если КоличествоФайлов > 1 Или ЕстьТекстовоеТелоЗапроса Тогда
726+
МетодУстановкиТелаЗапроса = "ИзСтроки";
727+
ИначеЕсли КоличествоФайлов = 1 И Не ЕстьТекстовоеТелоЗапроса Тогда
728+
МетодУстановкиТелаЗапроса = "ИзФайла";
729+
Иначе
730+
МетодУстановкиТелаЗапроса = "";
787731
КонецЕсли;
788732

789-
Возврат Истина;
790-
791-
КонецФункции
733+
КонецПроцедуры
792734

793735
#КонецОбласти

0 commit comments

Comments
 (0)