FTP отправка из 7.7

10.06.15

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Всё чаще встречаются задачи по отправке отчетов поставщику, и нередко подготовленные файлы необходимо записать на FTP сервер. О том, как можно решить подобную задачу, и пойдёт речь.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Db.zip
.zip 6,69Mb
119
119 Скачать (3 SM) Купить за 2 450 руб.

Способ первый – внешняя компонента

На официальном сайте замечательной компании Агент ПЛЮС в разделе Скачать свободно доступны Конфигурации для 1С:Предприятие с интегрированным модулем обмена для "Агент Плюс: Мобильная торговля. Проф" среди которых Конфигурация "Агент Плюс. Торговля+Склад" (на базе типовой конфигурации "Торговля+Склад", редакция 9.2). В дистрибутиве конфигурации содержится внешняя компонента APPlus.dll и несколько дополнительных библиотек, дабы не мучать читателя подробностями – все они собраны в прикрепленном к статье архиве.

При помощи этой компоненты легко решается поставленная задача:

ЗагрузитьВнешнююКомпоненту("APPlus.dll"); // Регистрируем компоненту 
ФТП = СоздатьОбъект("AddIn.CeDataExch"); // Создаём объект 
ФТП.FtpOpenSession(); // Это я не знаю зачем:) 
Результат = ФТП.FtpConnect("ftp.filehost.ru","userName","Password"); // Подключаемся
Если Результат = 0 Тогда // Если успешно то отправляем файл
    Результат = ФТП.FtpPutFile(ИмяФайлаЛокально, ИмяФайлаНаФТП);
    Если Результат <> 0 Тогда // не получилось - сообщаем об ошибке
        Сообщить("Не удалось отправить файл по причине: " + ФТП.ErrDescription(Результат), "!");
    КонецЕсли; 
Иначе
    Сообщить("Не удалось подключиться по причине: " + ФТП.ErrDescription(Результат), "!"); 
КонецЕсли; 
ФТП.FtpCloseSession();

Преимущества: один из самых всеядных способов в плане серверов + контроль результата выполнения, легко организовать обработку исключительных ситуаций, так же сильны и методы чтения с фтп.

Недостатки: внешние компоненты в 7.7 требуют регистрации с правами администратора; относительно медленный способ.

По поводу правомерности использования компоненты мне официально ответили «Компонента APPlus.dll бесплатная, Вы можете использовать её в любых целях»  

 

Способ второй – консольный

Заключается в использовании стандартной команды windows «ftp» с параметрами.

Решение может выглядеть так:

Текст = СоздатьОбъект("Текст"); // Создаём файл с командами для ftp
Текст.ДобавитьСтроку("open " + ФТПсервер);
Текст.ДобавитьСтроку(ФТПимяПользователя);
Текст.ДобавитьСтроку(ФТПпароль);
Текст.ДобавитьСтроку("put " + ИмяФайлаЛокально);
Текст.ДобавитьСтроку("quit");
Текст.Записать(КаталогИБ() + "ftpcmd.dat");
ФС.УстТекКаталог(КаталогИБ()); // место расположения ftpcmd.dat
КомандаСистемы("ftp  -s:ftpcmd.dat"); // вызываем
ФС.УдалитьФайл(КаталогИБ() + "ftpcmd.dat"); // убираем за собой

Преимущества: никаких компонент, всё стандартное и понятное.

Недостатки: работает не всегда и не везде – капризный к серверам, для результата выполнения требуется анализ выводимых сообщений, можно сделать так.

"ftp  -s:ftpcmd.dat > naprimer.log"

После выполнения команды файл naprimer.log считывается программно и анализируется.

 

Способ третий – пассивный режим

История возникновения этого способа связана с тем, что первые два не имеют возможности перехода в пассивный режим обмена (как Web-браузер) и в некоторых случаях из-за этого не работают. Связано ли это с настройками фтп-серверов или политикой безопасности компьютера-клиента и его сети, лично для меня как необременённого сетевыми знаниями специалиста, загадка, а искать ответ или специалиста который бы помог в каждом новом случае – смерти подобно. Поэтому силами яндекса было найдено решение – использовать свободно доступную консольную программу «curl.exe» следующим образом:

ФС.УстТекКаталог(КаталогИБ()); // место расположения curl.exe и её компонент
КомандаСистемы("curl.exe  -T """+ИмяФайлаЛокально+""" -u "+ФТПимяПользователя+":"+ФТПпароль+" "+ФТПсервер); // вот и всё

Достоинства: пассивный режим, относительно быстрый, достаточно лояльный к серверам.

Недостаток: нет возможности программно определить результат отправки.

 

В прилагаемом архиве содержится конфигурации со всеми описанными способами и примененными компонентами, что позволяет, указав параметры своего сервера, быстро определиться с подходящим решением.

О том как можно организовать регулярную автоматическую отправку отчетов можно узнать здесь.

 

Конечно же, есть и множество других способов решить поставленную в заголовке задачу, однако мне вполне хватает вышеизложенных. Все три способа на момент публикации реально используются, поэтому делюсь, чтобы другим помогло и самому не забыть.

См. также

SALE! 10%

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 1С:Бухгалтерия 7.7 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0 | Продукт является развитием и исправлением ошибок стандартной обработки для выгрузки данных из 1С Бухгалтерии 7.7 в Бухгалтерию 3.0 | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

55778 50200 руб.

26.05.2020    36129    11    79    

17

Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Представляю Вам техническую обработку, которая позволяет выгрузить справочник номенклатуры ТиС 7.7 в удобочитаемый JSON.

10 стартмани

09.01.2025    954    0    quazare    0    

4

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v7.7 НДС Абонемент ($m)

Пример создания документа Поступление (акт, накладная, УПД) в 1С: Бухгалтерии 3 путем загрузки из XML универсального формата EnterpriseData 1.12 файла, сгенерированного обработкой документа "Реализация". Выгрузка реализации написана в самописной конфигурации на платформе 1С:Предприятие 7.7. Способ заполнения реквизитов поступления можно переделать под себя, выгрузка XML в универсальный формат EnterpriseData останется работоспособной.

1 стартмани

14.02.2023    3383    9    ksnik    0    

7

Файловый обмен (TXT, XML, DBF), FTP Учет документов Распознавание документов и образов Бухгалтер Пользователь Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 1C:Бухгалтерия 1C77 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 1.х 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Платные (руб)

Программный комплекс способный распознавать сотни листов за раз любых сканированных(фото) документов (УПД, ТОРГ12, СФ, паспорт и пр.) и загружать их в любую 1С (БП3.0, УТ, КА, УНФ, УПП, 1С7.7 ТиС, ЗУП3 и пр.), а также формировать архив сканированных документов.<br> Робот применяет до 5 способов распознавания. Максимальное качество загрузки документов из бесплатных OCR. Работает без Интернета.

10800 руб.

13.10.2022    9068    1    12    

9

Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет НДС Абонемент ($m)

Выгрузка реестра необлагаемых НДС операций в ответ на требование налоговой инспекции. В формате xml согласно требованиям законодательства https://sbis.ru/formats/docFormatCard/120287/help/?scrollTo=description Реестр документов подаётся в ответ на требование налоговой о представлении пояснений. Начиная с 23 ноября 2020 года, его можно направлять по ТКС, в электронном виде в формате xml (письмо ФНС России от 12.11.2020 № ЕА-4-15/18589). Данная обработка просто выбирает необлагаемые суммы (не по ставке 0%) по книги продаж за выбранный квартал и включает их в реестр с кодом операции, который выбран в самой обработке.

1 стартмани

24.09.2021    5102    5    AndKovalchuk    0    

3

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Оперативный учет 7.7 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 Бухгалтерский учет Управленческий учет Абонемент ($m)

Обработка и правила обмена данными для выгрузки документов и всех связанных с ними справочников из 1С7.7 ТиС 9.2 в 1С8.3 БП 3.0 через файл XML. В типовых конфигурациях уже есть такое решение. Это немного доработанные правила и сама обработка выгрузки, добавлена возможность устанавливать отбор по выгружаемым документам по Фирме, Контрагенту, Складу, Проекту, Автору, ЮрЛицу. А также это внешняя обработка, что даёт возможность адаптировать её под нетиповую ТиС. Обработка и правила тестировались на платформах: 1С: Предприятие 7.7 и 1С: Предприятие 8.3.18.1334. На типовых конфигурациях: «Торговля + склад», редакция 9.2 (7.70 1004) и «Бухгалтерия предприятия» редакция 3.0 (3.0.96.30).

1 стартмани

13.08.2021    10041    74    Kuzya_brаtsk    8    

11

Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Программист Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Торговля и склад 7.7 1С:Упрощенное налогообложение 7.7 Россия Бухгалтерский учет Абонемент ($m)

Обмениваемся УПД (УКД) с различными контрагентами через 1С-Клиент ЭДО. А чтобы выгрузить УПД (УКД) из 7.7 в конфигурацию 1С-Клиент ЭДО , используем данную обработку, которая создает файл в формате XML, который можно импортировать в систему электронного документооборота. Для конфигурации "Бухгалтерский учет" (тестировалась на релизе 7.70.663) Для конфигурации "Упрощенная система налогообложения" ( тестировалась на релизе 7.70.305) Для конфигурации "Торговля и Склад 7.7" (тестировалась на релизе 7.70.1007)

2 стартмани

31.07.2021    19196    376    AndKovalchuk    124    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. andrewks 1378 07.12.12 12:34 Сейчас в теме
насколько законно такое использование APPlus.dll без наличия лицензии на Агент+?
По поводу правомерности использования компоненты мне официально ответили «Компонента APPlus.dll бесплатная, Вы можете использовать её в любых целях»


а можно ссылочку на ветку форума? или это из приватной переписки?
3. Yury1001 1475 07.12.12 13:17 Сейчас в теме
(1) andrewks, нельзя - я письмо писал:
Прикрепленные файлы:
4. andrewks 1378 07.12.12 22:17 Сейчас в теме
(3) спасибо. но всё равно я бы опасался её использования в каких-то серьёзных решениях, ведь лицензия на неё не указана, а письмо... это всего лишь письмо
5. Yury1001 1475 07.12.12 22:23 Сейчас в теме
(4) andrewks, обязательно найду время, посмотрю dialmail.dll и добавлю четвертый способ:)
andrewks; +1 Ответить
2. andrewks 1378 07.12.12 12:35 Сейчас в теме
уж лучше dialmail.dll использовать, он-то уж точно свободно распространяемый
6. arjuna 22.09.13 23:56 Сейчас в теме
Обработка помогла, все три варианта сработали :) вот теперь мучаюсь с выбором :)
7. Elected 23 06.11.14 08:23 Сейчас в теме
Первый способ у меня почему-то не работает. Выпадает ошибка: Не удалось отправить файл по причине: Ошибка записи файла-получателя. Файл на ФТП появляется, но пустой и повреждённый. В чём причина?
8. Yury1001 1475 06.11.14 14:45 Сейчас в теме
(7) Elected, для того и представлено несколько способов, что бы найти рабочий, а так же посмотрите комментарии выше, там ещё одна компонента.
9. Elected 23 07.11.14 14:01 Сейчас в теме
(8) не знаю, у меня есть своя наработка и она работает на стандартной команде windows FTP.EXE. Всё загружается и выгружается...
10. CheBurator 3230 07.11.14 22:36 Сейчас в теме
11. dikd 17 19.12.14 14:33 Сейчас в теме
Для первого варианта будет ли работать Загрузка с FTP?:

Результат = ФТП.FtpGetFile(ИмяФайлаНаФТП,ИмяФайлаЛокально);

12. dikd 17 19.12.14 14:45 Сейчас в теме
Да, работать будет ))
Но вот так:

Результат = ФТП.FtpGetFile(ИмяФайлаЛокально,ИмяФайлаНаФТП);
26. pavelvaskan 23.05.22 15:21 Сейчас в теме
(12)
Результат = ФТП.FtpGetFile(ИмяФайлаЛокально,ИмяФайлаНаФТП);


Добрый день! Как с помощью APPlus32.dll взять группу файлов *.xml с FTP (без искажения их имени) и скопировать в локальный каталог?

Имя файлов - не задано, их должна определить программа. Известно, только их расширение - XML!

Спасибо, если поможете!
13. Gennadiy83 02.11.15 09:13 Сейчас в теме
Добрый день! Использую библиотеку APPlus.dll. Подскажите, пожалуйста, как должно выглядеть содержимое параметра ИмяФайлаНаФТП? При попытке отправить файл, возвращается код "6" и ошибка "Не удалось отправить файл по причине: Ошибка записи файла-получателя". Помогите разобраться.
14. Yury1001 1475 02.11.15 11:13 Сейчас в теме
(13) Gennadiy83,
0001/file1.txt
положить в каталог 0001
или
/file1.txt
положить в корневой каталог ФТП

вот реальный пример
storage/sdcard0/Download/To1C.zip
загружаю файл на телефон
Gennadiy83; +1 Ответить
15. Gennadiy83 02.11.15 12:21 Сейчас в теме
При подключении к серверу начальный каталог не указывается. При подключении через браузер или проводник, локальный каталог не указываю и не вижу. Вероятнее всего при подключении к ftp сразу перенаправляет в нужную папку. Знаю, что на ftp каждому дистрибьютору соответствует папка по логину подключения.

Пробовал установить каталог вызовом процедуры ФтпУстТекКаталог(имяПапкиНаFTP), но генерируется ошибка.
16. Gennadiy83 02.11.15 21:45 Сейчас в теме
Подозреваю, что ftp работает в пассивном режиме, есть ли возможность установки соединения с ftp-сервером в таком режиме?
17. Yury1001 1475 03.11.15 11:07 Сейчас в теме
(16) Gennadiy83, попробуйте DialMail.dll - она, пожалуй, лучшая. Работает в пассивном режиме (пятый параметр 1, при подключении). Пользуюсь давно, но выложить руки так и не дошли.
На фото рабочий пример кода, где параметры:
Каталог - куда отправить на ФТП, например "1001/1002"
Вложения - список значений, каждое значение которого - полное имя файла на диске; представление - имя файла, без каталогов, как его записать на ФТП, например:
Вложения.ДобавитьЗначение(КаталогИБ() + "EUR.spl", "EUR.spl");
Прикрепленные файлы:
18. Gennadiy83 04.11.15 10:44 Сейчас в теме
Огромное спасибо за помощь, попробую в ближайшее время, обязательно отпишу по результатам
19. Gennadiy83 05.11.15 00:42 Сейчас в теме
Попробовал dialMail.dll в активном и пассивном режиме, подключение происходит, но файл не перегружается на ftp. Ниже приведу лог пассивного подключения, затем, активного

Пассивный режим:

.11.15 00:36:41.314 FTP: Подключаемся к сокету
05.11.15 00:36:41.330 FTP: К сокету подключились успешно
05.11.15 00:36:41.361 FTP <-- 220 Microsoft FTP Service
05.11.15 00:36:41.361 FTP --> USER ЛОГИН
05.11.15 00:36:41.377 FTP <-- 331 Password required for PTN020104699.
05.11.15 00:36:41.377 FTP --> PASS *****
05.11.15 00:36:41.392 FTP <-- 230 User logged in.
05.11.15 00:36:41.392 FTP --> TYPE I
05.11.15 00:36:41.424 FTP <-- 200 Type set to I.
05.11.15 00:36:41.424 FTP --> STRU F
05.11.15 00:36:41.439 FTP <-- 200 STRU F ok.
05.11.15 00:36:41.439 FTP --> REST 0
05.11.15 00:36:41.455 FTP <-- 350 Restarting at 0.
05.11.15 00:36:41.455 FTP --> REST 1
05.11.15 00:36:41.470 FTP <-- 350 Restarting at 1.
05.11.15 00:36:41.470 FTP --> REST 0
05.11.15 00:36:41.502 FTP <-- 350 Restarting at 0.
05.11.15 00:36:44.185 FTP DataSocket: Begin
05.11.15 00:36:44.185 FTP DataSocket: Use passive mode
05.11.15 00:36:44.185 FTP DataSocket: Command EPSV 1
05.11.15 00:36:44.185 FTP DataSocket: Command PASV
05.11.15 00:36:44.185 FTP --> PASV
05.11.15 00:36:44.200 FTP <-- 227 Entering Passive Mode (хх,хх,хх,хх,218,154).
05.11.15 00:36:44.200 FTP DataSocket: CloseSocket
05.11.15 00:36:44.200 FTP DataSocket: Bind 0.0.0.0:0
05.11.15 00:36:44.200 FTP DataSocket: Connect хх.хх.хх.хх:55962
05.11.15 00:37:05.229 FTP DataSocket: Error
05.11.15 00:37:05.229 D_FTP ErrorCode = 10060
05.11.15 00:37:05.229 D_FTP ErrorDesc = Connection timed out
05.11.15 00:37:05.229 FTP DataSocket: End
05.11.15 00:37:05.229 FTP --> QUIT
05.11.15 00:37:05.245 FTP <-- 221 Goodbye.


Активный режим:

05.11.15 00:41:13.831 FTP: Подключаемся к сокету
05.11.15 00:41:13.862 FTP: К сокету подключились успешно
05.11.15 00:41:13.878 FTP <-- 220 Microsoft FTP Service
05.11.15 00:41:13.878 FTP --> USER ЛОГИН
05.11.15 00:41:13.893 FTP <-- 331 Password required for PTN020104699.
05.11.15 00:41:13.893 FTP --> PASS *****
05.11.15 00:41:13.909 FTP <-- 230 User logged in.
05.11.15 00:41:13.909 FTP --> TYPE I
05.11.15 00:41:13.940 FTP <-- 200 Type set to I.
05.11.15 00:41:13.940 FTP --> STRU F
05.11.15 00:41:13.956 FTP <-- 200 STRU F ok.
05.11.15 00:41:13.956 FTP --> REST 0
05.11.15 00:41:13.971 FTP <-- 350 Restarting at 0.
05.11.15 00:41:13.971 FTP --> REST 1
05.11.15 00:41:14.002 FTP <-- 350 Restarting at 1.
05.11.15 00:41:14.002 FTP --> REST 0
05.11.15 00:41:14.018 FTP <-- 350 Restarting at 0.
05.11.15 00:41:17.653 FTP DataSocket: Begin
05.11.15 00:41:17.653 FTP DataSocket: Use active mode
05.11.15 00:41:17.653 FTP DataSocket: Bind 192.168.110.5:0
05.11.15 00:41:17.653 FTP DataSocket: Command PORT 192,168,110,5,240,79
05.11.15 00:41:17.653 FTP --> PORT 192,168,110,5,240,79
05.11.15 00:41:17.684 FTP <-- 501 Server cannot accept argument.
05.11.15 00:41:17.684 FTP DataSocket: End
05.11.15 00:41:17.684 FTP --> QUIT
05.11.15 00:41:17.700 FTP <-- 221 Goodbye.
20. Yury1001 1475 09.11.15 10:39 Сейчас в теме
(19) Gennadiy83, гугл в помощь, как говорится, вероятно проблема на стороне сервера.
21. Gennadiy83 10.11.15 01:03 Сейчас в теме
В любом случае спасибо за помощь)
22. Hitryi 23.05.17 16:27 Сейчас в теме
Как через библиотеки АгентПлюс получить список файлов на ftp?
23. pragromist 32 23.05.17 21:24 Сейчас в теме
(22) на сколько я знаю, никак, здесь поможет dialmail.dll
24. Hitryi 24.05.17 14:56 Сейчас в теме
(23) Так и есть. Нет там таких методов.
Выкрутился из ситуации получив список файлов curl-om.
Так же выяснилось что Агент Плюс не любит русские символы.
25. ra9000 14 26.05.17 14:22 Сейчас в теме
Привет. Есть замечательная программка
Складываем файлы в папку - Архивируем любым архиватором !!!ставим пароль на архив!!!
В батнике пишем
echo Пробуем выгрузить изменения.
ncftpput.exe -u ftp_user -p ftp_pass -F %DebugMode% ftp.company.ru . %PC_Folder%\MG1D.zip

Сами файлы можно забрать у разработчика с описанием и примерами
При этом версия 1с не имеет значения.
http://www.ncftp.com/ncftp/
Оставьте свое сообщение