Фоновая архивация файлов в 7zip c копированием их на FTP с проверкой контрольной CRC-суммы архива

17.10.12

База данных - Архивирование (backup)

Возникла задача сделать обмен РИБ в 8.2 через FTP. Не пытаясь изобрести велосипед, давно уже использую замечательную программу FTPDrive (www.killprog.com). FTPDrive подключает к системе FTP-ресурс как логический диск, на который можно просто копировать информацию. При этом программа имеет множество настроек и позволяет достаточно быстро подключиться к желаемому ресурсу. Не требует инсталяции.
  Все бы ничего но копировать файлы выгрузки без архивации на FTP неразумно, и появилась проблема - штатный архиватор 1С 8.2 не хотел создавать файлы на FTP-ресурсе и копировать их 1С тоже отказывалась. Тогда был использован вызов консольного архиватора 7zip, но начали жаловаться пользователи на часто появляющееся консольное окно.
  Тогда было написано приложение позволяющее в фоновом режиме архивировать файлы в 7zip с добавлением к имени контрольной CRC-суммы архива и последующей проверкой при распаковке с удалением поврежденных в ходе пересылки файлов.

Скачать файл

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

Наименование По подписке [?] Купить один файл
приложение SevenZipFon.exe (новая версия)
.exe 337,50Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.
собственно приложение SevenZipFon.exe (старая версия)
.1252091002 359,00Kb
88
88 Скачать (1 SM) Купить за 1 850 руб.

    Возникла задача сделать обмен РИБ в 8.2 через FTP. Не пытаясь изобрести велосипед, давно уже использую замечательную программу FTPDrive (www.killprog.com). FTPDrive подключает к системе FTP-ресурс как логический диск, на который можно просто копировать информацию. При этом программа имеет множество настроек и позволяет достаточно быстро подключиться к желаемому ресурсу. Не требует инсталяции.

   Все бы ничего но копировать файлы выгрузки без архивации на FTP неразумно, и появилась проблема - штатный архиватор 1С 8.2 не хотел создавать файлы на FTP-ресурсе и копировать их 1С тоже отказывалась. Тогда был использован вызов консольного архиватора 7zip, но начали жаловаться пользователи на часто появляющееся консольное окно.

   Вместо FTPDrive можете использовать любую другую программу с похожим функционалом, например: WebDrive (www.webdrive.com), но он платный.

   По сути приложение SevenZipFon.exe занимается архивацией/распаковкой архивов 7zip и копированием в фоновом режиме результатов, что не привязывает его к FTP, т.е. это может быть VPN и что угодно еще (лишь бы можно было указать путь к файлу-источнику и к файлу-получателю ).

   Тогда было написано приложение позволяющее в фоновом режиме архивировать файлы в 7zip (запуск программы SevenZipFon.exe с ключами -a и -e ). В последствии, практика показала, что архивы время от времени приходят поврежденные и чтобы исключить проблемы с их обработкой был добавлен расчет контрольной суммы (CRC) после формирования архива и добавление этой контрольной суммы к имени архива (при запуске программы SevenZipFon.exe с ключем -ac). Соответственно при извлечении файлов из архива с контролем CRC-сумм надо использовать при запуске программы SevenZipFon.exe ключ -ec.

Приложение необходимо запустить с тремя параметрами.

Порядок использования:
  SevenZipFon  [ключ]  [файл-источник]  [файл-получатель]

Список ключей:
  -a  : ключ архивации;
  -e  : ключ распаковки;
  -ac  : ключ архивации с расчетом CRC-суммы и добавлением ее к имени файла (после знака ~);
  -ec  : ключ распаковки с предварительным расчетом CRC-суммы и удалением файла в случае не совпадения;

Примеры :
  SevenZipFon.exe -a "C:\test.xls" "Z:\test.7z"  - это для архивации файла 

  SevenZipFon.exe -e "Z:\test.7z" "C:\test.xls" - это для распаковки файла

  SevenZipFon.exe -ac "C:\test.xls" "Z:\test.7z"  - это для архивации файла с расчетом CRC-суммы и добавлением ее к имени файла (на выходе будет создан файл с именем, н-р: test~122714201.7z, где число 122714201 - это CRC-сумма для файла архива test.7z).

  SevenZipFon.exe -ec "Z:\test~122714201.7z" "C:\" - это для распаковки с предварительным расчетом CRC-суммы и удалением файла в случае не совпадения.

