|
РИБ. Как автоматизировать обновление конфы в подчиненной БД | ☑ | ||
---|---|---|---|---|
0
kosts
22.08.11
✎
09:04
|
В типовой вроде есть механизм автоматического обновления конфигурации в подчиненной БД.
Как его задействовать? Или как удобнее сделать самому, что бы пользователей минимально напрягать при обмене. |
|||
1
kosts
22.08.11
✎
09:27
|
^
|
|||
2
romashov
22.08.11
✎
09:33
|
Флаг запуска 1С есть соответствующий, останется решить вопрос с монопольным доступом и все.
|
|||
3
Necessitudo
22.08.11
✎
09:33
|
как вариант тупо пишешь батник с командами и его запуском обновляешь конфу.
|
|||
4
romashov
22.08.11
✎
09:33
|
да
|
|||
5
kosts
22.08.11
✎
09:40
|
(2) Это понятно.
Как сделать что бы при получении обновленной конфы сразу предлагалось перезапустить 1С для обновления - залез в модуль или есть типовой вариант? |
|||
6
Aleksey
22.08.11
✎
10:08
|
(5) есть полу типовой.
|
|||
7
Aleksey
22.08.11
✎
10:34
|
делаешь внешнюю обработку, в модуль пишешь
Процедура ОбновлениеКонфигурацииБД(User,Pasword) Экспорт Если Не КонфигурацияИзменена() Тогда Возврат; КонецЕсли; // строка с вызовом программы ИмяКаталога = КаталогПрограммы(); ИмяПрограммы = """" + ИмяКаталога + ?(Прав(ИмяКаталога, 1) = "\", "", "\") + "1cv8.exe" + """"; // строка для определения базы СтрокаСоединения = СтрокаСоединенияИнформационнойБазы(); Если Найти(Врег(СтрокаСоединения), "FILE=") Тогда //Файловая версия КлючБазы = СтрЗаменить("/F" + Сред(СтрокаСоединения,6),";",""); Иначе СтрокаСоединения = СтрЗаменить(СтрокаСоединения,";",Символы.ПС); ИмяСервера = Сред(СтрПолучитьСтроку(СтрокаСоединения,1),6); ИмяБазы = Сред(СтрПолучитьСтроку(СтрокаСоединения,2),5); КлючБазы = "/S" + СтрЗаменить(ИмяСервера,"""","") + "/" + СтрЗаменить(ИмяБазы,"""",""); КонецЕсли; // строка с именем административного пользователя и его пароля SlaveUser = "/N" + User + " /P" + Pasword + " /WA- /AU-"; // Файл для ошибок ИБ=СтрЗаменить(ИмяБазы,"""",""); ФайлДляОшибок = "/Out" + """" + КаталогВременныхФайлов() + "\"+ИБ+"_1cv8.err" + """" + " -NoTruncate"; // ключ доступа КлючДоступа = "/UCКодРазрешения"; // собираем текст бат-файла ТекстФайла = " | |start " + """Заблокировать соединения""" + " /wait " + ИмяПрограммы + " ENTERPRISE " + КлючБазы + " " + SlaveUser + " /CЗавершитьРаботуПользователей " + КлючДоступа + " " + ФайлДляОшибок + " /DisableStartupMessages | |start " + """Разблокировать соединения""" + " /wait " + ИмяПрограммы + " ENTERPRISE " + КлючБазы + " " + SlaveUser + " /CРазрешитьРаботуПользователей " + КлючДоступа + " " + ФайлДляОшибок + " /DisableStartupMessages | |start " + """Обновление конфигурации""" + " /wait " + ИмяПрограммы + " CONFIG " + КлючБазы + " " + SlaveUser + " /UpdateDBCfg " + КлючДоступа + " " + ФайлДляОшибок + " | |"; // Записываем текст в бат-файл ТекстДокумент = Новый ТекстовыйДокумент(); ТекстДокумент.УстановитьТекст(ТекстФайла); // Сохраняем бат-файл ИмяФайла = КаталогВременныхФайлов() + "\"+ИБ+"_1cv8.bat"; ТекстДокумент.Записать(ИмяФайла, КодировкаТекста.OEM); // запускаем бат-файл #Если Клиент Тогда ЗапуститьПриложение(ИмяФайла); #Иначе КомОбъект = Новый COMObject("wScript.Shell"); КомОбъект.Run("""" + ИмяФайла + """"); #КонецЕсли КонецПроцедуры ОбновлениеКонфигурацииБД("User","Pasword"); ЗавершитьРаботуСистемы(Ложь); Далее делаешь батник @echo off Set Path1C="c:\Program Files\1cv82\8.2.13.180\bin\1cv8.exe" start "Base1" %Path1C% ENTERPRISE тут обычный путь к базе1 /NUser /PPassword /Execute"А тут путь к обработке из предыдущего пункта" start "Base2" %Path1C% ENTERPRISE тут обычный путь к базе 2 /NUser /PPassword /Execute"А тут путь к обработке из предыдущего пункта" Start нужно для ускорения, чтобы он паралельно все базы запустил для обмена. Если нужно последовательно, то убираем начало "start "Base1" " Осталось в настройках обмена проверить чтобы запускался обмен автоматом при заходе пользователя Т.е. запускается 1С под определенным пользователем, далее происходит автообмен. После этого запускается обработка, и проверяет, а не пришло ли изменение. Если изменение есть рисует батник который заблокирует работу с 1С и выполнит загрузку конфигурации, после этого разрешит работу. Единственно НО он только загрузит конфигу, данные в этом случае не будут загружены. После этого он закроет 1С |
|||
8
kosts
22.08.11
✎
11:25
|
(7) Спасибо поразбираюсь
|
|||
9
Stim213
22.08.11
✎
11:26
|
занесите в базу знаний
|
|||
10
kosts
23.08.11
✎
06:49
|
(7) По этой схеме работает.
Только видимо нужно в другом порядке, разблокировку поставить последней. ТекстФайла = " | |start " + """Заблокировать соединения""" + " /wait " + ИмяПрограммы + " ENTERPRISE " + КлючБазы + " " + SlaveUser + " /CЗавершитьРаботуПользователей " + КлючДоступа + " " + ФайлДляОшибок + " /DisableStartupMessages | |start " + """Разблокировать соединения""" + " /wait " + ИмяПрограммы + " ENTERPRISE " + КлючБазы + " " + SlaveUser + " /CРазрешитьРаботуПользователей " + КлючДоступа + " " + ФайлДляОшибок + " /DisableStartupMessages | |start " + """Обновление конфигурации""" + " /wait " + ИмяПрограммы + " CONFIG " + КлючБазы + " " + SlaveUser + " /UpdateDBCfg " + КлючДоступа + " " + ФайлДляОшибок + " | |"; Пользователю положу на рабочий стол два ярлыка. Один на предприятие для работы, второй для обновления (на батник). Пользователя нового создать и повесить на него обновление при запуске. и не забыть в батнике перед путем к БД поставить /F. А так можно в мемориз. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |