Тип: ИнтернетПрокси. Прокси, через который установлено соединение.
Полное описание, параметры и ограничения
FTPСоединение.Прокси (FTPConnection.Proxy)
FTPСоединение (FTPConnection)
Прокси (Proxy)
Доступен, начиная с версии 8.0.
Использование:
Только чтение.
Описание:
Тип: ИнтернетПрокси.
Прокси, через который установлено соединение.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Проверить свой локальный FTPS: TLS, режим, прокси и учётные данные
Полный учебный опыт на собственном локальном изолированном FTPS-сервере: точные реальные настройки, объекты поиска, потоковые байты и проверяемый результат; без запуска сети при подготовке справочника.
Где и как запускать
Полный клиентский общий модуль УчебныйFTP85 управляемого Windows-приложения; свой локальный FTPS и отдельный полный модуль формы вызова.
Подготовка
Новая пустая конфигурация УчебныйFTP85, платформа8.5.1.1343, управляемое приложение, тонкий или толстый Windows-клиент. Код выполняется на клиентском компьютере, не на сервере кластера и не в веб-клиенте.
Будущий ручной опыт требует вашего отдельного локального тестового FTPS-сервера на той же Windows-машине, где клиент1С. localhost означает эту машину. Не подставляйте рабочий FTP, чужой хост или production-учётные данные.
Настройте на своём сервере именно implicit FTPS на порту990, TLS для управляющего и канала данных, пассивный диапазон портов только для loopback. Не путайте FTPS с SFTP/SSH или FTPES на21.
Сервер предъявляет сертификат с именем localhost, подписанный доверенным тестовым УЦ. Источник доверия — хранилище ОС Windows клиента1С. Импорт тестового УЦ выполняется вами отдельно только после проверки; урок его не устанавливает и не отключает проверку сертификата.
Создайте отдельного пользователя ftp_lab85 с новым учебным паролем, изолированным FTP-корнем и входом в виртуальный /. Права ограничены только этим корнем; никаких символьных ссылок, junction, общих каталогов или доступа к рабочим данным.
Тестовый сервер должен возвращать POSIX-пути с прямыми слешами, точные полные имена и сведения о размере/времени/атрибутах через поддерживаемые команды. Проверка fail-closed: если конкретный сервер не сообщает эти сведения, урок не объявляется успешным.
В собственном корне вручную заранее подготовьте inbox85/sample85.txt: ровно ASCII-байты FTP-LAB85, без BOM и конечного перевода строки; размер9. Для третьего урока корень допускает создание/запись/переименование/удаление только своих ресурсов.
Квота изолированного пользователя не более1МиБ; sample85.txt мал и не меняется. Только один автор/клиент, никаких параллельных загрузок/переименований, сторонних писателей или общих имён. До ручного опыта убедитесь, что НайтиФайлы по отсутствующему точному пути возвращает пустой массив на вашем сервере.
Общие → Общие модули → УчебныйFTP85: Клиент(управляемое приложение)=Истина, Глобальный/Сервер/ВызовСервера/ВнешнееСоединение/Привилегированный=Ложь, повторное использование выключено. Один основной полный модуль урока заменяется целиком; одноимённые функции разных уроков не склеиваются.
Обработки → ЗапускFTP85 → управляемая форма Форма. Реквизиты СогласенНаЛокальныйFTP85 и Занято85 Булево исходно Ложь; ПарольУчебногоFTP85 Строка; Итог85 Строка неограниченной длины только для просмотра.
Полный дополнительный модуль формы вставьте отдельно. Команда ВыполнитьFTP85 назначена кнопке, Действие=ВыполнитьFTP85. Она вызывает клиентский УчебныйFTP85.ВыполнитьПример85(согласие,пароль). Для поля пароля включите штатное скрытое отображение в редакторе формы; не сохраняйте его в настройках/истории.
F7 и обновление только своего учебного стенда. На первом опыте сначала выберите урок паспорта, затем чтения, затем изменения. Учебный пароль вводится непосредственно перед командой, после успеха/ошибки реквизит очищается.
Урок третьего модуля действительно содержит будущие сетевые запись/переименование/удаление в своём случайном каталоге. Прочитайте код и разрешите такой опыт отдельно для своего локального стенда. Это не запуск на вашей машине в ходе наполнения справочника.
runtimeVerifiedScenarios=0: здесь не запускались1С/FTPS-сервер, не устанавливались сертификаты, не открывалась сеть, не передавались/удалялись учебные файлы и не создавались новые резервные копии или архивы.
Функция ВыполнитьПример85(Согласие, Пароль) Экспорт
Если Не Согласие Тогда
ВызватьИсключение "Нужен собственный стенд УчебныйFTP85 и согласие на локальный сетевой опыт";
КонецЕсли;
Если ТипЗнч(Пароль) <> Тип("Строка") Или СтрДлина(Пароль) = 0 Тогда
ВызватьИсключение "Введите только отдельный пароль своего локального учебного пользователя";
КонецЕсли;
Соединение = Неопределено;
Попытка
Соединение = СоздатьСвоёСоединение85(Пароль);
Каталог = Соединение.ТекущийКаталог();
Если Каталог <> "/" Тогда
ВызватьИсключение "Учебный пользователь должен входить в корень своей изолированной FTP-области";
КонецЕсли;
Итог = "Свой FTPS: localhost:990; пользователь ftp_lab85; пассивный режим; таймаут15; исходный каталог /; TLS требуется для команд и данных. Пароль проверен без вывода.";
Соединение = Неопределено;
Возврат Итог;
Исключение
Соединение = Неопределено;
ВызватьИсключение "Локальный FTPS-опыт не завершён. Проверьте свой сервер, доверие сертификату и отдельную учётную запись; сырая ошибка намеренно не выводится.";
КонецПопытки;
КонецФункции
Функция СоздатьСвоёСоединение85(Пароль)
ДоверенныеЦентры = Новый СертификатыУдостоверяющихЦентровОС;
Защита = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, ДоверенныеЦентры);
Прокси = Новый ИнтернетПрокси(Ложь);
Соединение = Новый FTPСоединение("localhost", 990, "ftp_lab85", Пароль,
Прокси, Истина, 15, Защита, УровеньИспользованияЗащищенногоСоединенияFTP.Требовать);
Если Соединение.Сервер <> "localhost" Или Соединение.Порт <> 990
Или Соединение.Пользователь <> "ftp_lab85" Или Не Соединение.ПассивныйРежим
Или Соединение.Таймаут <> 15 Тогда
ВызватьИсключение "Соединение не соответствует своему локальному стенду";
КонецЕсли;
Если ТипЗнч(Соединение.ЗащищенноеСоединение) <> Тип("ЗащищенноеСоединениеOpenSSL")
Или ТипЗнч(Соединение.Прокси) <> Тип("ИнтернетПрокси") Тогда
ВызватьИсключение "Нужны заданные TLS и объект прямого подключения без системного прокси";
КонецЕсли;
Если ТипЗнч(Соединение.Пароль) <> Тип("Строка") Тогда
ВызватьИсключение "Неожиданный тип параметра учётных данных";
КонецЕсли;
Если Соединение.Пароль <> Пароль Тогда
ВызватьИсключение "Учётные данные соединения не совпадают с введёнными";
КонецЕсли;
Возврат Соединение;
КонецФункцииУправляемая команда локального FTPS-опыта
УчебныйFTP85 → Обработки → ЗапускFTP85 → Формы → Форма → Модуль
Полный клиентский модуль своей управляемой формы: команда ВыполнитьFTP85, Действие=ВыполнитьFTP85, передача согласия и отдельного пароля.
&НаКлиенте
Процедура ВыполнитьFTP85(Команда)
Если Не СогласенНаЛокальныйFTP85 Или Занято85 Тогда
ВызватьИсключение "Нужно согласие на свой локальный опыт и отсутствие другого запуска";
КонецЕсли;
Занято85 = Истина;
Попытка
Итог85 = УчебныйFTP85.ВыполнитьПример85(СогласенНаЛокальныйFTP85, ПарольУчебногоFTP85);
Исключение
ПарольУчебногоFTP85 = "";
Занято85 = Ложь;
Итог85 = "Учебный FTPS-опыт не завершён. Проверьте только свой локальный стенд; детали ошибки с учётными данными не отображаются.";
ВызватьИсключение "Локальный FTPS-опыт не подтверждён";
КонецПопытки;
ПарольУчебногоFTP85 = "";
Занято85 = Ложь;
КонецПроцедурыРазбор по шагам
Проверяются собственная конфигурация, согласие, версия платформы и отдельный введённый пароль.
Источник доверия ОС передаётся вторым параметром OpenSSL; клиентский сертификат здесь не нужен.
ИнтернетПрокси(Ложь) не использует системные настройки, host/port/user фиксированы для собственного loopback-стенда.
Конструктор задаёт пассивный режим, таймаут15 и Требовать для защиты команд/данных.
Восемь реальных readonly-свойств проверяют настройки; пароль только сравнивается, не выводится.
Текущий каталог / подтверждает вход в подготовленный виртуальный корень; выводится безопасный итог, ссылка соединения освобождается.
Как проверить результат
Результат содержит localhost:990 и ftp_lab85 без пароля.
Сервер/порт/режим/таймаут совпадают с явными параметрами.
TLS и Прокси имеют реальные ожидаемые типы.
Текущий каталог именно / своей изолированной области.
Ошибка не отображает сырое исключение с учётными данными; реальный TLS-успех требует ручного теста.
Ожидаемый результат
Ожидаемый результат будущего отдельно разрешённого ручного опыта указан в проверках. Реальная1С/сеть не запускались, runtimeVerifiedScenarios=0.
На что обратить внимание
Конструктор FTPСоединение и его методы могут обратиться в сеть: это не HTTPСоединение, подготовка которого сама по себе не отправляет запрос. Отсутствие runtime-проверки не означает отсутствие сетевого эффекта при будущем ручном выполнении.
FTPS — FTP поверх TLS; это не SFTP. Пример явно использует implicit FTPS990. FTPES21 требует другой согласованной настройки сервера, не простого механического изменения порта.
ЗащищенноеСоединениеOpenSSL без источника доверенных УЦ не проверяет сертификат сервера. Здесь второй параметр — СертификатыУдостоверяющихЦентровОС; при ошибке доверия нельзя заменять его Неопределено.
Требовать защищает и команды, и данные. Авто/ИспользоватьЕслиВозможно/ТребоватьДляУправления не являются равнозначной заменой. Наличие объекта TLS в свойстве само по себе не доказывает успех рукопожатия или валидность сертификата.
ИнтернетПрокси(Ложь) не импортирует системные/inetcfg настройки. FTP-подключение через прокси поддерживает FTP over HTTP, а native FTP proxy не поддерживается. В этом loopback-уроке прокси-сервер вообще не настраивается.
ПассивныйРежим Истина выбран явно, таймаут15 секунд конечен. Порт990 без доступного пассивного диапазона не гарантирует передачу данных. Таймаут не является ограничением общего времени всего учебного цикла.
Пароль readonly доступен программно, поэтому код сравнивает его только внутри проверки и никогда не включает в результат/паспорт/сырую ошибку. Очистка реквизита не гарантирует криптографическое стирание всех копий из памяти; хранение секретов production — отдельная задача.
FTPФайл получается из настоящего НайтиФайлы, не создаётся через Новый и не читает содержимое. Его атрибуты применимы к реально существующему ресурсу; содержимое читает FTPСоединение.Получить.
Расширение в нативной справке включает точку: .txt, не txt. Путь/полное имя зависят от FTP-представления сервера; урок явно проверяет подготовленную POSIX-модель и не подставляет Windows-пути.
НайтиФайлы(полныйПуть) — поиск одного ресурса без маски. НайтиФайлы(каталог,маска,Ложь) — поиск в каталоге без рекурсии. Рекурсивный параметр игнорируется без маски; wildcard не передаётся в удаление.
Получить(адрес,поток) пишет в выходной поток; Записать(адрес,входнойПоток) читает из потока. В файловой перегрузке Записать(локальноеИмя,адрес) порядок иной. В уроках используется только вариант потоков, локальные файлы не перезаписываются.
Перед записью/переименованием/удалением проверяется собственный случайный каталог, отсутствие целевого имени, реальный файл, размер и байты с маркером. Эти проверки не являются атомарной защитой от гонки; поэтому стенд изолирован и сторонние писатели запрещены.
Предварительный размер не ограничивает поток на уровне API и может устареть. Урок годится только для своего маленького неизменяемого файла на доверенном ограниченном сервере, не для скачивания произвольного ресурса из интернета.
Переместить переименовывает ресурс на сервере; атомарная публикация/replace-семантика конкретного FTP-сервера не доказаны. Не переименовывайте поверх существующего чужого файла.
Успешный третий цикл удаляет только подтверждённый свой файл без маски, затем свой пустой каталог после выхода в /. Удаление на сервере может быть необратимым; корзина и восстановление не обещаются.
При исключении автоматического удаления или повторной записи нет: мог состояться частичный сетевой эффект. Свой run85_UUID проверяйте на собственном сервере вручную; не повторяйте чужой путь или wildcard-очистку.
Потоки закрываются и при успехе, и при ошибке. FTPСоединение не имеет угаданного Закрыть/Отключить: ссылка освобождается, точный момент завершения серверной сессии не обещается.
Чтение hidden/readonly/времени требует поддержки сервера, не подтверждает ACL и не меняет разрешения. Нельзя считать ПолучитьТолькоЧтение универсальным тестом возможности загрузки.
Все свойства FTPСоединение/FTPФайл показаны readonly. Настройка задаётся конструктором или администратором своего стенда; присваивания Сервер/Пароль/ПассивныйРежим запрещены.
Сеть,1С и GUI в ходе подготовки справочника не выполнялись: runtimeVerifiedScenarios=0. Статический тест сигнатур/поиска не доказывает совместимость конкретного FTPS-сервера.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.