Как видно из примеров в качестве источника и приемника указываеются полные пути.

Приложение при архивации сначала упаковывает файл во временный каталог, а затем копирует его по указанному пути.

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

При этом в трее отображается на желтом фоне ход процесса в процентах:

- при архивировании - красные цифры и красная индикаторная полоска;
- при копировании полученного архива в указанное место назначения - черные цифры и красная индикаторная полоска;
- при копировании архива из указанного места во временную папку (перед распаковкой) - черные цифры и синяя индикаторная полоска;
- при распаковке архива в указанное место назначения - синие цифры и синяя индикаторная полоска.

SevenZipFon.exe не требует сторонних библиотек, включая библиотеки 7zip.

Пример использования приложения SevenZipFon.exe в 1С 8.2 (конфигурация самописная):

1. В конфигураторе создать общий макет SevenZip и поместить в него файл SevenZipFon.exe

2. Привожу пример функции для извлечения приложения из общего макета SevenZip :

Функция Получить7ZipФоновый() Экспорт
    пПапкаДляРобота=СокрЛП(Константы.ПапкаДляФайловРобота.Получить());
    Если пПапкаДляРобота="" Тогда
        пПапкаДляРобота=СокрЛП(КаталогВременныхФайлов());
    КонецЕсли;    
    Если Лев(пПапкаДляРобота,1)<>"\" Тогда
        пПапкаДляРобота=пПапкаДляРобота+"\";
    КонецЕсли;
    Результат = "";
    Попытка
        ZIPexe = пПапкаДляРобота + "SevenZipFon.exe";
        Макет = ПолучитьОбщийМакет("SevenZipFon");
        Макет.Записать(ZIPexe);
        Результат = ZIPexe;
    Исключение
        Сообщить("Ошибка сохранения файла: SevenZipFon.exe в каталог: " + пПапкаДляРобота, СтатусСообщения.ОченьВажное);
    КонецПопытки;
    Возврат Результат;
КонецФункции  

 

3. Привожу пример процедуры архивации:

