Заготовка для загрузки файлов по ftp

Публикация № 189450

Разработка - Системная интеграция - Интеграция с WEB

3 процедуры и 1 макет

Кусок моей реализации обмена по ftp. Сначала получает список файлов на ftp, анализируется, загружали ли его ранее (некоторые ftp не позволяют удалять файлы), а потом загружаются новые файлы и сохраняются в хранилище файлов. Далее файлы обрабатываются (здесь этих процедур уже нет) и при удачной обработке помечаются уже как загруженные. Если файл пришел пустой или неполный (а с ftp такое бывает), то файл помечается как битый и в следующий сеанс обмена снока загружается уже штатно. Как-то так.

 Процедура ПолучитьФайлыЗаказовFTP() Экспорт

   
СоздатьКаталог(КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена);
   
ИмяЛогаFTP = КаталогВременныхФайлов()+"ftp1cList.log";
   
ВыполнитьНаFTP("Список файлов",,ИмяЛогаFTP);
   
СписокФайловНаFTP = СписокФайловДляПолученияFTP(ИмяЛогаFTP);
   
УдалитьФайлы(ИмяЛогаFTP);

    Если
СписокФайловНаFTP.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;

    Для Каждого
ИмяФайлаНаFTP из СписокФайловНаFTP Цикл //при желании можно добавить индикацию
       
ВыполнитьНаFTP("Получить файлы",ИмяФайлаНаFTP);
    КонецЦикла;
   
СписокФайлов = НайтиФайлы(КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена,"*.txt");

    Для Каждого
Файл из СписокФайлов Цикл
       
ХранилищеФайла = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
       
ХранилищеФайла.Объект = Контрагент;
       
ХранилищеФайла.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл;
       
ХранилищеФайла.ИмяФайла = Файл.Имя;
       
ХранилищеФайла.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Файл.ПолноеИмя));
       
ХранилищеФайла.Наименование = "Заявка - не загружена";
        Попытка
           
ХранилищеФайла.Записать();
           
ВыполнитьНаFTP("Удалить файл",Файл.Имя);
           
УдалитьФайлы(КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена+"\" + Файл.Имя);
        Исключение
           
Сообщить("Не удалось записать в базу или удалить с ftp файл заказа "+Файл.Имя,СтатусСообщения.Важное);
        КонецПопытки;
    КонецЦикла;

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


//Файл лога нужен только для получения списка файлов на ftp
//Действие - далее в тексте процедуры видно какие значения может принимать и за что отвечает
//ИмяФайлов - строка, содержащая имя файла (может и несколько, только синтаксис ftp.exe не помню, а на практике лучше получать по одному)
//ФайлЛога - ну тут ясно
//П_Настройки - структура, которая хранится в глобальной переменной и заполняется ранее
Процедура ВыполнитьНаFTP(Действие,ИмяФайлов = "",ФайлЛога = "С:\ftp1c.log")

   
выбПорт = "";
   
П_Настройки.Свойство("Порт",выбПорт);
    Если Не
ЗначениеЗаполнено(выбПорт) Тогда
       
выбПорт = 21;
    КонецЕсли;

   
выбЛогин = "";
   
П_Настройки.Свойство("Логин",выбЛогин);

   
выбПароль = "";
   
П_Настройки.Свойство("Пароль",выбПароль);

   
выбСервер = П_Настройки.АдресОбмена;

   
выбПуть = "";
   
П_Настройки.Свойство("КаталогОбмена",выбПуть);

   
BatFile = Новый ТабличныйДокумент();

   
МакетФайла = ЭтотОбъект.ПолучитьМакет("bat_FTP");

   
ТекОбласть = МакетФайла.ПолучитьОбласть("ОбластьФайла");

   
ТекОбласть.Параметры.Адрес выбСервер+" "+выбПорт;
   
ТекОбласть.Параметры.Логин выбЛогин;
   
ТекОбласть.Параметры.Пароль выбПароль;
   
ТекОбласть.Параметры.Каталог выбПуть;
   
ТекОбласть.Параметры.ЛокальныйКаталог Символ(34)+КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена+Символ(34);
    Если
Действие = "Получить файлы" Тогда
       
ТекОбласть.Параметры.Действие = "mget "+ИмяФайлов;
    ИначеЕсли
Действие = "Удалить файл" Тогда
       
ТекОбласть.Параметры.Действие = "del "+ИмяФайлов; //не всегда дает удалять с ftp
   
ИначеЕсли Действие = "Список файлов" Тогда
       
ТекОбласть.Параметры.Действие = "ls . " + Символ(34) + ФайлЛога + Символ(34);
       
//ТекОбласть.Параметры.ВыводВФайл =  " >>"+ФайлЛога;
   
КонецЕсли;

   
BatFile.Вывести(ТекОбласть);
   
ИмяBatФайла = КаталогВременныхФайлов()+"FTP_.bat";
   
BatFile.Записать(ИмяBatФайла,ТипФайлаТабличногоДокумента.ANSITXT);
   
WshShell=Новый ComОбъект("WScript.Shell");
   
КодВозвр=WshShell.Run("cmd /C " + Символ(34)+ ИмяBatФайла + Символ(34),0,-1);
   
УдалитьФайлы(ИмяBatФайла);

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

//Проверим список уже загруженных файлов, чтобы не загружать их снова
//ИмяЛогаFTP - список файлов раннее был получен с помощью батника (в другой процедуре) и помещен в этот файл.
Функция СписокФайловДляПолученияFTP(ИмяЛогаFTP)
   
Запрос = Новый Запрос();
   
Запрос.Текст = "ВЫБРАТЬ
                   |    ХранилищеДополнительнойИнформации.Ссылка
                   |ИЗ
                   |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
                   |ГДЕ
                   |    ХранилищеДополнительнойИнформации.Объект = &Контрагент
                   |    И ХранилищеДополнительнойИнформации.ИмяФайла ПОДОБНО &ИмяФайла"
;
   
Запрос.УстановитьПараметр("Контрагент",Контрагент);
   
Лог = Новый ТекстовыйДокумент();
   
Лог.Прочитать(ИмяЛогаFTP);
   
ФайлыДляПолучения = Новый Массив();
    Для
НомерСтроки = 1 по Лог.КоличествоСтрок() Цикл
       
Строка = Лог.ПолучитьСтроку(НомерСтроки);
       
ИмяФайла = СтрЗаменить(Строка,"./","");
       
Запрос.УстановитьПараметр("ИмяФайла",ИмяФайла);
       
Результат = Запрос.Выполнить().Выбрать();
        Если
Результат.Следующий() Тогда
            Продолжить;
        КонецЕсли;
       
ФайлыДляПолучения.Добавить(Символ(34) + ИмяФайла + Символ(34));
    КонецЦикла;
    Возврат(
ФайлыДляПолучения);
КонецФункции

 

Макет тоже простой. Каждая строчка в отдельной строке. Надеюсь разберетесь, где параметр, а где шаблон?

 
@echo off
ftp -s:%0 [ФайлЛог]
goto done
open [Адрес]
Логин
Пароль
cd [Каталог]
binary
prompt
lcd [ЛокальныйКаталог]
Действие
bye
:done

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. AnryMc 721 03.06.13 11:32 Сейчас в теме
"+" за анимацию, лично я ещё здесь вроде не видел...

Внимание привлекает!
2. anig99 2711 03.06.13 13:43 Сейчас в теме
(1) у меня ещё кот (живой) есть на одной обработке.
3. Algiz 23.10.13 22:38 Сейчас в теме
4. NAKIS 5 18.12.13 12:17 Сейчас в теме
Можно юзнуть для обмена данными между филиалами, а то менеджеры и бухи вечно жалуются на почту...
5. NAKIS 5 18.12.13 12:17 Сейчас в теме
Оставьте свое сообщение

См. также

Отладка конфигурации в режиме веб-клиента

Статья Программист Нет файла v8 Windows Бесплатно (free) WEB

После очередного обновления платформы при попытке запуска отладки в веб-клиенте стало появляться сообщение. Собственно, до этого момента никогда веб-клиентом особо не пользовался и необходимости в отладке как-то не возникало. Данное сообщение заставило задуматься, что не так с отладкой в веб-клиенте и как ее собственно включить? Тот самый неловкий момент, когда программа просит обратиться к администратору, а администратор - это вы.

12.02.2020    1191    gamletspb    0       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

Бесшовная интеграция через обмен по правилам - миссия выполнима

Статья Программист Нет файла v8 ДО ERP2 Бесплатно (free) Практика программирования Интеграция Перенос данных из 1C8 в 1C8

При организации работы с договорами в ERP 2, с помощью бесшовной интеграции с Документооборотом, «типовой» методикой является создание договоров в ЕРП. После создания договора в ЕРП, пользователь «отправляет» договор в ДО по бесшовной интеграции. На практике, весьма часто пользователи хотят видеть обратную схему: вводить договоры в ДО и при этом получать их в ЕРП без «лишних телодвижений». Или даже вводить их независимо в обеих системах – так, чтобы потом «стыковать» по каким-то определенным правилам.

24.01.2020    1464    e-9    2       

Ещё немного о ИНН и сервисе DaData

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) WEB

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

