Скрипт настраивается под определенную базу. Можно файловую, можно серверную. Через 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, можно править в простом блокноте, но тогда русские буквы могут не отображаться корректно. Если какие-то вопросы, пишите в личку. Не забываем ставить лайк 😉
Скрипт для автоматического обновления баз 1С (загрузка с сайта, применение и др)
Скрипт для автоматической загрузки и обновления баз 1С (скачивание, обновление, тестирование, выгрузка cf, dt, загрузка в 1CD, отправка отчета по email)
обнаружена проблема при COM обращении к файловой базе содержащей пробелы. Строка подключения обрезается до пробела. Пытался вставить кавычки не помогает. Может кто знает как исправить?
Сделал более понятную настройку параметров. Теперь в скрипте выбирается параметр файловая или серверная база. Добавил утилиту blat для отправки отчетов по электронке. Для себя еще делал выгрузку cf, dt, и загрузка в 1CD. Короче все это создавал для того, чтобы всегда под рукой имелся актуальный 1CD для новых файловых баз, актуальный dt для создания новой базы на сервере и актуальный cf для оперативного обновления старых баз. На элетронке сообщение об актуальной версии))) Теперь все само собой делается. (кстати имеется специальная конфигурация для администрирования и массового обновления баз, но она еще не доработана, хотя и работает, просто не товарного вида)
Для исправления ошибки связанной с пробелом в пути к базе в скрипте 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)
Сама идея отличная, но настройки умелыми ручками сам я не осилил. С админом — тоже не осилил.
Вероятно дело в разных целях:
1. Автору нужно было ежедневное автоматическое скачивание последнего релиза. Тогда алгоритм «посмотрели на сервер, сравнили конфы, если не последняя то скачали, потом распаковали, потом накатили, потом сохранили конфу в cf, потом сохранили базу в dt, потом накатили на файловую базу, потом рапортовали по e-mail хозяину «Все готово, хозяин» — логичен.
2. А я вообще почти бухгалтер, у меня в обед на столе три базы КА, которые не обновлены с октября 2012 года, и паникующий бухгалтер, которому они нужны обновленные к вечеру.
Причем в заначке на винте все нужные релизы, в шаблонах, уже в cfu лежат, их нужно просто накатить без вопросов.
Радует, что в батнике можно отключить часть действий, но за счет глобальности замысла автора даже это не помогло.
Я смотрю плюсы то у статьи есть, значит у кого-то руки более прямые, чем у нас с админом. И то хорошо.
(4) Хегга, согласен параметров много, но это и придает универсальность скрипту. Готов помочь настроить. В личку вышлите мне параметры всех баз для обновления я вышлю настроенный батник (название конфигурации, путь к базе или имя сервера и название базы если серверная, логин и пароль сами пропишите. Хотя если разбираться в проблемах, то скорей всего ваша проблема это кодировка файла. Батник сохранен в OEM 866 кодировке для поддержки русского языка в путях и корректного отображения процесса обновления. В обычном блокноте отредактировать не получится если есть русские буквы в пути т.к. при сохранении будут записаны неверные данные. Я использовал AkelPad для редактирования. Выложу обновление в кодировке 1251 где добавил еще тестирование (реструктуризация) баз без исправлений, только в командной строке могут отображаться каракули вместо русского языка, но работать должно
Выложил версию 2.4 в кодировке 1251 для редактирования в простом блокноте. Русские буквы рекомендую исправить на латиницу для корректного отображения хода обновления. Добавлено тестирование базы.
ОФФ подписался
(0) Интересная реализация, практически все через bat-файлы и консольные утилиты + чуть-чуть скрипт-кодинга 🙂
Отличная работа, давно искал, даже начинал сам делать, правда на Delphi, но этот вариант гораздо проще и универсальнее. Поправил немного под себя, попробовал на одной из баз, все работает.
Можно сделать простенький GUI-шный конфигуратор, который сгенерирует батник по заполненным пользователем данным, но это для тех кто совсем уж не хочет вникать.
Последние обновления для Бухгалтерии 3.0 качаются только при настройках версии платформы 83. Так же не забываем менять настройки путей к программникам при обновлении платформы
Может кто знает почему по данной ссылкеhttp://downloads.1c.ru/ipp/ITSREPV/V8Update/Configs/budgethrm/10/82/v8upd11.zip находится список релизов ЗиКБУ только до версии 1.0.28.1 от 2011 года?
И как получить список актуальных релизов для данной конфигурации?
Нашелhttp://downloads.1c.ru/ipp/ITSREPV/V8Update/Configs/BudgetHRM/10/82/UpdInfo.txt (с учетом регистра)
(11) connectoid,http://downloads.1c.ru/ipp/ITSREPV/V8Update/Configs/BudgetHRM/10/82/v8upd11.zip Как это ни странно надо тоже с учетом регистра вводить
(13) Не странно, ибо сервер на никсах у них, видимо в 2011 создали новую папку BudgetHRM
еще бы придумать как пароли не светить в открытом виде, например, указывая их в скрипте в хэшированном виде, и в процессе работы скрипта передавать их на сервер обновления с помощью какой-нибудь утилиты, производящей преобразование хэшированного значения пароля к виду, понимаемому сервером обновления.
а автор молодчага, респект.
неплохо бы научить скрипт сначала проверять стандартный каталог с шаблонами на наличие там обновлений, а уже затем, в случае отсутствия таковых, идти за ними на сервер обновления, и скачав обновления с сервера, положить их в стандартный каталог с шаблонами.
PS: хотя, наверное это лишнее.
(16) teflon, Принято… 1. Сделаю отдельную переменную пути для скачивания обновлений в стандартный каталог с шаблонами. 2. Подумаю как можно хранить пароли в зашифрованном виде, но из меня плохой программист думать буду долго.
Не удается обновить скриптом Управление торговлей ред. 11.1, если точнее, то не обновляется база данных.
Бухгалтерия предприятия ред. 3.0 и ред. 2.0, Зарплата и Управление Персоналом ред. 2.5 обновляются прекрасно.
У кого-нибудь есть положительный опыт обновления Управление торговлей ред. 11.1 в пакетном режиме?
(18) teflon, Сколько копался в интернете, вроде отличий для разный конфигураций нет. Отличия только для файловой и серверной базы в параметрах запуска. Обычно все проблемы с ошибками это блокировка базы пользователем или регламентными заданиями в случае серверной базы.
Обновление 2.5
— добавлен параметр для указания пути хранения шаблонов tmplts. Пытался сделать считывание из стандартного 1CUpdate.cfg, но оказалось у него кривая кодировка и не стал заморачиваться с перекодировками.
— добавлен параметр для указания пути к бэкапу
— добавлена проверка успешности создания бэкапа (присутствует файл или нет). (Забыл добавить к имени файла дату создания, потом как-нибудь, если не забуду опять)
— добавлена проверка существования папок куда сохраняются бэкап и обновления
— убраны лишние сообщения при отключенных доп. опций для создания cf, выгрузки dt и загрузки 1CD
Планируется добавить хранение паролей в ввиде хэша, но для меня это сложная задачка не обещаю быстро сделать.
Неплохо было бы предупредить, что антивирус «Касперский» определяет одну из утилит, входящих в комплект поставки Blat
как потенциально опасное ПО (не вирус, SMTP-клиент)
обнаружено: not-a-virus:Client-SMTP.Win32.Blat.ca
файл: blat.exe blat.dll
(21) filin2009, Первый раз слышу. У меня НОД32 ничего не говорил… да и судя по касперскому not-a-virus Client-SMTP чем собственно и является данная утилита. По мне дак лучше сторонняя популярная разработка, чем своя утилита, когда не понятно что она еще кроме делает.
В ноябре изменился формат 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
Обновление 2.6
1. Внесено исправление указанное постом выше
2. Исправление в пути неправильно считывающее наличие уже скаченного обновления с последующим запросом перезаписи
строка
исправлена на
Данные исправления вы можете внести сами не скачивая снова
P.S. если честно я уже и не помню какие изменения вносил, просто это мой рабочий вариант с удаленными паролями
Добрый вечер. Не могу понять. Все настроил правильно (вроде). Скрипт видит базу. Определяет ее версию конфигурации. Скачивает новую версию. На этом все! Открываю конфу — ничего не обновилось!
(20) mixperm, Привет.
обновлять будет из каталога обновлений (есть установленные обновления на компе)? если да, то помоги файлик настроить :
где прописать путь к каталогу обновлений
Проблема такая
Скачали…
Для продолжения нажмите любую клавишу . . .
checkdir: cannot create extraction directory: C:/1CUpdate/bin/Accounting/2.0.64
.9
Для продолжения нажмите любую клавишу . . .
Уже утютюхался понимать от чего косяк….
Пробовал напрямую с правами админа… все тоже самое…
Разобрался )
Решил проблему добавлением строки md…..
Наткнулся на новую…
1-я Не всегда делает бекап
2-я Проблема с обновлением бд на сервере т.к. есть либо активные блокировки либо активные сеансы
3-я Нужен лог по каждой базе(батнику) в виде файла (полезная инфа: начало, конец, результат или что за ошибка)
Думаю как выкидывать пользователей….
max_vorzhev
По скрину у тебя таже ошибка как у меня.
Проблема в том что unrar.exe не может создать директорию для распаковки архива
Я решил эту задачу путем добавления строки создания дириктории
echo Скачали…
md %temp%\%type%\%verversion%\r
if exist %temp%1cv8.zip %temp%unzip.exe -q %temp%1cv8.zip -d %temp%\%type%\%verversion%\r
и тогда ошибка как на скрине исчезает…
Будут вопросы пиши 😉
Я вроде со всеми вопросами разобрался
(29) Shamzelia, Спасибо большое! Все получилось!)
Джентльмены, а может быть можно реализовать подобный алгоритм для платформы???
Я готов принять участие и тестирование….
(31)У платформы это реализовывается вроде как средствами самой плафтормы, тонкий клиент точно, а вот толстый не помню.
(25) max_vorzhev, добрый день. Прошу прощения за столь поздний ответ. Видимо проблема решилась без меня.
(31) Shamzelia, я пытался заставить своего брата сделать из моего скрипта нормальную конфу для обновления. Конфа рабочая есть, но не доделана и заброшена. Конфа может только обновлять (в данный момент постоянно обновляю конфой 150+ баз), скачивать и т.п. не может (скачиваю скриптом).
В чем может быть проблема? Подскажите пожалуйста
Ошибка исчезла после того как в базе был создан пользователь с паролем. Видимо скрипт не принимает пустые значения baseuser и basepass
(34) mixperm, Добрый день. Можете поделиться опытом обновления 150+ баз? Может вы где-то уже выкладывали данную разработку?
(35) Makrushin, скорее всего из-за латиницы в пути
Вопросы на емаил mixperm(сабака)yandex.ru
Спасибо!, давно не получал такого удовольствия от ковыряния bat-ника. (В far красивая тоже разукрашка)
Если мне не изменяет память, то такой скрипт (правда на JScript) уже есть в любой типовой конфигурации, в штатном механизме проверки обновлений. Сидит где-то в макетах, запускается, скачивает все, что нужно, обновляет релиз и снова запускает базу.
(31) Shamzelia, (37) Buхter
Автоматизированное обслуживание информационных баз 1С версий 7.7 и 8.Х, тестирование, обновление, архивирование и т. д.
Гляньте, может моя подойдет:
P.S. Странно. Публикация от 2013 года. Когда публиковал свою, плотно рылся поиском по Инфостару и данной публикации не увидел. Сегодня случайно нашел.
(42) hibico, У меня скрипт автоматически определяет какую версию качать для обновления и скачивает, и так поочередно, промежуточно делая бэкапы. bat файл размещается в планировщик заданий и никакого ручного кликанья не надо. Править bat файл приходится только когда меняется релиз платформы и то критично только для серверных баз. Кстати да.. поддерживает серверные базы
(43) mixperm,
Извини, но я никак не хотел принижать твою разработку (если не заметил, я даже плюсанул).
В своё время я сам активно пользовался bat-файлами.
Это пользователям решать какая разработка им больше подходит.
Кстати. У меня программа сама проверяет наличие новых обновлений, определяет последовательность обновлений, скачивает (естественно игнорируя ненужные), последовательно обновляет конфу, затем ИБ, также запускается обработка обновления данных ИБ (то же подтверждение легальности). Причем всё это может производиться со списком ИБ. И скачиваются обновление один раз для всех баз. Бэкап делать между промежуточными обновлениями считаю не имеет смысла, если он был сделан до начала обновлений.
Ручное кликанье в моей конфе — это лишь доп. возможность. Основной запуск «заданий» производится из того же планировщика (лично я предпочитаю nnCron) или по расписанию из запущенного процесса.
Проверить и настроить работу моей конфы на серверных базах я, к моему сожалению, не могу. Нет ни возможности, ни опыта.
(44) hibico, Если честно, то я вообще не программист. Просто когда стояла задача автоматически обновлять базы перерыл весь интернет и тоже не мог найти того что мне надо. П.э. и родился скрипт по реализации на уровне школьника. Но главное работает как часы если настроить. А вообще у меня есть конфа которая обновляет в данный момент 150 баз и файловые и серверные, но она не доделанная, она не качает обновления, за нее это делает этот скрипт и выдает готовые cf для обновления.
НЕ НАШЛА ПРОВЕРКИ ЛЕГАЛЬНОСТИ?
(46) chmv, используйте программу Обновлятор, решает задачу проверки легальности, этот скрипт больше не поддерживаю, тут этого не появится
(46) chmv,
Смотри ссылку в (42) — там есть обновление данных ИБ после обновления конфигурации (в том числе и подтверждение легальности).
Я вот тоже начал делать скрипт обновления. Есть вопрос. Максим, можете глянуть на свою почту на яндексе?