Процедура АрхивироватьФайлВФоне(ппЧтоАрхивируем,ппЧтоПолучаем) Экспорт
    ппЧтоПолучаем    = СтрЗаменить(ппЧтоПолучаем,"/","\");
    ппЧтоПолучаем    = СтрЗаменить(ппЧтоПолучаем,"\\","\");    
    ппЧтоАрхивируем = СтрЗаменить(ппЧтоАрхивируем,"\\","\");
    ппЧтоАрхивируем = СтрЗаменить(ппЧтоАрхивируем,"/","\");
    
    пПапкаДляРобота=СокрЛП(Константы.ПапкаДляФайловРобота.Получить());
    Если пПапкаДляРобота="" Тогда
        пПапкаДляРобота=СокрЛП(КаталогВременныхФайлов());
    КонецЕсли;    
    Если Лев(пПапкаДляРобота,1)<>"\" Тогда
        пПапкаДляРобота=пПапкаДляРобота+"\";
    КонецЕсли;
    
    Получить7ZipФоновый();
    СтрокаЗапуска = пПапкаДляРобота+"SevenZipFon.exe -ac " + """" + ппЧтоАрхивируем + """ """ + ппЧтоПолучаем + """";
    ЗапуститьПриложение(СтрокаЗапуска, пПапкаДляРобота, истина);
КонецПроцедуры

4. Привожу пример процедуры распаковки:

Процедура ИзвлечьФайлВФоне(ппЧтоИзвлекаем,ппКудаИзвлекаем) Экспорт
    ппЧтоИзвлекаем    = СтрЗаменить(ппЧтоИзвлекаем,"/","\");
    ппЧтоИзвлекаем    = СтрЗаменить(ппЧтоИзвлекаем,"\\","\");    
    ппКудаИзвлекаем = СтрЗаменить(ппКудаИзвлекаем,"\\","\");
    ппКудаИзвлекаем = СтрЗаменить(ппКудаИзвлекаем,"/","\");
    
    пПапкаДляРобота=СокрЛП(Константы.ПапкаДляФайловРобота.Получить());
    Если пПапкаДляРобота="" Тогда
        пПапкаДляРобота=СокрЛП(КаталогВременныхФайлов());
    КонецЕсли;    
    Если Лев(пПапкаДляРобота,1)<>"\" Тогда
        пПапкаДляРобота=пПапкаДляРобота+"\";
    КонецЕсли;
    
    Получить7ZipФоновый();
    СтрокаЗапуска = пПапкаДляРобота+"SevenZipFon.exe -ec " + """" + ппЧтоИзвлекаем + """ """ + ппКудаИзвлекаем + """";
    ЗапуститьПриложение(СтрокаЗапуска, пПапкаДляРобота, истина);
КонецПроцедуры 

  

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12973    100    46    

103

SALE! 10%

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

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    143448    823    297    

428

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    168474    345    279    

381

SALE! 10%

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

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.20.x), также подходят для релиза 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    53596    236    73    

192

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.237.x) и БП 3.0 (3.0.166.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    24893    175    51    

133

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    37315    99    66    

95

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    81643    325    253    

277

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    25763    25    1    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Diversus 2331 07.09.09 10:49 Сейчас в теме
Единственные минус FTPDriva - не смог настроить вход через прокси :(
Конат; +1 Ответить
4. Ivon 676 09.09.09 11:14 Сейчас в теме
(1). Для этого используй еще одну прогу - httport. она позволяет с любым ресурсом работать через прокси. В настройках указываешь локальный порт, прокси, удаленный адрес, удаленный порт. Для FTP нужно настроить 21 и 20 порты. В FTPDrive указываешь адрес FTP 127.0.0.1. И все будет работать. Так же можно мепить SMTP, POP3 и т.п.
5. Ivon 676 09.09.09 11:16 Сейчас в теме
2. kirillkr 29 09.09.09 08:40 Сейчас в теме
Неужели в типовых конфигурациях нет обмена через ftp и сжатие с помощью встроенных функций zip?
Scag; st2009st; +2 Ответить
3. st2009st 09.09.09 10:13 Сейчас в теме
"начали жаловаться пользователи на часто появляющееся консольное окно" параметры запуска настраивать нужно, что бы не появлялось, все это стандартно решаемо и без левых утилит
6. o2005 69 19.09.09 11:07 Сейчас в теме
(3). "параметры запуска настраивать нужно, что бы не появлялось, все это стандартно решаемо и без левых утилит"
Ссылку на описание покажи пожалуйста.
8. o2005 69 21.09.09 13:02 Сейчас в теме
Консольное окно архиватора 7zip скриптом на vbs не спрячешь
9. vec435 17 07.12.12 10:02 Сейчас в теме
новый подход-это хорошо. а стандартные?
ЧтениеZIP=Новый ЧтениеZipФайла
ЧтениеZIP.ИзвлечьВсе(каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);

Архив = Новый ЗаписьZIPФайла("C:\" + Выборка.Ссылка + ".zip",,,МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный);
Архив.Добавить("C:\price.spr");
Архив.Записать();

ФТП = Новый FTPСоединение("111.222.1.2", , "user", "passw");
МассивФайлов = ФТП.НайтиФайлы("", "po*.zip");
ФТП.Записать("C:\load.flz", "load_" + Выборка.Ссылка+ ".flz");
ybatiaev; cmd_vasec; +2 Ответить
10. o2005 69 07.12.12 10:33 Сейчас в теме
Основная идея предложенного решения это расчет контрольной суммы при формировании архива и добавление его к имени архива. А при расчете контрольной суммы архива при получении происходит удалением некорректных архивов.
В противном случае, если приходит некорректный архив может происходить сбой архиватора и соответственно остановка обмена.
То есть предложенное решение предназначено для устранения влияния сбоев при пересылке файлов.
Кроме того архиватор 7zip обладает, на сегодняшний день, лучшими показателями по сжатию.
Оставьте свое сообщение