14.11.2019    3736    xxxAndricxxx    21       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Разбор любого JSON-объекта в соответствующую структуру

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Инструментарий разработчика WEB

Данная публикация предназначена разработчикам 1С, которым приходиться разбирать данные формата JSON. Выложенный пример кода создает объект типа Структура, полностью повторяющий структуру данных формата JSON.

13.11.2019    3309    user665435_al.windstorm    14       

Проверка reCAPTCHA от Google на стороне HTTP-Сервиса

Статья Программист Нет файла v8 Россия Бесплатно (free) WEB

Код проверяет переданный токен reCAPTCHA от Google при вызове HTTP-Сервиса. Таким образом проверяем, отправил ли данные на наш HTTP-Сервис робот или реальный пользователь.

06.11.2019    2486    AVR    0       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Простой способ опубликовать базу 1C из дома в интернет, когда Ваш провайдер этого не обеспечивает (3G, 4G модем и т.п.)

Статья Системный администратор Нет файла v8 1cv8.cf Бесплатно (free) WEB Облачные сервисы, хостинг

Если у Вас возникла потребность опубликовать из дома во всемирную паутину базу 1С (например, для тестирования), в т.ч. интерфейс OData, HTTP или Web-сервисы, а интернет-провайдер (например, 3G Мегафон) не предоставляет возможности инициировать соединения извне, то в конце статьи Вы найдете простой, быстрый и условно-бесплатный способ это сделать.

14.10.2019    6475    uno-c    25       

Объединение организаций в ЗУП при реорганизации с переносом данных из ЗУП 2.5 в ЗУП 3.1

Статья Программист Нет файла v8 v8::СПР ЗУП2.5 ЗУП3.x БУ Бесплатно (free) Зарплата Управление персоналом (HRM) Перенос данных из 1C8 в 1C8

В этой статье описан опыт объединения 2-х организаций при реорганизации в ЗУП 3.1 с переносом данных одной организации из ЗУП 2.5 (релизы баз более или менее свежие, но не самые последние на момент перехода, примерно двух- и трехмесячной давности). За основу было взято решение из этой статьи https://infostart.ru/public/833658/, в которой описан алгоритм решения задачи, за что автору статьи огромная благодарность! Здесь же даны некоторые комментарии и пояснения к алгоритму переноса и объединения, описаны выявленные мною ошибки. Также приведена небольшая инструкция по использованию обработки ирПодборИОбработкаОбъектовБД — она будет полезна для пользователей — «не программистов», впервые работающих в не управляемых формах.

09.10.2019    3429    Neti    1       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.

6500 рублей

EnterpriseData: простой способ защиты данных в базе получателя при одностороннем обмене

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Перенос данных из 1C8 в 1C8

Очень часто бухгалтеры ругаются, когда уже отраженные документы в бухгалтерском учета меняются сотрудниками.

04.10.2019    3840    handscenter    12       

Самый примитивный HTTP-сервис в мире

Статья Программист Нет файла v8 Бесплатно (free) WEB

Пошаговый пример создания простейшего HTTP-сервиса, который генерирует HTML-страницу для поиска товара, а также реализует асинхронное получение данных из базы.

12.09.2019    11783    YPermitin    26       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

Конвертация Данных. Нюансы использования конструкции "НеЗамещатьОбъект = Истина" в обработчике события "ПриЗагрузке"

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

У конвертации данных есть «особенности», которые «пьют кровь» программистов. Эта статья про очередную обнаруженную «особенность».

10.09.2019    4583    ivanek    21       

Обмен данными через Web Сервисы

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Ознакомительная статья о том, как загружать\выгружать данные с одной базы в другую, используя Web Сервисы.

02.09.2019    9503    user5300    31       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

Выгрузка и загрузка документов с движениями

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

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

02.09.2019    3487    human_new    7       

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Статья Программист Нет файла v8 v8::УФ 1cv8.cf ОС Бесплатно (free) Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    7348    ids79    7       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) WEB Администрирование данных 1С

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

20.08.2019    6569    Fragster    9       

Перенос дополнительных реквизитов в Конвертации данных 2.0

Статья Программист Нет файла v8 КД Россия УУ Бесплатно (free) Перенос данных из 1C8 в 1C8

Пример написания правил обмена (КД 2.0) для переноса дополнительных реквизитов справочника "Номенклатура", в том числе перенос ПВХ с разными типами значений.

13.08.2019    5524    vikulinamari    6       

INFOSTART MEETUP Krasnodar. 14 февраля 2020 г. Промо

Краснодар станет первым в 2020 году местом, где пройдет региональная встреча IT-специалистов сообщества Инфостарт. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Стоимость участия - 5000 рублей. Цена действительна до 26.12.2019.

Совсем простой обмен HTTP, 2 функции

Статья Программист Нет файла v8 Бесплатно (free) WEB

Функция для вызова рест-сервиса и функция для разбора результата. Быстро, просто, универсально.

12.08.2019    5827    Yashazz    15       

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery. Продолжение

Статья Программист Расширение (cfe) v8 1cv8.cf Бесплатно (free) WEB

Получение изображений из информационной базы и отправка файлов через "фронт" на HTML/CSS/JS.

08.08.2019    5227    Sedaiko    1       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

1Script.Web. Интернет-приложения на языке 1С

Статья Программист Нет файла v8 Бесплатно (free) WEB OneScript

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    15329    Evil Beaver    32       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Отправка файлов через SOAP. SOAP with attachments, MTOM

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) WEB

В продолжение «своеобразной» поддержки 1С протокола SOAP, описанной в https://infostart.ru/public/965259/, опишу еще одну особенность. 1С не поддерживает возможность отправки файлов-вложений. Для решения этой проблемы пришлось самостоятельно писать формирование пакетов SOAP и разбор ответов сервера.

18.04.2019    5143    mysm    2       

HTML-клиент у конфигурации 1С

Статья Программист Нет файла v8 Бесплатно (free) WEB

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

17.04.2019    13667    Smaylukk    119       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Как прикрутить ГУИД к регистру сведений

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    12298    m-rv    16       

Работа с ComОбъектом 1С 8.2; 8.3

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Определение типов и значений через COM соединение между конфигурациями.

15.04.2019    14442    vik070777    12       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

Парсинг сайтов из 1С на примере ломбарды.рф с помощью XPATH для ДокументDOM

Статья Программист Нет файла v8 Бесплатно (free) WEB

На всякую хитрую гайку всегда найдется болт с резьбой (с)

01.04.2019    10835    starik-2005    33       

RabbitMQ + Конвертация Данных 3.0

Статья Системный администратор Программист Бизнес-аналитик Руководитель проекта Нет файла v8 КД Бесплатно (free) Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8

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

21.03.2019    18121    barelpro    82