Конструктор не найден ftp соединение
В этой статье представлены способы обхода ошибок интернет-соединений, которыми я пользуюсь на практике.
В моем случае проблема решалась редактированием файла C:\WINDOWS\system32\drivers\etc\hosts "192.168.0.1 доменноеимясайта" на клиенте или на сервере - там, где работает регламентное задание. После этого заработали встроенные интернет-соединения 1С:
Через компоненту dialmail подключение проходит нормально, но заставить его работать не удалось:
28.03.13 13:44:01.500 FTP: Подключаемся к сокету
28.03.13 13:44:01.515 FTP: К сокету подключились успешно
28.03.13 13:44:01.671 FTP 28.03.13 13:44:01.671 FTP --> USER 931013677
28.03.13 13:44:01.687 FTP 28.03.13 13:44:01.687 FTP --> PASS *****
28.03.13 13:44:01.703 FTP 28.03.13 13:44:01.703 FTP --> TYPE I
28.03.13 13:44:01.718 FTP 28.03.13 13:44:01.718 FTP --> STRU F
28.03.13 13:44:01.734 FTP 28.03.13 13:44:01.734 FTP --> REST 0
28.03.13 13:44:01.734 FTP 28.03.13 13:44:01.750 FTP --> REST 1
28.03.13 13:44:01.750 FTP 28.03.13 13:44:01.765 FTP --> REST 0
28.03.13 13:44:01.765 FTP 28.03.13 13:44:01.781 FTP --> PWD
28.03.13 13:44:01.781 FTP 28.03.13 13:44:02.968 FTP --> PWD
28.03.13 13:44:02.984 FTP 28.03.13 13:44:02.984 FTP --> PASV
28.03.13 13:44:03.000 FTP28.03.13 13:44:03.000 FTP --> LIST
при попытке загрузить файл на сервер идут ошибки сокета 10054
Вот перечень основных принципиальных вопросов при решении практической задачи использования интернет-соединения с помощью внешнего клиента, на которые оказалось важно обратить внимание.
Про winscp помогла публикация Выгрузка файлов на SFTP //infostart.me/public/145717/
На сервере может быть отключена расшифровка dns адреса (как в моем случае), поэтому вместо доменного имена сайта - цифровой ай пи адрес.
Текст процедуры, которая у меня реально работает (перезаписываю файл во временном локальном каталоге и заливаю на сервер):
Вот то, что относится ко внешнему ftp клиенту:
Команда для запуска скрипта:
open ftp://**************:**************@********************* // после собаки ай пи адрес, а не доменное имя
option transfer ascii
rm discount.txt
put D:\temp\discount.txt
close
exit
Результат выполнения этого скрипта:
В базе 1С 8.2 настроен обмен по регламентным заданиям. Регламентные задания идут, а обмен - нет. В мониторе обмена, на вкладке "история" можно увидеть описание ошибки:
Ошибка при подключении к FTP : 62.хх.55.ххх ! Ошибка при вызове конструктора (FTPСоединение): Ошибка работы с Интернет: ftp://62.хх.55.ххх:21Couldn't connect to server: Ошибка работы с Интернет: ftp://62.хх.55.ххх:21Couldn't connect to server
Техническая информация:
Ошибка при подключении к FTP : 62.хх.55.ххх ! : Ошибка при вызове конструктора (FTPСоединение): Ошибка работы с Интернет: ftp://62.хх.55.ххх:21Couldn't connect to server: Ошибка работы с Интернет: ftp://62.хх.55.ххх:21Couldn't connect to server
Но, при ручном запуске (нажатии кнопки "выполнить обмен") к фтп подключается, ошибки никакой нет, обмен проходит. Подскажите, в чем может быть проблема?
Используется прокси сервер. Отключение/включение галки "пассивное фтп соединение" не помогает. Необходимые права для обмена имеются.
п.с.: проблема появилась недавно, всё работало и вдруг перестало. может быть с сервером ФТП что нибудь не так?
Спасибо всем откликнувшимся!
(1) подскажите как проверить? Какие порты должны быть открыты? Почему тогда при ручном запуске все в порядке?
админу подзатыльник и пусть разрешит пользователю, от имени которого крутится сервер предприятия ходить на фтп
столкнулся с подобной проблемой. база файловая. не устанавливается фтп соединение, хотя вручную всё работает
(6) у файловой нет понятия сервер.
(5) пользователь под кем запущена 1с сервер и под кем "идет обмен" совпадают?
(6) у меня не обмен, но используется фтп-соединение. само регламентное задание запускается как надо, но доходя до создания объекта фтп-соединения, вылетает с ошибкой
(7) Вы сейчас начнете меня ругать, ну да ладно. ) Пользователь под кем запущен сервер 1с это тот который стоит в списке служб напротив запущенной службы 1с?
точнее у меня создание фтп-соединения в попытке, и выскакивает исключение, причем ОписаниеОшибки() выдаёт ""
(11) проверь как писал mikecool и Axel2009 под кем заходит на фтп сервер? Есть ли у этого когото права туда лазить? Попробуй пассивный/активный режимы. Про свой случай отпишусь завтра.
у пользователя на фтп доступ есть, я ведь в ручном режиме когда запускаю обработку с теми же параметрами соединение создается и нужный файлик помещается на фтп без проблем, а вот в регламентном задании не подключается.
Нашел консоль заданий, решил посмотреть, что покажет. сходу увидел, что не был определен пользователь задания, которое мне нужно, установил. посмотрю дальше.
теперь выполняется. долго правда, но выполняется. одно осталось непонятным: где нужно пользователя регламентного задания устанавливать, ели без консоли задания
(14) Пользователь для выполнения регламентных заданий, на сколько я помню, устанавливается где то в настройках программы.
По своему вопросу, поменял пользователя от имени которого запускается служба 1С (запустил от имени администратора) и всё взлетело. Всем большое спасибо.
(14) вроде в файловой не бывает регламентных заданий. Вроде самому надо запускать планировщиком под пользователем, который в константах прописан как пользователь для выполнения регламентных заданий.
В этой статье я попробую рассказать о том, какими средствами располагает технологическая платформа 1С для работы с протоколом FTP. Первая часть статьи — теоретическая, вторая — практические примеры. Отмечу, что при написании статьи использовалась технологическая платформа версии 8.3.12.1595.
Общая информация
Для работы с протоколом FTP у технологической платформы 1С имеется два главных объекта — FTPСоединение и FTPФайл, кроме них существует объект ЗащищенноеСоединениеOpenSSL — который используется для подключения к FTPS-серверам (не следует путать с SFTP), а также объект ИнтернетПрокси — который используется для соединения с FTP-сервером через прокси-сервер.
FTPСоединение ключевой объект для работы с FTP в 1С — именно через этот объект происходит и соединение с FTP/FTPS сервером и все дальнейшие действия. Все параметры для соединения с сервером указываются в конструкторе объекта.
FTPФайл служит для получения информации о каталогах и файлах на FTP-сервере — этот объект позволяет получить информацию по объекту на FTP-сервере: имя, путь расширение, размер и тд.
ИнтернетПрокси позволяет указать прокси-сервер используемый для соединения с FTP/FTPS сервером — параметры для подключения к прокси-серверу указываются методом Установить(). Использование свойств «Пароль» и «Пользователь» нежелательно, так как эти свойства являются устаревшими.
ЗащищенноеСоединениеOpenSSL создает защищенное соединение OpenSSL — предоставляет возможность организовать защищенное соединение с FTP-сервером, также имеется возможность конкретный сертификат клиента и/или сертификат удостоверяющего центра.
Практические задачи при работе с FTP
В качестве практических примеров рассмотрим все операции которые позволяет выполнить объект FTPСоединение.
Как подключиться к серверу FTP?
Параметры для подключения указываются в конструкторе, сами параметры достаточно стандартны. Отдельно скажу про два параметра:
В 1С очень часто возникает необходимость воспользоваться протоколом передачи данных в интернете FTP (File transfer protocol). Это может потребоваться при настройке обмена данными между узлами распределенной информационной базы (РИБ), при обмене данными между различными конфигурациями системы 1С:Предприятие или с другими информационными системами, при выгрузке информации на сайт и т.д.
Рассмотрим основные методы работы с FTP в системах 1С:Предприятие. Для работы нам понадобится адрес сервера FTP, с которым мы будем работать (это может быть IP-адрес, либо буквенный домен), номер порта для доступа к серверу, логин и пароль. Теперь мы можем установить соединение с сервером FTP.
Адрес = «1.1.1.1″ ;
Порт = 21;
Логин = «login»;
Пароль = «password»;
FTPСоединение = Новый FTPСоединение(Адрес,Порт,Логин,Пароль);
Все остальные действия будем производить с созданным объектом FTPСоединение.
После установления связи с сервером нужно перейти в интересующий нас каталог (папку).
Каталог = «/data/1c»;
FTPСоединение.УстановитьТекущийКаталог(Каталог);
Запись файла на FTP из 1С производится следующим образом.
Если на диске уже есть файл, который нужно передать на сервер, то достаточно пары строчек:
АдресФайла = «C:\1C\file.txt»;
FTPСоединение.Записать(АдресФайла,»file_upload.txt»);
Первый параметр функции Записать должен содержать адрес файла на диске, а второй — имя файла, которое будем ему присвоено на FTP-сервере.
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.ДобавитьСтроку(«текст»);
ВременныйФайл = ПолучитьИмяВременногоФайла(«txt»);
ТекстовыйДокумент.Записать(ВременныйФайл);
FTPСоединение.Записать(ВременныйФайл,»file.txt»);
Получение файла с FTP производится так.
Если FTPСоединение .НайтиФайлы(«file.txt»).Количество() = 0 тогда
Возврат;
КонецЕсли;
ВременныйФайл = ПолучитьИмяВременногоФайла(«txt»);
FTPСоединение.Получить(«file.txt»,ВременныйФайл);
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ВременныйФайл, «windows-1251»);
ТекстовыйДокумент.Записать(«C:\file.txt»);
Переименование и перемещение файла на FTP производится с помощью одной функции Переместить.
Можно совместить перемещение и переименование.
Удаление файла с FTP производится очень просто.
При возникновении вопросов, вы всегда можете обратиться к нашим специалистам за помощью.
Работа с FTP в 1С : 6 комментариев
Какие библиотеки нужно использовать для работы с ftp из 1С 7.7?
а если сделать это регламентным заданием — каждый раз будет создаваться новое соединение?
надо ли завершать соединение и если да, то как правильно?
Если делать регламентным заданием, то скорее всего у вас будет каждый раз создаваться переменная с типом FTPСоединение. Соединение устанавливается при создании этой переменной. Эта переменная перестает существовать после выполнения задания, соответственно перестает существовать и соединение. Кроме того, сам FTP-сервер закроет соединение через определенный период времени бездействия.
и еще вопрос — если файл существует — будет он перезаписываться или нужны доп. команды типа DisplayAlerts = False?
Существующий файл перезаписывается.
Добавить комментарий Отменить ответ
Теперь мы в соцсетях! Подписывайтесь, чтобы получать информацию о последних обновлениях или задать вопрос.
Мы часто пользуемся протоколом FTP при передаче файлов или загрузке страниц интернета. В системах 1С тоже достаточно часто используется этот механизм для обмена данными с другими приложениями или между конфигурациями. На практике вы не раз столкнетесь с необходимостью воспользоваться заложенными в платформе 1С 8.3 механизмами работы с FTP. К этому необходимо быть готовым и знать основные приемы и принципы.
Заложенные в платформу объекты для FTP
Для того чтобы работать с протоколом FTP в технологическую платформу уже заложены некоторые инструменты. Они доступны в любой конфигурации, если версия вашей платформы 8.3 и выше. Рассмотреть их подробнее, узнать их методы и возможности вы сможете с помощью синтакс-помощника, нажав клавиши CTRL + F1 в конфигураторе. Вот эти объекты:
- FTPСоединение. Предназначен для соединения с серверами и выполнения основных действий – отправке данных через FTP;
Рис.1 Работа с FTP в 1С 8.3
- FTPФайл. Получает информацию о структуре каталогов и файлов на сервере, но не позволяет читать содержимое или производить запись. Дает доступ к информации о реквизитах:
- Имя;
- Путь;
- Расширение;
- Размер и прочее.
Перед тем как производить какие-либо действия с файлами, нам необходимо осуществить подключение к FTP-серверу или ресурсу в интернете. Для этого нам нужно узнать адрес, логин и пароль, под которыми можно зайти на ресурс, и рабочий каталог. По умолчанию объект FTPСоединение использует 21 порт для FTP и 990 для защищенных FTPS. Если у вас используются другие порты – придется их указывать вручную.
По результатам выполнения этого кода должно произойти подключение 1С к указанному ресурсу. Зачастую на этом моменте появляется проблема с тем, что программа долго подключается к FTP серверу. С большой долей вероятности решить эту проблему поможет попытка запустить соединение в пассивном режиме. Для этого в момент создания объекта FTPСоединение задать параметр № 6 в значение «Истина».
Работа с файлами на FTP сервере
После того как FTP соединение установлено, мы можем работать с файлами на удаленном ресурсе из 1С. Перед тем как что-то добавлять или удалять, необходимо посмотреть, какие файлы уже существуют на FTP-сервере. В этом нам поможет метод «НайтиФайлы», который помещает все найденные файлы в общий массив. После этого нам останется только обойти в цикле все элементы на FTP-сервере через 1С:
Перенести файл с локального компьютера, на котором запущена программа 1С, через FTP на сервер можно несколькими путями. Также вы можете создавать на ресурсе и новые файлы, формируя их программно – этот вариант отлично подойдет для ведения логов. Простые примеры алгоритма выгрузки данных из 1С на FTP создания файлов на сервере:
-
Сформировать имя временного файла;
Также необходимо знать, как работать с каталогами на сервере через FTP. Существуют следующие основные операции:
- Переименование папки или перемещение файла. Для последнего необходимо прописать путь вместе с именем и расширением файла:
В платформе 8.3 существуют все возможности, чтобы организовать обмен данными через FTP прямо из 1С. Помните, что для стабильной работы правильно написанного кода в 1С мало. Необходим доступ к серверу и настройка прав для учетной записи, от которой запускают 1С. После этих действий ничего не помешает вам настроить синхронизацию данных 1С через FTP-протокол.
Читайте также: