1с рассылка отчетов ftp
В этой статье я попробую рассказать о том, какими средствами располагает технологическая платформа 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?
Параметры для подключения указываются в конструкторе, сами параметры достаточно стандартны. Отдельно скажу про два параметра:
Обработка является внешней и добавляется в систему в справочник “Дополнительные отчеты и обработки”.
После установки обработки в систему необходимо настроить соединение с ФТП сервером, на который будет осуществляться выгрузка отчетов.
Для этого необходимо открыть обработку в справочнике дополнительных отчетов и обработок.
На форме будут доступны две команды:
- Выгрузка отчетов на фтп сервер - ручной запуск выгрузки
- Настройка отчетов и подключение к FTP серверу - открытие формы настроек
По выполнению команды “Настройка отчетов и подключения к FTP серверу” откроется форма настроек.
Флажок “Пассивное соединение” необходим в случае, если соединение с FTP сервером предпочтительно устанавливать в пассивном режиме.
Также на данной форме производится перечисление отчетов, которые будут выгружаться на сервер. Для каждого отчета необходимо указать существующий каталог на ftp сервере, имя файла и отметить необходимо ли добавлять к имени файла дату выгрузки в формате “дд-мм-гггг”.
Если в качестве каталога необходим корневой каталог следует указать значение “/” .
Например, если указать имя файла “Прайс”, то варианты имени файла на сервере после выгрузки отчета будут следующими:
При закрытии формы настройки автоматически сохраняются и применяются для последующих сеансов выгрузки.
Выполнение выгрузки можно настроить по расписанию. Для этого необходимо установить отметку под значком с часами напротив команды “Выгрузка отчетов на FTP сервер” и указать расписание выполнения.
Обработка тестировалась в конфигурации: Управление торговлей, редакция 11 (11.4.9.70).
Версия БСП: 3.0.3.48.
Конфигурация 1С Управление торговлей ред 11.1 позволяет сделать массовую рассылку какого либо отчета, например Прайс листа. Для того настроить рассылку, нужно выполнить следующие действия:
Раздел « Органайзер», меню «Рассылка отчетов».
При создании новой рассылки необходимо указать ее вид (поле «Отправлять»). Нужно выбрать один из трех вариантов:
- Только мне (личная рассылка автора) – отчеты получит только пользователь, создавший данную рассылку. Указать список получателей нельзя, внести изменения в рассылку может только пользователь, ее создавший, или администратор системы.
- Свой отчет для каждого получателя – каждый получатель получает свой личный отчет.
- Отчеты указанным получателям – каждый получатель получит тот же самый отчет.
В качестве получателя могут выступать пользователи, контрагенты, партнеры, организации.
На закладке «Отчеты» при помощи кнопки «Включить в рассылку» необходимо выбрать конкретные варианты отчетов, которые необходимо разослать. Какие отчеты отправлять из 1С. Конкретные настройки (период, отборы и т.д.) выбранного варианта отчета можно указать в нижней части экрана.
Если выбран вид рассылки «Свой отчет для каждого пользователя», то можно указать в настройках конкретного пользователя-получателя, для которого формируется данный отчет.
На закладке Расписание можно задать периодичность автоматической рассылки.
Закладка Доставка. Если выбран вид рассылки «Только мне» (личная рассылка автора), то письмо будет отправлено по единственному адресу, указанному в поле «Почтовый адрес».
Если выбран вид рассылки «Свой отчет для каждого получателя», то письмо будет отправлено всем адресатам, указанным в отдельном списке.
При выбранном виде рассылки «Отчеты указанным получателям», кроме отправки отчета по электронной почте становится доступной возможность сохранить отчет в папку, в сетевой каталог или на FTP-ресурс (галочка «Публиковать»).
В поле «От» нужно указать учетную запись электронной почты, с которой будет производиться отправка.
На закладке Дополнительно можно выбрать формат отправляемого отчета. По умолчанию используется формат HTML. Другой формат можно выбрать из приведенного ниже списка:
Предназначена для автоматического формирования отчетов и доставки сформированных отчетов получателям.
Рассылки отчетов позволяют автоматизировать процесс получения отчетов так, что, не открывая программу, можно получить в нужное время готовый отчет на свою электронную почту или в определенный каталог в виде файла.
Основные сведения
- Отчеты указанным получателям - одинаковые отчеты отправляются одновременно всем получателям. Для этого вида рассылки отчетов предусмотрена не только отправка по электронной почте, но и возможность публикации сформированных отчетов в папке файлов программы, в сетевом каталоге или на сайте FTP.
- в поле Получатели выберите тип получателей - один из списков программы (например, Пользователи).
- в поле Получатели выберите тип получателей.
Почтовый адрес - автоматически проставляется адрес электронной почты текущего пользователя.
Отчеты
- На этой вкладке можно выбрать для рассылки один или несколько отчетов из списка с помощью кнопки Подобрать.
- С помощью кнопки Предварительный просмотр можно сформировать выбранный отчет.
- Настройки отчета - выводятся настройки отчета, с помощью флажков можно выбрать нужные настройки и указать значения, по которым будет выведен отчет. При необходимости можно изменить настройки выбранного отчета. Для этого выберите нужное значение из списков.
- Если выбран вид рассылки Свой отчет для каждого получателя, то с помощью соответствующей кнопки в настройках каждого отчета можно Указать получателя рассылки из списка Пользователи, для того чтобы для каждого получателя формировался свой отчет с показателями, доступными только для этого получателя.
- В заголовке вкладки ведется количество отчетов, входящих в рассылку.
Расписание
Для автоматической отправки отчетов с некоторым интервалом или в некоторые дни недели на вкладке можно описать, по каким дням, и в какое время программа должна отправлять эту рассылку. На основании каждой рассылки отчетов в программе формируются одноименные регламентные задания "Рассылка отчетов".
Имеется возможность автоматического составления расписания с помощью кнопки Заполнить по шаблону. Выберите нужное расписание из списка, например, в первый день месяца. Расписание заполнится автоматически.
Кроме этого, в программе предусмотрена возможность самостоятельно выбрать периодичность расписания (определяет частотность срабатывания рассылки, переключение данного параметра влияет на все настройки расписания):
-
- рассылка будет выполняться с заданной частотой в днях.
- выберите Период повтора;
- Выберите дни недели с помощью флажков.
- Выберите месяцы с помощью флажков, укажите номер дня с начала или с конца месяца, в который будет производиться рассылка.
- При запуске по расписанию рассылка выполняется от имени автора.
- На вкладке описываются все возможные способы доставки настраиваемой рассылки. Содержимое вкладки может меняться, в зависимости от вида рассылки.
- Если выбрана личная рассылка автора, то доставка выполняется только по электронной почте по единственному адресу, который указывается в поле Почтовый адрес.
- Если выбран Свой отчет для каждого получателя, то доставка также выполняется только по электронной почте, но уже не одному, а нескольким получателям.
- Если выбраны Отчеты указанным получателям, то кроме доставки по почте появляется возможность сохранить (опубликовать) готовые отчеты.
- Для этого включите флажок Публиковать - признак необходимости публикации рассылки. Выберите соответствующее значение:
-
- отчеты будут сохранены в указанную папку подсистемы "Работа с файлами". С помощью этого способа доставки можно организовать регулярную архивацию отчетов в папку файлов (при этом отключив отправку по электронной почте); - отчеты будут сохранены в выбранный сетевой каталог. Запись производится с сервера, поэтому рекомендуется указывать сетевой путь в формате UNC, например: \\server\folder\. Укажите адрес этого каталога в поле Windows (если вы работаете на компьютере под управлением этой операционной системы) или в поле Linux (если вы работаете на компьютере под управлением Linux). Внимание! Данный способ доставки отчетов недоступен в приложении в Интернете; - отчеты будут сохранены на ftp-сервере. Заполните необходимые параметры.
- Включать дату в имя файла - Если при публикации рассылки включить флажок, то каждый файл получает уникальное наименование и после сохранения в папке не будет затерт при следующей рассылке. По умолчанию флажок выключен.
[Получатель] - представление получателя рассылки. Доступен только для вида рассылки свой отчет для каждого получателя.
[ЗаголовокСистемы] - заголовок информационной базы 1С:Предприятие для всех пользователей. Устанавливается в разделе Администрирование - Общие настройки.
По умолчанию установлен формат письма HTML, можно изменить его на Обычный. В формате HTML доступны стандартные команды форматирования текста (часть из них размещена в виде кнопок, остальные можно найти в меню Еще).
С помощью соответствующего флажка можно Транслитерировать имена файлов. В этом случае сохраненные файлы будут иметь имена, содержащие только латинские буквы и цифры, для возможности переноса между различными операционными системами. Например, файл Отчет.mxl будет сохранен с именем Otchet.mxl.
Дополнительно
-
Выберите общие форматы для всех отчетов с помощью флажков. Можно выбрать несколько форматов.
- Для этого включите флажок Публиковать - признак необходимости публикации рассылки. Выберите соответствующее значение:
- В таблице ниже для каждого отчета можно задать свой набор форматов в колонке Форматы.
- В колонке Отправлять пустой установите флажок для отправки сформированного отчета, даже если он пустой. По умолчанию флажок снят. Отчеты с графикой всегда считаются не пустыми.
- Установите флажок Архивировать в ZIP, для того чтобы архивировать сформированные отчеты в формате .zip. Рекомендуется включать архивацию, если отчеты отправляются по электронной почте, для снижения объема вложений.
- Становится доступным поле Наименование архива (наименование архива формируется автоматически по указанному в поле шаблону).
- С помощью команды Параметр контекстного меню по правой кнопке мыши в поле Наименование архива можно изменить шаблон наименования. Для изменения доступны параметры:
- Дата рассылки;
- Наименование рассылки.
Выполнение рассылки
Нажмите Выполнить сейчас, для того чтобы выполнить рассылку от имени текущего пользователя. Рассылка будет выполнена, если у нее установлен флажок Подготовлена.
Просмотр событий рассылки
Нажмите События рассылки, для того чтобы открыть журнал регистрации, предварительно отфильтровав его по событиям рассылки со времени последнего запуска.
При помощи этой компоненты легко решается поставленная задача:
Преимущества: один из самых всеядных способов в плане серверов + контроль результата выполнения, легко организовать обработку исключительных ситуаций, так же сильны и методы чтения с фтп.
Недостатки: внешние компоненты в 7.7 требуют регистрации с правами администратора; относительно медленный способ.
По поводу правомерности использования компоненты мне официально ответили «Компонента APPlus.dll бесплатная, Вы можете использовать её в любых целях»
Способ второй – консольный
Заключается в использовании стандартной команды windows «ftp» с параметрами.
Решение может выглядеть так:
Преимущества: никаких компонент, всё стандартное и понятное.
"ftp -s:ftpcmd.dat > naprimer.log"
После выполнения команды файл naprimer.log считывается программно и анализируется.
Способ третий – пассивный режим
История возникновения этого способа связана с тем, что первые два не имеют возможности перехода в пассивный режим обмена (как Web-браузер) и в некоторых случаях из-за этого не работают. Связано ли это с настройками фтп-серверов или политикой безопасности компьютера-клиента и его сети, лично для меня как н еобременённого сетевыми знаниями специалиста, загадка, а искать ответ или специалиста который бы помог в каждом новом случае – смерти подобно. Поэтому силами яндекса было найдено решение – использовать свободно доступную консольную программу ФС.УстТекКаталог(КаталогИБ()); // место расположения curl.exe и её компонент КомандаСистемы("curl.exe -T """+ИмяФайлаЛокально+""" -u "+ФТПимяПользователя+":"+ФТПпароль+" "+ФТПсервер); // вот и всё
Достоинства: пассивный режим, относительно быстрый, достаточно лояльный к серверам.
Недостаток: нет возможности программно определить результат отправки.
В прилагаемом архиве содержится конфигурации со всеми описанными способами и примененными компонентами, что позволяет, указав параметры своего сервера, быстро определиться с подходящим решением.
О том как можно организовать регулярную автоматическую отправку отчетов можно узнать здесь.
Конечно же, есть и множество других способов решить поставленную в заголовке задачу, однако мне вполне хватает вышеизложенных. Все три способа на момент публикации реально используются, поэтому делюсь, чтобы другим помогло и самому не забыть.
Специальные предложения
По поводу правомерности использования компоненты мне официально ответили «Компонента APPlus.dll бесплатная, Вы можете использовать её в любых целях»
а можно ссылочку на ветку форума? или это из приватной переписки?
(3) спасибо. но всё равно я бы опасался её использования в каких-то серьёзных решениях, ведь лицензия на неё не указана, а письмо. это всего лишь письмо
(7) Elected, для того и представлено несколько способов, что бы найти рабочий, а так же посмотрите комментарии выше, там ещё одна компонента.
(8) не знаю, у меня есть своя наработка и она работает на стандартной команде windows FTP.EXE. Всё загружается и выгружается.
Для первого варианта будет ли работать Загрузка с FTP?:
Да, работать будет ))
Но вот так:(13) Gennadiy83,
0001/file1.txt
положить в каталог 0001
или
/file1.txt
положить в корневой каталог ФТПвот реальный пример
storage/sdcard0/Download/To1C.zip
загружаю файл на телефонПри подключении к серверу начальный каталог не указывается. При подключении через браузер или проводник, локальный каталог не указываю и не вижу. Вероятнее всего при подключении к ftp сразу перенаправляет в нужную папку. Знаю, что на ftp каждому дистрибьютору соответствует папка по логину подключения.
Пробовал установить каталог вызовом процедуры ФтпУстТекКаталог(имяПапкиНаFTP), но генерируется ошибка.
Подозреваю, что ftp работает в пассивном режиме, есть ли возможность установки соединения с ftp-сервером в таком режиме?
Попробовал 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 05.11.15 00:36:41.361 FTP --> USER ЛОГИН
05.11.15 00:36:41.377 FTP 05.11.15 00:36:41.377 FTP --> PASS *****
05.11.15 00:36:41.392 FTP 05.11.15 00:36:41.392 FTP --> TYPE I
05.11.15 00:36:41.424 FTP 05.11.15 00:36:41.424 FTP --> STRU F
05.11.15 00:36:41.439 FTP 05.11.15 00:36:41.439 FTP --> REST 0
05.11.15 00:36:41.455 FTP 05.11.15 00:36:41.455 FTP --> REST 1
05.11.15 00:36:41.470 FTP 05.11.15 00:36:41.470 FTP --> REST 0
05.11.15 00:36:41.502 FTP 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 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 FTP05.11.15 00:41:13.831 FTP: Подключаемся к сокету
05.11.15 00:41:13.862 FTP: К сокету подключились успешно
05.11.15 00:41:13.878 FTP 05.11.15 00:41:13.878 FTP --> USER ЛОГИН
05.11.15 00:41:13.893 FTP 05.11.15 00:41:13.893 FTP --> PASS *****
05.11.15 00:41:13.909 FTP 05.11.15 00:41:13.909 FTP --> TYPE I
05.11.15 00:41:13.940 FTP 05.11.15 00:41:13.940 FTP --> STRU F
05.11.15 00:41:13.956 FTP 05.11.15 00:41:13.956 FTP --> REST 0
05.11.15 00:41:13.971 FTP 05.11.15 00:41:13.971 FTP --> REST 1
05.11.15 00:41:14.002 FTP 05.11.15 00:41:14.002 FTP --> REST 0
05.11.15 00:41:14.018 FTP 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 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Читайте также:
Доставка