Работа с FTP в 1С

FTP (file transfer protocol)- это просто интернет ресурс с файлами, который позволяет делать с файлами следующее:

  1. Чтение
  2. Копирование
  3. Перемещение
  4. Удаление

Для соединения с сервером нам надо знать его адрес в сети, логин и пароль, затем  скопируем файл с локального диска на ftp:

адрес: myServer.myCompany.ru
логин: myLogin
пароль: myPassword

Код 1C для работы с FTP будет следующий:

АдресФТП = «myServer.myCompany.ru«;
Юзер = «myLogin«;
Пароль «myPassword«;
КаталогФТПКудаКопируем = «/MyFolder/«; // обратите внимание на обратный слэш
ФайлОткудаКопируем = «c:\myFile.txt»;
Попытка
     Сервер = Новый FTPСоединение(АдресФТП,,Юзер, Пароль);
Исключение
     Сообщить(«Не удалось соединиться с ftp — сервером»);
     Возврат;
КонецПопытки;
Сообщить(«Соединение установлено»);
// переходим в нужный каталог на ftp
Сервер.УстановитьТекущийКаталог(КаталогФТПКудаКопируем);
// копируем файл с локального диска на ftp
Сервер.Записать(ФайлОткудаКопируем,  «myFile.txt»);
// копируем этот же файл обратно c FTP на локальный диск и присваиваем ему другое имя
Сервер.Получить(КаталогФТПКудаКопируем«myFile.txt», «c:\myFile_Copy.txt»);
// выводим список всех файлов и папок на FTP
МассивФайлов = Сервер.НайтиФайлы(КаталогФТПКудаКопируем , «*.*»);
Для Каждого Файл Из МассивФайлов Цикл
     Если Файл.ЭтоФайл() Тогда
          Сообщить(«Файл: « + Файл.ПолноеИмя);
     Иначе
          Сообщить(«Папка: « + Файл.ПолноеИмя);
     КонецЕсли;
КонецЦикла;
// удаляем наш файл с FTP
Сервер.Удалить(КаталогФТПКудаКопируем , «myFile.txt»);
// закрываем соединение с FTP
Сервер = Неопределено; 

 

Автоматизация выгрузки последней версии хранилища

В условиях высокой загруженности при коллективной разработке с использованием хранилища 1С часто приходится выгружать последнюю версию конфигурации для отправки/объединения с рабочей базой. Самая частая ошибка разработчика при такой выгрузке — забывают получать последнюю версию из хранилища. Для автоматизации этого процесса можно воспользоваться bat файлом или параметрами командной строки. Пусть у нас есть следующее:

1c: версия 8.3.6.2152

сервер: server, база: base, пользователь: BaseUser, пароль: BasePassword

файловое хранилище: c:\hran, пользователь: HranUser, пароль: HranPassword

папка и имя файла, куда выгружается конфигурация: \\mainServer\MainFolder\_config_.cf

Bat файл (перечень команд) делает следующее:

  1. Удаляет старый файл конфигурации
  2. Получает последнюю версию конфигурации из хранилища
  3. Обновляет конфигурацию БД (накатывает на конфигурацию БД)
  4. Выгружает конфигурацию в файл

Итак — по порядку:

Удаление старого файла конфигурации
del «\\mainServer\MainFolder\_config_.cf«

Получение последней версии конфигурации из хранилища
C:\»Program Files (x86)»\1cv8\8.3.6.2152\bin\1cv8.exe CONFIG /S»server\base» /N»BaseUser» /P»BasePassword» /ConfigurationRepositoryF «c:\hran» /ConfigurationRepositoryN «HranUser» /ConfigurationRepositoryP «HranPassword» /DisableStartupMessages /ConfigurationRepositoryUpdateCfg

Обновление конфигурации БД
C:\»Program Files (x86)»\1cv8\8.3.6.2152\bin\1cv8.exe CONFIG /S»server\base» /N»BaseUser» /P»BasePassword» /ConfigurationRepositoryF «c:\hran» /ConfigurationRepositoryN «HranUser» /ConfigurationRepositoryP «HranPassword» /DisableStartupMessages /UpdateDBCf

Выгружает конфигурацию в файл
C:\»Program Files (x86)»\1cv8\8.3.6.2152\bin\1cv8.exe CONFIG /S»server\base» /N»BaseUser» /P»BasePassword» /ConfigurationRepositoryF «c:\hran» /ConfigurationRepositoryN «HranUser» /ConfigurationRepositoryP «HranPassword» /DisableStartupMessages /DumpCfg «\\mainServer\MainFolder\_config_.cf»

В некоторых случаях можно запустить обработку для выполнения каких либо дополнительных действий, для этого можно в bat файл добавить команду:
C:\»Program Files (x86)»\1cv8\8.3.6.2152\bin\1cv8.exe ENTERPRISE /S»server\base» /N»BaseUser» /P»BasePassword» /DisableStartupMessages /Execute «\\mainServer\MainFolder\obrabotka.epf»

Для того что бы программа закрылась в обработке последней должна вызываться процедура ЗавершитьРаботу();

 

Вывод результата СКД в обработке

На форме обработки есть кнопка и табличный документ и именем «Результат», так же есть макет с названием «Макет». Код, формирующий отчет в табличный документ на форме будет выглядеть следующим образом

&НаКлиенте
Процедура Сформировать(Команда)

СформироватьНаСервере();

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

&НаСервере
Процедура СформироватьНаСервере()

Об = РеквизитФормыВЗначение(«Объект»);
Схема = Об.ПолучитьМакет(«Макет»);
Настройки = Схема.НастройкиПоУмолчанию;
КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
КомпоновщикНастроекДанных.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);

Параметр = КомпоновщикНастроекДанных.Настройки.ПараметрыДанных.Элементы.Найти(«НекоторыйПараметр»);
Параметр.Использование = Истина;
Параметр.Значение = 12345;

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекДанных.ПолучитьНастройки());
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

Результат.Очистить();
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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