gifts2017

Скрипты для убыстрения обмена

Опубликовал Николай (nikolka75) в раздел Администрирование - Распределенная БД (УРИБ, УРБД)

Во славу Божью!
Порою при изменении Мд файла меняется совсем мало данных а пересылается вес Мд. Хорошо  это или плохо ? Мелочь скажет кто то подумаешь 4 метра ...
Да это действительно так но не для всех.
Так у нас есть филиал там связь очень плохая и пересылка этого файла занимает полдня. (причем часто она прирывается и приходится начинать обмен заного...).
Что поделаешь скажет ктото такова жизнь...
Но оказывается все не так страшно все решается просто и легко!
Основой данной работы послужила программа JojoDiff за что большая благодарность её автору.
Что представляет из себя его программа можно посмотреть:
http://jojodiff.sourceforge.net/
Посуществу это программа
1) сравнивает два бинарных файла файла и выводит различия между ними в файл
2) на основании этого файла и первого из файлов она может востановить второй файл (пропатчить его).
Осталась мелочь прикрутить это к 1С что  и сделано.

Сделаны два скрипта:
ПослеВыгрузкиВИсточнике .vbs
ПередЗагрузкойвБазуВПриемнике.vbs
Первый скрипт (ПослеВыгрузкиВИсточнике) разархивирует zip файл обмена с Мд и другими файлами. Создает файл который содержит только изменения Мд пустьэто будет файл мдд. И запаковывает все заново. (этот файл можно пересылать).

Второй скрипт (ПередЗагрузкойвБазуВПриемнике) разархивирует zip файл обмена с Мдд и другими файлами на основании текущего Мд и Мдд создается реальный мд.Потом все это запаковывается заново. (теперь это можно загружать в 1С). Для разархивирования и архивирования использовался архиватор 7-zip.exe вроде 1С принимает файлы зархивирванные ним (проведено несколько экспериментов 1С посчитала файлы родными).

При тестировании пропатченый файл также сравнивался с исходным с помощью 1С утилиты сравнения файлов

1С сказало что бинарные файлы идентичны так что можно предположить что все работает хорошо.

Несколько замечаний:

0) все файлы которые нужны уже есть в архиве

(это 7za.exe-архиватор ,jdiff-w32.exe регистратор изменений и jpatch-w32.exe -патчер на основе изменений)

так что все что вам нужно уже есть надо просто немного настроить.

1) считаем что вы запускаете скрипты из каталога C:\1cv7 если это не так то измените InitialDir="C:\1cv7\"

2) Pref="BPC" это префикс ваших zip архивов при обмене.

3) FolderPath =это каталог где хранятся файлы обмена

4) FilesOldMD= это каталог в котором хранится старый "мд" (помещать туда файл нужно только один раз, в дальнейшем после обмена старый файл мд заменяется на текущий).

5) В дальнейшем постараюсь сделать файл инсталятор который позволяет легко настроить скрипты любому.

Будут вопросы пожелания пишите.


Удачи всем кто попробует применить все это в рабочем режиме !

Скачать файлы

Наименование Файл Версия Размер
- 70
.1232990912 307,80Kb
25.09.09
70
.1232990912 307,80Kb Бесплатно
- 78
.1233042589 294,13Kb
25.09.09
78
.1233042589 294,13Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сhe Burashka (CheBurator) 26.01.09 23:00
такс.. где-то я уже это читал....
4. Николай (nikolka75) 27.01.09 10:48
это архив ! вчера небыло времени добавить зип сейчас добавлю.
5. Евгений Стоянов (quick) 29.01.09 14:34
что то страшновато как то такие вещи делать с 1С.. мало ли... обидится и начнет ломаться.
6. MadInvalid (MadInvalid) 18.03.09 13:53
Страшно конечно, но и страшно хочется все-таки попробовать такую вещь внедрить :)
7. Михаил Топоров (mihast) 21.03.09 16:09
Спасибо за ссылку. Классно использовать для переноса 8-ки, файла 1cv8.1cd он обычно большой. У меня около 500 мб. За неделю изменений накапливается на 30 мб. После сжатия 7zip-ом остается около 8-9 мб.
Вот такой размер имеет смысл тягать удаленно по инету. А не пол гектара :-)

Правда я сжимаю более свежей их утилитой от 2006 года (версия jdiff от 2002 года) http://sourceforge.net/projects/xdelta/ Она быстрее и файл различий компактнее.
Командная строка для создания ФайлаРазницы такая:
xdelta3.exe -e -9 -s СтарыйФайл НовыйФайл ФайлРазницы
здесь -9 максимальное сжатие, если не указывать, работает быстрее
Командная строка для создания НовогоФайла такая:
xdelta3.exe -d -s СтарыйФайл ФайлРазницы НовыйФайл

Повторю, что ФайлРазличий с помощью 7zip упаковывается еще на 30%
8. Михаил Топоров (mihast) 21.03.09 16:14
Да и еще, вместе с файлом разницы кладу в архив файл MD5 для НовогоФайла. Это чтобы подстраховаться.
Делаю такой перенос "в ручном режиме", т.к. необходимость возникает не часто. Поэтому скриптов пока не сделал.