gifts2017

Скрипт для автоматического обновления баз 1С (загрузка с сайта, применение и др)

Опубликовал Максим Шадрин (mixperm) в раздел Администрирование - Сервисные утилиты

Скрипт для автоматической загрузки и обновления баз 1С (скачивание, обновление, тестирование, выгрузка cf, dt, загрузка в 1CD, отправка отчета по email)

Скрипт настраивается под определенную базу. Можно файловую, можно серверную. Через COM соединение определяется версия текущей конфигурации, скачивается из открытой части с серверов 1С файл xml по которому определяется последняя подходящая версия конфигурации которую нужно качать для обновления текущей. Далее используя логин и пароль для доступа к серверу обновления качается подходящее последнее обновление и так поочередно скачиваются и применяются к конфигурации все обновления, промежуточно создаются резервные копии. Можно включить тестирование и реструктуризацию базы без исправления ошибок. Отправляется отчет о текущей версии по электронной почте. Открытый код скриптов, написанный на VBS и в командной строке. Для полной автоматизации достаточно указать необходимые параметры и добавить bat файл в планировщик. Если необходимо обновлять несколько баз, сделайте копию bat файла и положите рядом. Используются утилиты wget, unzip, blat скачанные с официальных сайтов. Скрипт не готов сразу работать, необходимо умелыми ручками править параметры. Не забываем зарегистрировать COM компоненту V83.COMConnector (регистрации dll не достаточно. Гуглите если не знаете как) если используются 8.2 программные файлы, то компоненту V82.COMConnector и исправить ее название в com.vbs и comf.vbs. Для редактирования параметров рекомендую AkelPad и сохранять в 866 OEM кодировке c указанием в начале bat файла chcp 866. Тогда будет корректно отображаться русский язык и читаться пути в кирилице. Либо сохрянять в 1251 ANSI кодировке, chcp 1251, можно править в простом блокноте, но тогда русские буквы могут не отображаться корректно. Если какие-то вопросы, пишите в личку. Не забываем ставить лайк ;)

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

Наименование Файл Версия Размер Кол. Скачив.
1CUpdate версия 2.6
.rar 735,80Kb
13.11.14
152
.rar 2.6 735,80Kb 152 Скачать
1CUpdate версия 2.5
.rar 729,33Kb
16.05.14
35
.rar 2.5 729,33Kb 35 Скачать
1CUpdate версия 2.4
.rar 734,20Kb
16.05.14
28
.rar 2.4 734,20Kb 28 Скачать
1CUpdate версия 2.3
.rar 730,25Kb
16.05.14
18
.rar 2.3 730,25Kb 18 Скачать

См. также

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

Комментарии

1. Максим Шадрин (mixperm) 16.12.13 13:56
обнаружена проблема при COM обращении к файловой базе содержащей пробелы. Строка подключения обрезается до пробела. Пытался вставить кавычки не помогает. Может кто знает как исправить?
2. Максим Шадрин (mixperm) 17.12.13 10:20
Сделал более понятную настройку параметров. Теперь в скрипте выбирается параметр файловая или серверная база. Добавил утилиту blat для отправки отчетов по электронке. Для себя еще делал выгрузку cf, dt, и загрузка в 1CD. Короче все это создавал для того, чтобы всегда под рукой имелся актуальный 1CD для новых файловых баз, актуальный dt для создания новой базы на сервере и актуальный cf для оперативного обновления старых баз. На элетронке сообщение об актуальной версии))) Теперь все само собой делается. (кстати имеется специальная конфигурация для администрирования и массового обновления баз, но она еще не доработана, хотя и работает, просто не товарного вида)
3. Максим Шадрин (mixperm) 24.12.13 09:12
Для исправления ошибки связанной с пробелом в пути к базе в скрипте comf.vbs изменить строку str="File="&Wscript.Arguments(0)&";Usr="&Wscript.Arguments(1)&";pwd="&Wscript.Arguments(2)
на
str="File="""&Wscript.Arguments(0)&""";Usr="""&Wscript.Arguments(1)&""";pwd="&Wscript.Arguments(2)
4. Алексей Рябцев (Хегга) 26.02.14 08:57
Сама идея отличная, но настройки умелыми ручками сам я не осилил. С админом - тоже не осилил.
Вероятно дело в разных целях:
1. Автору нужно было ежедневное автоматическое скачивание последнего релиза. Тогда алгоритм "посмотрели на сервер, сравнили конфы, если не последняя то скачали, потом распаковали, потом накатили, потом сохранили конфу в cf, потом сохранили базу в dt, потом накатили на файловую базу, потом рапортовали по e-mail хозяину "Все готово, хозяин" - логичен.
2. А я вообще почти бухгалтер, у меня в обед на столе три базы КА, которые не обновлены с октября 2012 года, и паникующий бухгалтер, которому они нужны обновленные к вечеру.
Причем в заначке на винте все нужные релизы, в шаблонах, уже в cfu лежат, их нужно просто накатить без вопросов.

Радует, что в батнике можно отключить часть действий, но за счет глобальности замысла автора даже это не помогло.

Я смотрю плюсы то у статьи есть, значит у кого-то руки более прямые, чем у нас с админом. И то хорошо.
5. Максим Шадрин (mixperm) 26.02.14 09:35
(4) Хегга, согласен параметров много, но это и придает универсальность скрипту. Готов помочь настроить. В личку вышлите мне параметры всех баз для обновления я вышлю настроенный батник (название конфигурации, путь к базе или имя сервера и название базы если серверная, логин и пароль сами пропишите. Хотя если разбираться в проблемах, то скорей всего ваша проблема это кодировка файла. Батник сохранен в OEM 866 кодировке для поддержки русского языка в путях и корректного отображения процесса обновления. В обычном блокноте отредактировать не получится если есть русские буквы в пути т.к. при сохранении будут записаны неверные данные. Я использовал AkelPad для редактирования. Выложу обновление в кодировке 1251 где добавил еще тестирование (реструктуризация) баз без исправлений, только в командной строке могут отображаться каракули вместо русского языка, но работать должно
6. Максим Шадрин (mixperm) 26.02.14 10:11
Выложил версию 2.4 в кодировке 1251 для редактирования в простом блокноте. Русские буквы рекомендую исправить на латиницу для корректного отображения хода обновления. Добавлено тестирование базы.
7. Артур Аюханов (artbear) 05.03.14 12:51
8. Артур Аюханов (artbear) 05.03.14 14:11
(0) Интересная реализация, практически все через bat-файлы и консольные утилиты + чуть-чуть скрипт-кодинга :)
9. Александр Aaa (connectoid) 12.03.14 08:21
Отличная работа, давно искал, даже начинал сам делать, правда на Delphi, но этот вариант гораздо проще и универсальнее. Поправил немного под себя, попробовал на одной из баз, все работает.
Можно сделать простенький GUI-шный конфигуратор, который сгенерирует батник по заполненным пользователем данным, но это для тех кто совсем уж не хочет вникать.
10. Максим Шадрин (mixperm) 14.03.14 07:40
Последние обновления для Бухгалтерии 3.0 качаются только при настройках версии платформы 83. Так же не забываем менять настройки путей к программникам при обновлении платформы
11. Александр Aaa (connectoid) 15.03.14 07:56
Может кто знает почему по данной ссылке http://downloads.1c.ru/ipp/ITSREPV/V8Update/Configs/budgethrm/10/82/v8upd11.zip находится список релизов ЗиКБУ только до версии 1.0.28.1 от 2011 года?
И как получить список актуальных релизов для данной конфигурации?
12. Александр Aaa (connectoid) 15.03.14 08:11
13. Максим Шадрин (mixperm) 15.03.14 15:36
(11) connectoid, http://downloads.1c.ru/ipp/ITSREPV/V8Update/Configs/BudgetHRM/10/82/v8upd11.zip Как это ни странно надо тоже с учетом регистра вводить
14. Александр Aaa (connectoid) 15.03.14 19:02
(13) Не странно, ибо сервер на никсах у них, видимо в 2011 создали новую папку BudgetHRM
15. Андрей Хабибулин (teflon) 14.05.14 23:23
еще бы придумать как пароли не светить в открытом виде, например, указывая их в скрипте в хэшированном виде, и в процессе работы скрипта передавать их на сервер обновления с помощью какой-нибудь утилиты, производящей преобразование хэшированного значения пароля к виду, понимаемому сервером обновления.
а автор молодчага, респект.
16. Андрей Хабибулин (teflon) 15.05.14 02:43
неплохо бы научить скрипт сначала проверять стандартный каталог с шаблонами на наличие там обновлений, а уже затем, в случае отсутствия таковых, идти за ними на сервер обновления, и скачав обновления с сервера, положить их в стандартный каталог с шаблонами.
PS: хотя, наверное это лишнее.
17. Максим Шадрин (mixperm) 15.05.14 12:44
(16) teflon, Принято... 1. Сделаю отдельную переменную пути для скачивания обновлений в стандартный каталог с шаблонами. 2. Подумаю как можно хранить пароли в зашифрованном виде, но из меня плохой программист думать буду долго.
18. Андрей Хабибулин (teflon) 15.05.14 20:34
Не удается обновить скриптом Управление торговлей ред. 11.1, если точнее, то не обновляется база данных.
Бухгалтерия предприятия ред. 3.0 и ред. 2.0, Зарплата и Управление Персоналом ред. 2.5 обновляются прекрасно.
У кого-нибудь есть положительный опыт обновления Управление торговлей ред. 11.1 в пакетном режиме?
19. Максим Шадрин (mixperm) 16.05.14 07:21
(18) teflon, Сколько копался в интернете, вроде отличий для разный конфигураций нет. Отличия только для файловой и серверной базы в параметрах запуска. Обычно все проблемы с ошибками это блокировка базы пользователем или регламентными заданиями в случае серверной базы.
20. Максим Шадрин (mixperm) 16.05.14 07:32
Обновление 2.5
- добавлен параметр для указания пути хранения шаблонов tmplts. Пытался сделать считывание из стандартного 1CUpdate.cfg, но оказалось у него кривая кодировка и не стал заморачиваться с перекодировками.
- добавлен параметр для указания пути к бэкапу
- добавлена проверка успешности создания бэкапа (присутствует файл или нет). (Забыл добавить к имени файла дату создания, потом как-нибудь, если не забуду опять)
- добавлена проверка существования папок куда сохраняются бэкап и обновления
- убраны лишние сообщения при отключенных доп. опций для создания cf, выгрузки dt и загрузки 1CD
Планируется добавить хранение паролей в ввиде хэша, но для меня это сложная задачка не обещаю быстро сделать.
dikd; adhocprog; Теософ; artbear; teflon; +5 Ответить 1
21. o p (filin2009) 30.06.14 13:29
Неплохо было бы предупредить, что антивирус "Касперский" определяет одну из утилит, входящих в комплект поставки Blat
как потенциально опасное ПО (не вирус, SMTP-клиент)
обнаружено: not-a-virus:Client-SMTP.Win32.Blat.ca
файл: blat.exe blat.dll
22. Максим Шадрин (mixperm) 30.06.14 13:44
(21) filin2009, Первый раз слышу. У меня НОД32 ничего не говорил... да и судя по касперскому not-a-virus Client-SMTP чем собственно и является данная утилита. По мне дак лучше сторонняя популярная разработка, чем своя утилита, когда не понятно что она еще кроме делает.
23. Максим Шадрин (mixperm) 13.11.14 12:24
В ноябре изменился формат xml файла, по которому определяется версия для скачивания обновления. Привожу текст исправленного скрипта vbs.vbs можно сделать полную замену в блокноте
if Wscript.Arguments.count = 0 then Wscript.Quit
With CreateObject("Scripting.FileSystemObject").OpenTextFile(Wscript.Arguments(0))
xmlstr=.ReadAll
.Close
End With
Dim A(1000,1000)
i=0
j=0
tmpstr=xmlstr
While InStr(xmlstr, "<v8u:version") or InStr(xmlstr, "<v8u:target") <> 0
verpos=InStr(xmlstr, "<v8u:version")
tarpos=InStr(xmlstr, "<v8u:target")
if (verpos<tarpos) and (verpos<>0) then
i=i+1
j=0
cutstr=Mid(xmlstr, verpos)
cutstr=Mid(cutstr, InStr(cutstr, ">")+1)
xmlstr=cutstr
cutstr=Mid(cutstr, 1, InStr(cutstr, "<") -1)
A(i,j)=trim(cutstr)
Else
j=j+1
cutstr=Mid(xmlstr, tarpos)
cutstr=Mid(cutstr, InStr(cutstr, ">")+1)
xmlstr=cutstr
cutstr=Mid(cutstr, 1, InStr(cutstr, "<") -1)
A(i,j)=trim(cutstr)
End If
Wend
For i=1 to 1000
For j=1 to 1000
If A(i,j)=Wscript.Arguments(1) then
ver=A(i,0)
End if
Next
Next
If ver="" then
ver=Wscript.Arguments(1)
End If
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(Wscript.Arguments(2), True)
tf.Write(ver)
tf.Close
Set tf = fso.CreateTextFile(Wscript.Arguments(3), True)
ver=replace(ver, ".", "_")
tf.Write(ver)
tf.Close
Wscript.Quit
24. Максим Шадрин (mixperm) 13.11.14 13:55
Обновление 2.6
1. Внесено исправление указанное постом выше
2. Исправление в пути неправильно считывающее наличие уже скаченного обновления с последующим запросом перезаписи
строка
if not exist %temp%\%verversion%\ %temp%\wget.exe --directory-prefix=%temp%\

исправлена на
if not exist %temp%\%type%\%verversion%\ %temp%\wget.exe --directory-prefix=%temp%\

Данные исправления вы можете внести сами не скачивая снова
P.S. если честно я уже и не помню какие изменения вносил, просто это мой рабочий вариант с удаленными паролями
25. Максим Воржев (max_vorzhev) 07.02.15 23:08
Добрый вечер. Не могу понять. Все настроил правильно (вроде). Скрипт видит базу. Определяет ее версию конфигурации. Скачивает новую версию. На этом все! Открываю конфу - ничего не обновилось!
Прикрепленные файлы:
26. Сергей Романов (ispan) 11.02.15 22:30
(20) mixperm, Привет.
обновлять будет из каталога обновлений (есть установленные обновления на компе)? если да, то помоги файлик настроить :
где прописать путь к каталогу обновлений
27. Роман Ша (Shamzelia) 16.02.15 17:16
Проблема такая

Скачали...
Для продолжения нажмите любую клавишу . . .
checkdir: cannot create extraction directory: C:/1CUpdate/bin/Accounting/2.0.64
.9
Для продолжения нажмите любую клавишу . . .


Уже утютюхался понимать от чего косяк....

Пробовал напрямую с правами админа... все тоже самое...
28. Роман Ша (Shamzelia) 17.02.15 03:05
Разобрался )
Решил проблему добавлением строки md.....

Наткнулся на новую...
1-я Не всегда делает бекап
2-я Проблема с обновлением бд на сервере т.к. есть либо активные блокировки либо активные сеансы
3-я Нужен лог по каждой базе(батнику) в виде файла (полезная инфа: начало, конец, результат или что за ошибка)

Думаю как выкидывать пользователей....
29. Роман Ша (Shamzelia) 18.02.15 00:18
max_vorzhev

По скрину у тебя таже ошибка как у меня.
Проблема в том что unrar.exe не может создать директорию для распаковки архива

Я решил эту задачу путем добавления строки создания дириктории

echo Скачали...
md %temp%\%type%\%verversion%\
if exist %temp%\1cv8.zip %temp%\unzip.exe -q %temp%\1cv8.zip -d %temp%\%type%\%verversion%\

и тогда ошибка как на скрине исчезает...

Будут вопросы пиши ;-)

Я вроде со всеми вопросами разобрался
30. Максим Воржев (max_vorzhev) 18.02.15 10:43
(29) Shamzelia, Спасибо большое! Все получилось!)
31. Роман Ша (Shamzelia) 20.02.15 17:51
Джентльмены, а может быть можно реализовать подобный алгоритм для платформы???

Я готов принять участие и тестирование....
32. Роман Ложкин (webester) 28.02.15 13:59
(31)У платформы это реализовывается вроде как средствами самой плафтормы, тонкий клиент точно, а вот толстый не помню.
33. Максим Шадрин (mixperm) 06.03.15 14:18
(25) max_vorzhev, добрый день. Прошу прощения за столь поздний ответ. Видимо проблема решилась без меня.
34. Максим Шадрин (mixperm) 06.03.15 14:38
(31) Shamzelia, я пытался заставить своего брата сделать из моего скрипта нормальную конфу для обновления. Конфа рабочая есть, но не доделана и заброшена. Конфа может только обновлять (в данный момент постоянно обновляю конфой 150+ баз), скачивать и т.п. не может (скачиваю скриптом).
35. Максим Сергеевич (Makrushin) 14.03.15 23:30
В чем может быть проблема? Подскажите пожалуйста
36. Максим Сергеевич (Makrushin) 15.03.15 12:41
Ошибка исчезла после того как в базе был создан пользователь с паролем. Видимо скрипт не принимает пустые значения baseuser и basepass
37. Nikita Bal' (Buхter) 18.03.15 04:31
(34) mixperm, Добрый день. Можете поделиться опытом обновления 150+ баз? Может вы где-то уже выкладывали данную разработку?
38. Максим Шадрин (mixperm) 25.03.15 15:02
(35) Makrushin, скорее всего из-за латиницы в пути
39. Максим Шадрин (mixperm) 25.03.15 15:05
Вопросы на емаил mixperm(сабака)yandex.ru
40. Sergey Фамилия (sergey279) 22.04.15 09:19
Спасибо!, давно не получал такого удовольствия от ковыряния bat-ника. (В far красивая тоже разукрашка)
41. Андрей Овсянкин (Evil Beaver) 30.06.15 17:16
Если мне не изменяет память, то такой скрипт (правда на JScript) уже есть в любой типовой конфигурации, в штатном механизме проверки обновлений. Сидит где-то в макетах, запускается, скачивает все, что нужно, обновляет релиз и снова запускает базу.
42. Alexandr Kuritsyn (hibico) 30.06.15 18:18
(31) Shamzelia, (37) Buхter
Гляньте, может моя подойдет: Автоматизированное обслуживание информационных баз 1С версий 7.7 и 8.Х, тестирование, обновление, архивирование и т. д.

P.S. Странно. Публикация от 2013 года. Когда публиковал свою, плотно рылся поиском по Инфостару и данной публикации не увидел. Сегодня случайно нашел.
43. Максим Шадрин (mixperm) 01.07.15 07:17
(42) hibico, У меня скрипт автоматически определяет какую версию качать для обновления и скачивает, и так поочередно, промежуточно делая бэкапы. bat файл размещается в планировщик заданий и никакого ручного кликанья не надо. Править bat файл приходится только когда меняется релиз платформы и то критично только для серверных баз. Кстати да.. поддерживает серверные базы
44. Alexandr Kuritsyn (hibico) 01.07.15 13:31
(43) mixperm,
Извини, но я никак не хотел принижать твою разработку (если не заметил, я даже плюсанул).
В своё время я сам активно пользовался bat-файлами.
Это пользователям решать какая разработка им больше подходит.

Кстати. У меня программа сама проверяет наличие новых обновлений, определяет последовательность обновлений, скачивает (естественно игнорируя ненужные), последовательно обновляет конфу, затем ИБ, также запускается обработка обновления данных ИБ (то же подтверждение легальности). Причем всё это может производиться со списком ИБ. И скачиваются обновление один раз для всех баз. Бэкап делать между промежуточными обновлениями считаю не имеет смысла, если он был сделан до начала обновлений.
Ручное кликанье в моей конфе - это лишь доп. возможность. Основной запуск "заданий" производится из того же планировщика (лично я предпочитаю nnCron) или по расписанию из запущенного процесса.
Проверить и настроить работу моей конфы на серверных базах я, к моему сожалению, не могу. Нет ни возможности, ни опыта.
45. Максим Шадрин (mixperm) 03.07.15 07:31
(44) hibico, Если честно, то я вообще не программист. Просто когда стояла задача автоматически обновлять базы перерыл весь интернет и тоже не мог найти того что мне надо. П.э. и родился скрипт по реализации на уровне школьника. Но главное работает как часы если настроить. А вообще у меня есть конфа которая обновляет в данный момент 150 баз и файловые и серверные, но она не доделанная, она не качает обновления, за нее это делает этот скрипт и выдает готовые cf для обновления.
46. Марина Чирина (chmv) 18.07.16 17:09
НЕ НАШЛА ПРОВЕРКИ ЛЕГАЛЬНОСТИ?
47. Максим Шадрин (mixperm) 19.07.16 05:57
(46) chmv, используйте программу Обновлятор, решает задачу проверки легальности, этот скрипт больше не поддерживаю, тут этого не появится
48. Alexandr Kuritsyn (hibico) 19.07.16 10:07
(46) chmv,
Смотри ссылку в (42) - там есть обновление данных ИБ после обновления конфигурации (в том числе и подтверждение легальности).
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа