Фоновая архивация файлов в 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-суммы архива и последующей проверкой при распаковке с удалением поврежденных в ходе пересылки файлов.

Скачать исходный код

Наименование Файл Версия Размер
приложение SevenZipFon.exe (новая версия)
.exe 337,50Kb
14
.exe 337,50Kb 14 Скачать
собственно приложение SevenZipFon.exe (старая версия)
.1252091002 359,00Kb
88
.1252091002 359,00Kb 88 Скачать

    Возникла задача сделать обмен РИБ в 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 " + """" + ппЧтоИзвлекаем + """ """ + ппКудаИзвлекаем + """";
    ЗапуститьПриложение(СтрокаЗапуска, пПапкаДляРобота, истина);
КонецПроцедуры 

  

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

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

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

50722 45650 руб.

04.08.2015    160161    367    267    

348

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135445    728    291    

391

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

15.12.2021    20520    136    38    

92

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

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

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

38500 34650 руб.

15.04.2019    68750    179    139    

111

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

23.07.2020    46673    199    64    

162

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

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

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

48278 43450 руб.

03.12.2020    34361    81    58    

78

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

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

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

50722 45650 руб.

31.10.2014    231777    124    327    

296

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

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

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67673    41    122    

46
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Diversus 2310 07.09.09 10:49 Сейчас в теме
Единственные минус FTPDriva - не смог настроить вход через прокси :(
Конат; +1 Ответить
4. Ivon 673 09.09.09 11:14 Сейчас в теме
(1). Для этого используй еще одну прогу - httport. она позволяет с любым ресурсом работать через прокси. В настройках указываешь локальный порт, прокси, удаленный адрес, удаленный порт. Для FTP нужно настроить 21 и 20 порты. В FTPDrive указываешь адрес FTP 127.0.0.1. И все будет работать. Так же можно мепить SMTP, POP3 и т.п.
5. Ivon 673 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 62 19.09.09 11:07 Сейчас в теме
(3). "параметры запуска настраивать нужно, что бы не появлялось, все это стандартно решаемо и без левых утилит"
Ссылку на описание покажи пожалуйста.
8. o2005 62 21.09.09 13:02 Сейчас в теме
Консольное окно архиватора 7zip скриптом на vbs не спрячешь
9. vec435 15 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 62 07.12.12 10:33 Сейчас в теме
Основная идея предложенного решения это расчет контрольной суммы при формировании архива и добавление его к имени архива. А при расчете контрольной суммы архива при получении происходит удалением некорректных архивов.
В противном случае, если приходит некорректный архив может происходить сбой архиватора и соответственно остановка обмена.
То есть предложенное решение предназначено для устранения влияния сбоев при пересылке файлов.
Кроме того архиватор 7zip обладает, на сегодняшний день, лучшими показателями по сжатию.
Оставьте свое сообщение