gifts2017

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

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

скрипт периодически мониторит папку с файлами автообменов и при появлении в ней нового файла подгружает и отправляет автообмен
скрипт универсальный, список баз и пакетных файлов прописывается в текстовый файл с именем файла скрипта и расширением .lst
Скрипт появился в результате мучений с утилитой nncron, которая использовалась для этих целей. Из-за того, что крон многопоточен, часто случалось, что одновременно стартовало обновление 2 баз - при этом загадочным образом слетали базы из реестра и обновление подвисало на окне ввода пути базы. Если этого не удавалось заметить вовремя, то по принципу домино слетали пути и следующих пришедших автообменов (АО). Кроме того, иногда крону срывало крышу и он начинал запускать подгрузку и отправку автообменов по 2 или 3 (выбранным по его усмотрению) базам непрерывно.
Скрипт на удивление прост - работает уже почти год как часы. Данные об обрабатываемых базах скрипт берет из файла списка с расширением lst.
Пример строки файла списка:
C:\\obmen\\BS21.zip;C:\\obmen\\BS20.zip;\\\\sb-file2\\bases\\Бухгалтерия\\2006\\Бухгалтерия Саратов 2\\;Администратор;1702;c:\\packet\\Bbs2.


Механизм работы АО следующий:
1. Приходит АО по почте. В качестве почтового клиента используется Бат.
2. Бат сортирует письмо в нужную папку и сохраняет файл АО в каталог C:\\obmen\\ (для этого надо настроит правила фильтрации в Бате)
3. Скрипт периодически обрабатывает список баз (одноименный файл с расширением lst).
4. Скрипт мониторит все папки из спика баз и при этом сравнивает время создания файлов входящего и исходящего АО.
5. Если какой-либо из файлов АО не найден, об этом пишется инфа в лог.
6. Если входящий АО свежее, то стартует 1С с пакетным файлом. Опять же, если нет пакетника или базы в реестре, то скрипт ругнется об этом в логе. В пакетнике прописано принять и отправить АО.
7. Скрипт ждет завершения работы 1С с пакетником и переходит к обработке следующей строки списка баз.
8. Скрипт засыпает на 5 минут до следующей проверки.

Если надо добавить еще одну базу, то прописываем ее в 1С (окно старта), добавляем при необходимости правило сортировки в Бат, создаем пакетный файл и добавляем строку для этой базы в файл списка баз. Первые 2 АО (туда-сюда) придется сделать руками, чтобы появились оба файла АО. // Это что касается отдельной базы

Скрипт о своих действиях пишет лог-файл за текущий день (также хранится лог и за предыдущий день)

Поскольку vb-скрипт открыт для доработки, любой может внести свои изменения для собственных хотелок.

Скрипт вы получаете как есть, автор не несет ответственности за возможный ущерб от скрипта.

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

Наименование Файл Версия Размер
Автообмен 1С 113
.1215157623 7,11Kb
25.09.09
113
.1215157623 7,11Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Валерий (VV) 09.07.08 15:35
1. Зачем проверять Бат? В описании вообще про то, что в скрипте используется почтовый клиент, не написано.
2. Почему не удаляются файлы после удачного обмена?
2. Олег Веселов (sml) 09.07.08 17:33
Ой, про Бат я совсем забыл.
Бат установлен почтовым клиентом, а чтобы АО был наверняка отправлен, проверяется, что он работает. У кого АутлЭкспр в кач-ве клиента - посмотрите в процессах название, и поменяейте вместо Бата
Бат выбран из-за того, что у него есть фильтр входящей почты, который позволяет отсортировать письма с АО по папкам (Торговые, Зарплатные, Бухгалтерские) и сохранить вложения в папку на компе.
Аутглюк не советую использовать - он курочит файла АО 1С.

Файлы удалять нельзя, поскольку сравниваются время создания файлов входящего и исходящего АО. Пакетник стартует лишь когда входящий АО свежее исходящего.
3. dolly_ev (Dolly_EV) 10.07.08 06:57
Вот еще бы прописать, чтобы входящий файл сначала ЗАБИРАЛСЯ по указанному пути (локалка),
и только потом СРАВНИВАЛСЯ, если надо - АО, и ОТПРАВЛЯЛСЯ ОБРАТНО по указанному пути
У меня половина баз - удаленные (по почте), половина - в локальной сетке, но сетка на ADSL, поэтому нельзя сделать общий каталог, надо файлик сначала скопировать
А так, несомненный "+"!
4. dolly_ev (Dolly_EV) 10.07.08 07:01
и еще хотелка:
структуру файла баз сделать поудобочитаемей
1. каждое поле в отдельной строке, с наименованием (имя:значение)
2. между блоками (относящимися к одной базе) - какойнить разделитель
вобщем что-то типа prm'а 1С-ного
5. Олег Веселов (sml) 10.07.08 09:12
dolly_ev
структуру файла менять? А зачем?
У меня в этой структуре отсортированы отдельно зарплатные, отдельно бухгалтерские базы. При добавлении новой базы достаточно добавить лишь одну строку. Да и зарплатные от бух баз видно сразу, где отделены (у них различные каталоги файлов АО) - первый параметр строки отличается.

Для локалки.
А разве нельзя в конфигураторе базы снять флажок "использовать электронную почту", а для файлов АО указать ту папку локалки, откуда вы собираетесь копировать?
Или у вас несколько периферийных баз, и для некоторых из них используется локалка, а для остальных почта?
6. dolly_ev (Dolly_EV) 10.07.08 09:47
"Или у вас несколько периферийных баз, и для некоторых из них используется локалка, а для остальных почта? "
Да как раз так, один Центр, несколько периф к нему, и эти несколько периф - 4 штуки - по локалке, 3 - по Интернету
в том и проблема, что скрипт не умеет "тянуть" файл из указанного места... еще раз повторюсь локалка в пределах города через ADSL, соединение не надежное, периодически рвется, потому и требуется перед обменом файл положить на жесткий диск, а не по сети его тянуть уже в момент запуска обмена..
7. dolly_ev (Dolly_EV) 10.07.08 09:56
А по структуре файла - визуально не удобно, когда все поля в одной длинной строке через ; , а блоки - это разные строки
ну и когда есть осмысленное наименование реквизита в самом файле (типа "PathAEin: D:\БлаБла\Блабла") - тоже легче - не надо в случае изменения лезть в шпаргалку, смотреть порядок реквизитов
но это - уже мелочи))
8. Олег Веселов (sml) 10.07.08 10:12
предлагаю установить на один из компов ФТП и использовать бач-файл содержащий строку:
ftp -ivs:in_base.txt ftp.ueh.ru
и периодически его запускать из планировщика. В in_base.txt содержатся команды ФТП:
ldb - это логин к ФТП
ldbldb436 - это пароль
lcd c:\obmen - это путь, куда тянуть файл
cd Obmen - Это выбор папки на ФТП (чувствительно к регистру, если ФТП на линухе)
mget MB3C.zip - это сама команда получения файла с ФТП
quit - завершение сеанса ФТП
9. Светлана (Соня) 28.09.11 11:33
Я так понимаю, что работает это только на файловом варианте.(( Пичаль!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа