Настройка модуля автоматизации
Модуль интеграции с внешними системами предназначен для выполнения периодических заданий импорта/экспорта/обработки данных. Модуль представляет из себя Службу Windows, которая каждые 10 секунд проверяет, наличие заданий в таблице scheduler.jobs с прошедшим временем следующего выполнения, и выполняет эти задания.
Установка
Настройка
параметры ini файла:
SMTPProtocol - тип протокола отправки почты: 0 - SMTP, 1 - SSL, 2 - TLS
Создание заданий
Задания описываются в текстовом виде в поле TEXT таблицы jobs. В одном тексте может быть несколько заданий, разделенных пустой строкой, за исключением случая, когда текст начинается с префикса интерпретатора ("<?>"). Задание может быть следующих видов: Интерпретируемый код, Импорт данных, Выполнение запроса (возможно, с экспортом результата).
Интерпретируемый код
Если задание начинается с префикса интерпретатора, то весь последующий код обрабатывается им.
Импорт данных
input, OperNo, FileType, Param1, Param2, Param3, Param4, Param5, Param6
Параметр | Описание |
---|---|
input | Признак типа задания - импорт данных |
OperNo | Номер действия. Значения: 0 - загрузка по FTP, SFTP. 1 - Получение почты. |
FileType | Тип файла. Принимает значения:
0 - Формат "Йота" 1 - Формат "Сони" 2 - Формат "Омни" 3 - Стандартный формат заказов 4 - Стандартный формат отчетов 5 - Пользовательская процедура импорта |
Param1 | Полный путь к папке на FTP-сервере (вместе с именем сервера) (для SFTP используйте sftp://имя_сервера) |
Param2 | Имя пользователя FTP-сервера |
Param3 | Пароль FTP-сервера |
Param4 | Маска имен файлов, подлежащих загрузке |
Param5 | Код клиента (поле courier.clients.code), для привязки загруженных заказов |
Param6 | Активное соединение FTP. Для использования активного режима укажите active |
При задании "1" - Импорт почты система получает почту по всем аккаунтам из таблицы Accounts и загружает их в таблицы messages и attachment
Экспорт данных
query, OperNo, FileType, Param1, Param2, Param3, Param4, Param5, Param6 QueryText
Модуль выполняет запрос QueryText, и передает результат его выполнения функции отправки, описанной в первой строке задания.
Параметр | Описание |
---|---|
query | Признак типа задания - экспорт данных |
OperNo | Номер действия. Значения:
0 - Только выполнение запроса. 1 - Отправка по электронной почте 2 - Выгрузка файла на FTP, SFTP-сервер 3 - Выгрузка заказов в систему "Аксиомус" 4 - Проверка статусов с системе "Аксиомус" 5 - Синхронизация с системой "Эмпрана" 6 - Отправка складских остатков в систему "Эмпрана" 7 - Запрос координат курьеров в сервисе Google |
FileType | Тип файла. Принимает значения:
1 - Формат CSV 2 - Формат "Сони" 3 - Формат XLS 4 - формат CSV (с заголовками) |
Значения параметров 1-6 зависят от типа операции:
Тип операции - 0: Не используются.
Тип операции - 1:
Параметр | Описание |
---|---|
Param1 | Адрес e-mail для отправки |
Param2 | Тема сообщения. Если пусто - "CourierAutoReport" |
Param3 | Текст сообщения. Если пусто - "see attachment" |
Param4 | Маска имени файла. Доступны шаблоны %DT%, %D%, %T% - Дата/время в форматах YYYYMMDDHHMMSS, YYYYMMDD, HHMMSS соответственно. Если пусто - используется ДатаВремя |
Param5 | Не используется |
Param6 | Не используется |
Тип операции - 2:
Параметр | Описание |
---|---|
Param1 | Полный путь к папке на FTP-сервере (вместе с именем сервера) (для SFTP используйте "sftp://имя_сервера...") |
Param2 | Имя пользователя FTP-сервера |
Param3 | Пароль FTP-сервера |
Param4 | Маска имен файла. Доступны шаблоны %DT%, %D%, %T% - Дата/время в форматах YYYYMMDDHHMMSS, YYYYMMDD, HHMMSS соответственно. Если пусто - используется ДатаВремя |
Param5 | Активное соединение FTP. Для использования активного режима укажите active |
Param6 | Не используется |
Типы операции - 3, 4:
Параметр | Описание |
---|---|
Param1 | Имя пользователя системы "Аксиомус" |
Param2 | Пароль системы "Аксиомус" |
Param3 | Не используется |
Param4 | Не используется |
Param5 | Не используется |
Param6 | Не используется |
Тип операции - 5:
Параметр | Описание |
---|---|
Param1 | Адрес сервера системы "Эмпрана" |
Param2 | Имя пользователя системы "Эмпрана" |
Param3 | Пароль системы "Эмпрана" |
Param4 | Код клиента (поле courier.clients.code), для привязки загруженных заказов |
Param5 | Символьный код города системы "Эмпрана" |
Param6 | Не используется |
Тип операции - 6:
Параметр | Описание |
---|---|
Param1 | Адрес сервера системы "Эмпрана" |
Param2 | Имя пользователя системы "Эмпрана" |
Param3 | Пароль системы "Эмпрана" |
Param4 | Код клиента (поле courier.clients.code), для привязки загруженных заказов |
Param5 | Символьный код города системы "Эмпрана" |
Param6 | Не используется |
Обязательно указать запрос! Например, select 1!
Тип операции - 7:
Параметры не используются!
Обязательно указать запрос! Например, select 1!
Примеры использования
Импорт заказов в стандартном формате с FTP-сервера
input, 0, 4, myftphost.ru/upload/foulder/, MyUserName, MyPassword, *_orders.csv, 123, active
Экспорт заказов в CSV-файле на FTP-сервер
query, 0 replace scheduler.sent (code, sent, source, rectype) select a.code, 'F', b.source, 2 from courier.address a join zakaz b on a.zakaz=b.code left join scheduler.sent s on s.code=a.code and s.source=b.source and s.rectype=2 where a.ldtime>=date_sub(now(), interval 7 day) and s.code is null and b.source=123 query, 2, 1, myftphost.ru/upload/foulder/, MyUserName, MyPassword, MY-ORD-%DT% select a.code, a.strbarcode, a.target, a.name, a.address, a.phone, a.rur from scheduler.sent s join courier.address a on s.code=a.code where s.sent='F' and s.source=123 and s.rectype=2 query, 0 update scheduler.sent set sent='T' where sent='F' and source=123 and rectype=2
Данное задание состоит из 3-х подзаданий. В первом - запрос собирает коды корреспонденции, измененной за последние 7 дней, но не добавленных в очередь отправки в таблице sent. Во втором происходит формирование CSV-файла с заказами, у которых стоит отметка, что они не отправлены (sent.sent='F'), и отправка файла на FTP-сервер. В последнем подзадании запрос отмечает всю корреспонденцию отправленной. Если на втором этапе, при отправке файла произойдет ошибка, то этот, третий запрос не будет выполнен, заказы останутся в состоянии "не отправлен", и в следующий раз будет предпринята повторная попытка их отправки.