1
1
#Использовать "../../internal"
2
2
3
- Перем Конструктор ;
3
+ Перем Конструктор ; // см. КонструкторПрограммногоКода
4
4
Перем ИсходящиеОшибки ; // Массив из Структура:
5
5
// * Текст - Строка - Текст ошибки
6
6
// * КритичнаяОшибка - Булево - Признак критичиной ошибки
18
18
// - ПередаваемыйФайл - см. ПередаваемыйФайл
19
19
// - ИмяПеременной - Строка
20
20
Перем ИспользуетсяПрокси ; // Булево
21
- Перем ТелоЗапросаСтрока ; // Строка
22
- Перем ЕстьТекстовоеТелоЗапроса ; // Булево
23
21
Перем ВызванМетодПоТекущемуURL ; // Булево
22
+ Перем ТелоЗапросаСтрока ; // Строка
23
+ Перем МетодУстановкиТелаЗапроса ; // Строка
24
24
25
25
#Область ПрограммныйИнтерфейс
26
26
39
39
40
40
ОписаниеЗапроса = Описание;
41
41
ИспользуетсяПрокси = Ложь ;
42
- ЕстьТекстовоеТелоЗапроса = Ложь ;
43
- ТелоЗапросаСтрока = "" ;
42
+
44
43
ВызванМетодПоТекущемуURL = Ложь ;
45
44
ПрочитанныеФайлы.Очистить();
46
45
52
51
53
52
Конструктор = Новый КонструкторПрограммногоКода();
54
53
54
+ ОпределитьМетодУстановкиТелаЗапроса();
55
+
55
56
ВывестиЗаголовки();
56
- ВывестиЧтениеФайлов ();
57
- ВывестиИнициализациюТекстовогоТелаЗапроса ();
57
+ ДобавитьЧтениеФайлов ();
58
+ ДобавитьДанныеЗапроса ();
58
59
ВывестиЗащищенноеСоединение();
59
60
ВывестиИнициализациюПрокси();
60
61
74
75
75
76
Если ОбщегоНазначения.ЭтоHTTP(СтруктураURL.Схема) Тогда
76
77
ВывестиHTTPСоединение(СтруктураURL);
77
- ВывестиВызовHTTPМетодаДляКаждогоФайла (ОписаниеРесурса);
78
+ ДобавитьПоследовательнуюОтправкуФайлов (ОписаниеРесурса);
78
79
79
80
Если Не ВызванМетодПоТекущемуURL Тогда
80
81
ВывестиHTTPЗапрос(СтруктураURL);
81
- ВывестиУстановкуТелаЗапроса (ОписаниеРесурса);
82
+ ДобавитьУстановкуТелаЗапроса (ОписаниеРесурса);
82
83
ВывестиВызовHTTPМетода(ОписаниеРесурса);
83
84
КонецЕсли ;
84
85
ИначеЕсли ОбщегоНазначения.ЭтоFTP(СтруктураURL.Схема) Тогда
122
123
ИмяПараметраПрокси = "Прокси" ;
123
124
ИмяПараметраТелоЗапросаСтрока = "ТелоЗапроса" ;
124
125
125
- ПрочитанныеФайлы = Новый Массив;
126
+ ПрочитанныеФайлы = Новый Массив() ;
126
127
ИспользуетсяПрокси = Ложь ;
127
- ЕстьТекстовоеТелоЗапроса = Ложь ;
128
- ТелоЗапросаСтрока = "" ;
129
128
ВызванМетодПоТекущемуURL = Ложь ;
130
129
131
130
КонецПроцедуры
319
318
320
319
КонецПроцедуры
321
320
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
-
377
321
Процедура ВывестиHTTPЗапрос (СтруктураURL )
378
322
379
323
ПараметрыФункции = Новый Массив;
462
406
463
407
КонецФункции
464
408
465
- Процедура ВывестиИнициализациюТекстовогоТелаЗапроса ()
466
-
467
- ЭлементыТелаЗапросаДляВывода = Новый Массив;
468
- КонкатенацияСПереносомСтрокиИРазделителя = "
469
- | + "" %1"" + " ;
470
- КонкатенацияСПереносомСтроки = "
471
- | + " ;
409
+ Процедура ДобавитьЧтениеФайлов ()
472
410
473
- ОтправляемаяСтрока = "" ;
474
- Для Каждого ПередаваемыйТекст Из ОписаниеЗапроса.ОтправляемыеТекстовыеДанные Цикл
475
- Если ПередаваемыйТекст.Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса Тогда
476
- ОтправляемаяСтрока = ОтправляемаяСтрока
477
- + ? (ОтправляемаяСтрока = "" , "" , ПередаваемыйТекст.РазделительТелаЗапроса)
478
- + ПередаваемыйТекст.Значение;
411
+ ТребуетсяЧтениеФайловТелаЗапроса = Не МетодУстановкиТелаЗапроса = "ИзФайла" ;
412
+
413
+ ФайлыДляЧтения = Новый Массив();
414
+ Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
415
+
416
+ Если Не (ПередаваемыйФайл.ПрочитатьСодержимое
417
+ Или ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса) Тогда
418
+ Продолжить ;
479
419
КонецЕсли ;
480
- КонецЦикла ;
481
-
482
- Если ЗначениеЗаполнено (ОтправляемаяСтрока) Тогда
483
- ЭлементыТелаЗапросаДляВывода.Добавить(Конструктор.ПараметрВСтроку(ОтправляемаяСтрока));
484
- КонецЕсли ;
485
420
486
- Для Каждого ПрочитанныйФайл Из ПрочитанныеФайлы Цикл
487
- Если ПрочитанныйФайл.ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса Тогда
488
- Если ЭлементыТелаЗапросаДляВывода.Количество() Тогда
489
- Если Не ПустаяСтрока (ПрочитанныйФайл.ПередаваемыйФайл.РазделительТелаЗапроса) Тогда
490
- ЭлементыТелаЗапросаДляВывода.Добавить(
491
- СтрШаблон (КонкатенацияСПереносомСтрокиИРазделителя, ПрочитанныйФайл.ПередаваемыйФайл.РазделительТелаЗапроса)
492
- + ПрочитанныйФайл.ИмяПеременной);
493
- Иначе
494
- ЭлементыТелаЗапросаДляВывода.Добавить(КонкатенацияСПереносомСтроки + ПрочитанныйФайл.ИмяПеременной);
495
- КонецЕсли ;
496
- Иначе
497
- ЭлементыТелаЗапросаДляВывода.Добавить(ПрочитанныйФайл.ИмяПеременной);
498
- КонецЕсли ;
421
+ Если ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса
422
+ И Не ТребуетсяЧтениеФайловТелаЗапроса Тогда
423
+ Продолжить ;
499
424
КонецЕсли ;
500
- КонецЦикла ;
501
425
502
- КоличествоЭлементов = ЭлементыТелаЗапросаДляВывода.Количество();
503
- Если КоличествоЭлементов = 0 Тогда
504
- Возврат ;
505
- КонецЕсли ;
426
+ ФайлыДляЧтения.Добавить(ПередаваемыйФайл);
506
427
507
- ЕстьТекстовоеТелоЗапроса = Истина ;
428
+ КонецЦикла ;
508
429
509
- Если КоличествоЭлементов = 1 Тогда
510
- ТелоЗапросаСтрока = ЭлементыТелаЗапросаДляВывода[ 0 ] ;
511
- Иначе
430
+ Код = УниверсальныеБлокиКода.ЧтениеТекстовыхФайлов(ФайлыДляЧтения , ПрочитанныеФайлы) ;
431
+
432
+ Если Не ПустаяСтрока (Код) Тогда
512
433
Конструктор
513
434
.ДобавитьПустуюСтроку()
514
- .ДобавитьСтроку("%1 = %2;" ,
515
- ИмяПараметраТелоЗапросаСтрока,
516
- СтрСоединить (ЭлементыТелаЗапросаДляВывода));
435
+ .ДобавитьСтроку(Код);
517
436
КонецЕсли ;
518
437
519
438
КонецПроцедуры
520
439
440
+ Процедура ДобавитьДанныеЗапроса ()
521
441
522
- Процедура ВывестиУстановкуТелаЗапроса (ОписаниеРесурса )
442
+ ТелоЗапросаСтрока = "" ;
443
+ ТелоЗапроса = УниверсальныеБлокиКода.СборкаТелаЗапроса(
444
+ ОписаниеЗапроса.ОтправляемыеТекстовыеДанные,
445
+ ПрочитанныеФайлы);
523
446
524
- ВывестиУстановкуТелаЗапросаТекстовымиДанными();
525
- ВывестиУстановкуТелаЗапросаИзФайла(ОписаниеРесурса);
447
+ Если ЗначениеЗаполнено (ТелоЗапроса) Тогда
448
+ Если СтрЧислоСтрок (ТелоЗапроса) = 1 Тогда
449
+ ТелоЗапросаСтрока = ТелоЗапроса;
450
+ Иначе
451
+ Конструктор
452
+ .ДобавитьПустуюСтроку()
453
+ .ДобавитьСтроку("%1 = %2;" , ИмяПараметраТелоЗапросаСтрока, ТелоЗапроса);
454
+ КонецЕсли ;
455
+ КонецЕсли ;
526
456
527
457
КонецПроцедуры
528
458
529
- Процедура ВывестиВызовHTTPМетодаДляКаждогоФайла (ОписаниеРесурса )
459
+ Процедура ДобавитьПоследовательнуюОтправкуФайлов (ОписаниеРесурса )
530
460
531
461
ДлинаИмениФайлаВКомментарии = 100 ;
532
462
575
505
576
506
КонецПроцедуры
577
507
578
- Процедура ВывестиУстановкуТелаЗапросаТекстовымиДанными ()
508
+ Процедура ДобавитьУстановкуТелаЗапроса (ОписаниеРесурса )
509
+
510
+ ДобавитьУстановкуТелаЗапросаТекстовымиДанными();
511
+ ДобавитьУстановкуТелаЗапросаИзФайла(ОписаниеРесурса);
512
+
513
+ КонецПроцедуры
514
+
515
+ Процедура ДобавитьУстановкуТелаЗапросаТекстовымиДанными ()
579
516
580
- Если Не ЕстьТекстовоеТелоЗапроса Тогда
517
+ Если Не МетодУстановкиТелаЗапроса = "ИзСтроки" Тогда
581
518
Возврат ;
582
519
КонецЕсли ;
583
520
587
524
588
525
КонецПроцедуры
589
526
590
- Процедура ВывестиУстановкуТелаЗапросаИзФайла (ОписаниеРесурса )
527
+ Процедура ДобавитьУстановкуТелаЗапросаИзФайла (ОписаниеРесурса )
528
+
529
+ Если Не МетодУстановкиТелаЗапроса = "ИзФайла" Тогда
530
+ Возврат ;
531
+ КонецЕсли ;
591
532
592
533
Файлы = Новый Массив();
593
534
ОбщегоНазначения.ДополнитьМассив(Файлы, ОписаниеЗапроса.Файлы);
763
704
764
705
КонецФункции
765
706
766
- Функция ТребуетсяПрочитатьФайлыТелаЗапроса ()
707
+ Процедура ОпределитьМетодУстановкиТелаЗапроса ()
767
708
768
709
КоличествоФайлов = 0 ;
769
710
Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
781
722
КонецЕсли ;
782
723
КонецЦикла ;
783
724
784
- Если КоличествоФайлов <= 1
785
- И Не ЕстьТекстовоеТелоЗапроса Тогда
786
- Возврат Ложь ;
725
+ Если КоличествоФайлов > 1 Или ЕстьТекстовоеТелоЗапроса Тогда
726
+ МетодУстановкиТелаЗапроса = "ИзСтроки" ;
727
+ ИначеЕсли КоличествоФайлов = 1 И Не ЕстьТекстовоеТелоЗапроса Тогда
728
+ МетодУстановкиТелаЗапроса = "ИзФайла" ;
729
+ Иначе
730
+ МетодУстановкиТелаЗапроса = "" ;
787
731
КонецЕсли ;
788
732
789
- Возврат Истина ;
790
-
791
- КонецФункции
733
+ КонецПроцедуры
792
734
793
735
#КонецОбласти
0 commit comments