1с скрипт добавить 1с базу
Необходимо пользователю(лям) добавлять в список баз в 1С новую базу чуть ли не каждый день!
Выхожу из ситуации высылая фаилы 1CEStart.cfg и ibases.v8i
И BAT фаил типо:
xcopy "ibases.v8i" "%userprofile%\Application Data\1C\1CEStart" /y
xcopy "1CEStart.cfg" "%userprofile%\Application Data\1C\1CEStart" /y
Но таким образом пользователь получает весь список баз, а это не всегда нужно
Есть ли возможность записи скрипта, который записывает клики, что именно введено в поле. А при запуске воспроизводит ранее записанную запись.
Ранее видел программы подобие автоустановщиков, может кто посоветует названия? Или иной выход из ситуации.
Это не подходит.
Удобно было бы скриптом добавлять в уже существующий список, указав название базы, сервер и префикс.
В 8.3 стартер уже может на веб-сервис ходить за списком баз. Поставь 8.3, а в свойствах базы укажи, что нужно запускать 8.2.
(8)(10)
Очеть много пользователей и предприятий что бы всем платформу менять или доступ к фаилам прописывать!
Просто видел скрипт, где указываешь какую кнопку щелкнуть, в какое поле что написать.
Таким образом я бы высылал скрипт пользователям и база сама добавлялась!
(13) Смотри параметры запуска из командной строки.
/AddInList
параметр, показывающий, под каким именем добавлять базу в список, если не указан, база не будет добавлена в список. Если не указано имя, используется умолчание, аналогичное интерактивному созданию информационной базы.
(14) Почему велосипед, в ней можешь организовать удобное администрирование, раскидывание кому и какие базы видны
ПолныйПутьДо1С\1cv8.exe createinfobase File=C:\newBase\ /AddInList NewDB
Базы сидят на SQL через 1С консоль (1С сервер), а тут как я понял только локаль можно прописать
(12) а зачем платформу ставить локально? ставишь ее на файл сервер, расшариваешь, и в скрипте на запуск указываешь именно эту папку.
Описание инфраструктуры
И так предположим, что у вас есть большое количество сотрудников, кто в своей работе использует программу 1С 8. Вам периодически приходится подключать им базы данных, тратя на это много времени. У части пользователей может быть локальный клиент 1С, кто-то может работать на RDS ферме, по удаленке. Вы хотели бы, чтобы каждому пользователю подключались его персональные базы 1С при входе в компьютер или терминал, а так же при необходимости простого ручного обновления в виде ярлыка, который запускает сценарий, невидимый для пользователя. Мои коллеги 1С написали скрипт, который на сетевую шару, выгружает файл "Имя домена-Логин пользователя.v8i" со списком персональных баз пользователя. Данный файл нам нужно будет подкладывать при входе сотрудника в его рабочее окружение.
Реализация подгрузки баз 1С
Когда пользователь открывает "1C Предприятие", то при отсутствии в конфигурационном файле путей до базы данных, он увидит картину:
За список баз данных, отвечают два файла:
- 1cestart.cfg - в данном файле прописываются некоторые параметры и путь до файла .v8i
- ibases.v8i - тут прописываются параметры подключения к базам данных.
Располагаются они в локальном профиле пользователя по пути:
Алгоритм такой:
- На сетевую шару выгружается файл имя домена.логин.v8i с персональным списком баз 1С
- Данный файл нужно копировать при входе пользователя на рабочую станцию или терминал в расположение C:\Users\логин\AppData\Roaming\1C\1CEStart\
- Если папки 1CEStart нет, то создать ее
- Создать или заменить файл 1cestart.cfg
- Прописать в файле 1cestart.cfg путь до файла со списком баз: CommonInfoBases=C:\Users\логин\AppData\Roaming\1C\1CEStart\файл имя домена.логин.v8i
- Создать на рабочем столе файл exe, который в случае предоставления пользователю новых прав на другие базы данных 1С, запустит скрипт локально и скопирует новый файл со списком баз, что сотруднику не пришлось производить выход из системы.
Код скрипта монтирования баз 1С
Для решения моей задачи, я написал скрипт PowerShell, который буду использовать при логине пользователя, ниже его текст с объяснениями.
if ((! (Test-Path "$path_1c83" -PathType Container -ErrorAction SilentlyContinue)) -and (! (Test-Path "$path_1c82" -PathType Container -ErrorAction SilentlyContinue)) `
-and (! (Test-Path "$path_1c82x64" -PathType Container -ErrorAction SilentlyContinue)) -and (! (Test-Path "$path_1c83x64" -PathType Container -ErrorAction SilentlyContinue)))
Write-Output "Paths $path_1c83 and $path_1c82 don't exist"
Break
>
Далее создаем групповую политику. В политике нужно настроить два момента:
- Первое, это немедленное выполнение скрипта при входе, без 5-ти минутной задержки.
- Второе, это в ветке "Конфигурация пользователя - Политики - Конфигурация Windows - Сценарии входа/выхода". Далее открываем вкладку "Сценарии powerShell", выбираем наш скрипт и обязательно выставите пункт "Запускать сценарии оболочки Windows PowerShell перед другими сценариями входа"
Залогинившись, открыв "1C Предприятие" я вижу список нужных мне баз. Пройдя в каталог AppData. я наблюдаю два нужных мне файла.
Открыв 1cestart.cfg я вижу путь до моего файла.
Так же я создал EXE файл обновляющий в ручную список баз, заново копирующий нужный мне файл. Что самое интересное, что не требуется административных прав и понижение политики безопасности. Как конвертировать PS1 в EXE я уже рассказывал.
Многие давно и успешно используют файл "1CEStart.cfg" для подключения списка информационных баз "1С Предприятия" на терминальных серверах и рабочих станциях. На сайте ИТС 1С (также как и в "желтой библии" "Руководство администратора") в "Приложение 3. Описание и расположение служебных файлов" достаточно подробно описаны настройки этого файла. Но ни на ИТС, ни в других статьях в интернете не описано каким образом изменять этот файл, чтобы подключался список баз (РИБов) того территориального офиса, в котором находится компьютер. В этой статье я опишу способ подключения списка ИБ в зависимости от контролера домена авторизации пользователя при помощи скрипта cmd и групповой политики.
Преамбула: Статья была написано от лица программиста 1С для программистов 1С, которые отвечают за формирование списка ИБ 1С.
Цель: Сделать выбор необходимой пользователю ИБ 1С более простой и универсальной. Снизить необходимость участия системных администраторов при настройки системы формирования списка ИБ. Упростить настройку силами программистов 1С системы формирования списка ИБ в условиях изменения сетевой и серверной инфраструктуры.
Дано: Имеется главный офис и несколько обособленных подразделений (далее "ОП"), в каждом из которых есть свой контролер домена (далее "КД") и свой сервер "1С Предприятия". Между офисами постоянно перемещаются и работают в локальных РИБах сотрудники с личных или рабочих лэптопов. Системные администраторы гарантируют выбор локального КД при авторизации.
Задача: При авторизации пользователя в домене ему необходимо подключить список РИБов, развёрнутых в том ОП, в КД которого произошла авторизация.
Неудачное решение: Такие варианты решения, как указывать все РИБы в одном списке или делать на рабочем столе разные v8i списки баз для каждого ОП приводят пользователей к путанице и периодическим ворчанием вида:
"Ваша 1С [главного офиса] тормозит в ОП1"
"- Я всегда работал в этой 1С, а в ОП2 эта 1Ска тормозит.
- Какую другую 1Ску запускать? Вы меня запутали."
Оптимальное (на мой взгляд) решение:
Для автоматического изменения (по факту - пересоздания) файла "1CEStart.cfg" был сделан скрипт Set1CBases.cmd, который размещается в папке "\\КонтролерДоменаГл\netlogon\". Чтобы этот скрипт запускался при входе пользователя в систему была создана [глобальная] групповая политика для конфигурации пользователя (единственное требуемое от системных администраторов действие).
Вместо текущего КД "%LogonServer%\Sysvol\%UserDnsDomain%" можно указать сам домен "\\%UserDnsDomain%\Sysvol\%UserDnsDomain%", который переправит на ближайший КД, но по личному опыту - не советую.
Листинг генерируемого 1CEStart.cfg:
В каталоге корневого КД "\\КонтролерДоменаК\Sysvol\Домен" был сделан каталог ibases, внутри которого сделаны каталоги одноименные с наименованием серверов КД. Внутри каждого каталога был помещён файл "ibases.v8i" со списком баз того ОП, в котором физически располагается КД. Получились такие пути файлов:
Положительные свойства решения.
У всех КД каталог ". \Sysvol\Домен" [по умолчанию] синхронизируется (реплицируется) автоматически службой DFS-R, поэтому в кратчайшие сроки все файлы "ibases.v8i" были скопированы на другие КД, включая вложенную структуру каталогов и права доступа. При изменений в файлах или каталогах на любом из КД служба DFS-R реплицирует изменения на другие КД, что сильно упрощает поддержку актуальности версий списка баз на разных КД. Ещё одним из плюсов этого решения является то, что в любом ОП список баз всегда будет локальным и актуальным (при наличии связи между КД).
Настройка автоматического обновление платформы.
Также этим скриптом вы можете настроить автоматическое обновление платформы через дистрибутив, расположенный на КД. Для этого в ". \Sysvol\Домен" необходимо сделать каталог (в скрипте у него наименование "Platform"), поместить в него все используемые дистрибутивами платформы "1С Предприятие" и указать название этого каталога в параметре "PlatformFolderName", а для параметра "AppAutoInstallLastVersion" выставите значение 1. Только не забудьте в соответствии с "Главой 10. Обновление системы" установить политику AlwaysInstallElevated для компьютера и пользователя, чтобы пользователь, не обладающий правами локального администратора смогли установить платформу. Также следует знать, что 1СEStart.exe при запуске попытается автоматически установить самую последнюю версию платформы, даже если она не будет использоваться. Предупреждение: репликация между КД большого объёма дистрибутивов платформы, расположенных в системной папке "sysvol" может замедлить репликацию групповых политик.
P.S. Если Вы захотите изменять вместо пользовательского файла "%APPDATA%\1C\1CEStart\1CEStart.cfg" общий для всех пользователей компьютера файл %ProgramData%\1C\1CEStart\1CEStart.cfg", то заранее продумайте как предоставить не локальному админу права на изменение этого файла. Возможно Вам пригодится утилита icacls.exe.
Во вложении сам файл Set1CBases.cmd для тех, кто хочет отблагодарить за статью.
Специальные предложения
Для начала: статья была написано от лица программиста 1С для программистов 1С с целью минимизировать ["зависимость"] необходимость кантовать админов, при условии, что за список баз отвечают программисты.
Microsoft не рекомендует пользоваться системными папками для репликации своих данных, тем более для репликации и хранения дистрибутивов платформы. Ввиду ее большого размера это может привести к нарушению репликации групповых политик.
С учетом того, что файлы v8i не большого размера, на репликацию политик эти файлы точно не повлияют. Платформа, действительно, может повлиять на репликацию, статью сегодня дополню. Но если платформа меняется не часто, то вариант вполне рабочий.
Если Вы хотите использовать dfs для репликации данных - установите соответствующую роль, создайте доменный корень dfs, папку и определите набор репликации, а также его топологию
Да, можно, отдельный каталог со списком баз сделать реплицируемым через dfs-r, но какое имя компьютера указывать для универсализации этого пути во всех офисах? Даже обращение по универсальному имени через "Пространства имен DFS" не даёт стабильный результат. К тому же, все эти манипуляции требуют права админа домена, а за список в этой конторе отвечают программисты. Следовательно, при добавлении нового АД приходиться идти с челобитной к админам и напоминать, что нужно настроить новую репликацию.
Для того, чтобы Ваши пользотели подключались к локальным ресурсам, на мой взгляд более правильным будет создать сайты Active Directory, для каждого сайта создать "дочернюю" зону и добавить туда cname записи Ваших локальных серверов, затем для каждого сайта создать политику, где Вы определите основной dns суффикс подключения. Таким образом, если в строке подключения будет написано srv=appsrv, то в офисе1 это имя будет разрешаться как appsrv.office1.domainname.domainsuffix, а в офисе 2 appsrv.office2.domainname.domainsuffix etc.
Вот этот совет абсолютно методологически правильный, и в статье, наверное, тоже должен быть рассмотрен. Но на практике у главного админа (который всегда занят более важными делами, чем Ваши) должен всегда помнить, что если будет создан новый КД, то все эти манипуляции ему нужно будет повторять. А если appsrv переименуют, КД перевезут в другой оффис? Куча чего, что нужно будет отслеживать админам.
Есть ещё один более крупный недостаток: если в офисе1 нужно использовать базу из офиса2 (или в офисе1 вообще нет РИБа, как в офисе2), то нужно будет делать отдельный список, где указан appsrv с конкретным суффиксом office2. Это опять путаница и геморрой. Единственное, за чем 100% следит главный админ - это за правильный выбор КД в каждом офисе при авторизации.
Практиковали этот способ, когда СЗ на подключение к ИБ 1С проходило через корпоративный СЭД и её отрабатывали и программисты, добавляя пользователя ИБ, и админы, добавляя в группу доступа. Даже список баз формировался "персональный", согласно доступа групп к папкам БУХ, ЗУП, СЭД с хранящимися в них v8i. На практике же (например бигбоссу) могли сделать пользователя ИБ "по письму" или "по звонку", а админы могли и не добавить в группу. И много чего ещё случалось. В итоге отказались от привлечения админов вообще.
Что если всем пользователям нужно добавить одну базу?
Понятного описания найдено не было, вот по одно решение на примере Windows Server 2003:
1) В папке «C:\Documents and Settings\All Users\Application Data\1C\1CEStart» находится файл 1CEStart.cfg, который следует отредактировать следующим образом
InstalledLocation=C:\Program Files (x86)\1cv82
CommonInfoBases= «размещение файла в папке общего доступа на чтение для всех пользователей файла v8i»
InstallComponents=DESIGNERALLCLIENTS=1 THINCLIENTFILE=0 THINCLIENT=0 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU
Далее размещаем/создаем файла в папке общего доступа на чтение для всех пользователей файла v8i.
[«имя БД английскими буквами отображаемой для пользователя»]
Connect=Srvr= «Сервер приложений 1с» ;Ref= «база данных 1с на сервер приложений»
Приведу примеры работающих файлов
InstalledLocation=C:\Program Files (x86)\1cv82
InstallComponents=DESIGNERALLCLIENTS=1 THINCLIENTFILE=0 THINCLIENT=0 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU
В результате у всех пользователей появится общая база.
Далее можно добавлять или удалять базы в файле conf.v8i (в архиве есть пример файла vi файла с двумя базами).
Специальные предложения
Механизм общих баз в 1С
(1) Stamper, (2), конечно сработает, в зависимости от ОС может отличаться только расположение 1CEStart.cfg
Автор предлагает свой вариант решения.
Хотя на ИТС всё расписано в "Руководстве администратора". Рекомендую начать с "2.4 Рекомендации по развертыванию системы".
Если построить систему по этим рекомендациям, то список общих баз будет редактироваться в одном месте - в файле ibcommon.v8i.
Интересно интересно.Задумка что надо нужно будет попробовать ато ходить и всем прописивать базу либо общую базу не вариант. Автору Спасибо за идею и за работу, ну конечно заслуженое 5+++
Я данную задачку рещил так, скриптом в домене раскидал всем 1с на компьютеры, после чего создал группу и приписал ярлык к нужной базе, и у всех пользователей кому нужна база ярлык появляется в определенной папке.
В принципе быстро и не надо ходить, только пользователям сообщить где лежит и всё.
(9) в приведенной публикации ходить тоже никуда не надо, в приведенном примере тобой нужно сделать больше операции, однако спасибо за дополнение
незнание "Руководства администратора" (стр. 89 и стр.225) .
в результате ошибки . даже в описании "своего метода"
в частности, имя базы может быть и на русском языке,
только не промахнуться с кодировкой файла (см. там же)
вкатал бы минус - но, пока, "Учите матчасть, господа"
Просмотры 33241
Загрузки 33
Рейтинг 39
Создание 18.04.12 11:32
Обновление 18.04.12 10:57
№ Публикации 125374
Тип файла Архив с данными
Конфигурация Конфигурации 1cv8
Операционная система Windows
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
Оптимизация размера изображений из присоединенных файлов УТ 11.4 Промо
5 стартмани
10.07.2020 11359 15 Neti 4
Универсальная выгрузка, загрузка и резервное копирование настроек программы
Универсальная обработка позволяет выгрузить настройки практически любой современной конфигурации на базе БСП в файл, а при загрузке из файла сравнить с текущими значениями в информационной базе.
1 стартмани
23.08.2021 3592 20 Nicholas 9
Доп. панель Alt+Z
Панель, вызываемая для объекта комбинацией клавиш Alt+Z (для документа, справочника, плана вида характеристик, плана счетов и т.д.). Возможности: Редактор всех реквизитов, таблиц и движений, Анализ прав к объекту, Поиск ссылок на объект с фильтрами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Подключается как Расширение.
2 стартмани
24.06.2021 11002 126 sapervodichka 63
Система проверки данных (spd) (расширение)
1 стартмани
20.04.2021 3586 15 tsatsur 10
Запуск 1С под любым пользователем (без необходимости указания пароля) Промо
Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).
1 стартмани
02.07.2019 32393 344 sapervodichka 0
Управление Избранным
Групповая обработка Избранного всех пользователей информационной базы.
1 стартмани
24.06.2020 4906 35 Yashazz 8
Конфигурация для администраторов "Центр управления базами" для 8.3 УФ
Конфигурация предназначена для централизованного управления информационными базами предприятия. Разработана на БСП версии 2.4.4.76. В работе использует COM-соединение.
3 стартмани
09.10.2019 12967 44 WhiteOwl 17
Обновление конфигурации 1С из cf по расписанию
Часто в процессе внедрения или активной разработки конфигурации возникает необходимость ежедневного обновления конфигурации базы данных.
1 стартмани
09.09.2019 5538 2 sivin-alexey 2
DroidRAC2 - консоль администрирования кластера серверов 1С:Предприятие 8.3 под Android Промо
DroidRAC2 - клиент для RAS-сервиса кластера серверов платформы 1С:Предприятие 8.3 под Android.
1 стартмани
24.02.2017 29787 13 user700211_a.straltsou 20
Кто уложил 1С, или мониторинг загрузки кластера в разрезе пользователей с помощью Grafana
Мониторингом различных параметров работы кластера 1С в zabbix сейчас уже никого не удивишь. Собственно потребление памяти, процов и места на серверах обычно настраивают первыми. Потом идет мониторинг в разрезе rphost'ов и различные метрики функционирования SQL сервера. Но вот когда уже все это есть, то временами возникает вопрос - какой же конкретно нехороший человек пытается съесть все (ну не все, но много) ресурсы сервера? Можно смотреть в консоль кластера и ловить редиску там. Можно анализировать журнал регистраций, включать технологический журнал или накапливать статистку в специализированных базах 1С. Но, "настоящим" сисадминам проще как-то с внешними скриптами, базами данных и, например, Grafana. Расскажу что у нас получилось.
1 стартмани
02.09.2019 17069 41 DonAlPatino 29
Установка 1C на Ubuntu 19.04
Установка платформы на примере (8.3.15.1565) на Ubuntu 19.04
1 стартмани
28.08.2019 19648 7 gubar 33
Удаленный доступ к 1С используя SSH Тунель
Предлагаемая обработка открывает удаленный доступ к серверу 1С или клиентской машине через SSH-тунель.
1 стартмани
04.08.2019 12649 5 Sedaiko 7
Многопоточная обработка данных Промо
Конфигурация "Универсальные механизмы: пакеты данных". Набор инструментов для быстрой организации отказоустойчивой многопоточной обработки данных.
1 стартмани
23.11.2018 34214 125 _ASZ_ 17
Service Desk. Конфигурация для администрирования баз 1С и техподдержки IT-отдела.
Простенькая конфигурация по обслуживанию баз 1С и IT-структуры организации для системных администраторов, программистов, IT отдела.
2 стартмани
15.07.2019 12742 85 SanchoD 19
Конфигурация: IT Unit
В помощь системным администраторам, занятым обслуживанием малого и среднего бизнеса. Конфигурация по учету оборудования, сервисов, сроков действия, записная книжка контактов, паролей и другое.
1 стартмани
03.07.2019 11616 76 riposte 15
Наводим порядок в Active Directory с помощью ЗУП / ЗИКГУ 3.1 (идентификация, отключение и актуализация учетных записей пользователей)
Продолжаем использовать ЗУП 3.1 совместно с LDAP во имя автоматизации работы системного администратора. В этот раз займемся аудитом учетных записей. Обработка производит сопоставление учетной записи с данными сотрудников из ЗУП, причем с учетом недавних событий (для перехода на ЗУП 3.1 чаще всего используется рекомендованный перенос, не включающий уволенных сотрудников) есть возможность использовать объединенные с помощью COM-соединения данные ЗУП 2.5 и ЗУП 3.1. Также в данной обработке есть возможность массовой корректировки, заполнения данных и отключения учетных записей. Перед использованием обработки для душевного спокойствия необходимо сделать резервную копию Active Directory любым удобным способом. Протестировано на ЗУП 3.1.6 - 3.1.8.
5 стартмани
01.02.2019 15314 59 Туки Туки 15
Отключение доступа уволенным пользователям Промо
Давно хотели навести порядок в пользователях? Надоело, что в списке мешаются давно уволенные сотрудники? Тогда эта обработка для Вас!
3 стартмани
15.10.2013 57963 112 VBod 17
Показатели ОС сервера через WMIC (место на диске, количество оперативной памяти)
Обработка предназначена для исключительных ситуаций, когда программиста 1С не может, обычными средствами, получить такую информацию как место на дисках сервера, количество занятой оперативной памяти и так далее.
5 стартмани
23.11.2018 5180 5 PerlAmutor 0
1С в Windows docker контейнерах
Создаем Docker-контейнер для windows-версии 1C. Контейнеры позволяют подготовить рабочую среду на любой актуальной версии windows. Благодаря данной технологии можно беспрепятственно запускать требуемую версию сервера 1С или несколько серверов различных версий на одном сервере.
1 стартмани
02.10.2018 35842 43 lishniy 42
Автоматическое отключение пользователя из системы 1С:Предприятие в случае, когда пользователь не работает в запущенном сеансе
Доработка сделана через расширение, платформа 8.3.12.1529 (8.3.11.2867), работает на конфигурациях 1С: ЗУП, БП, КА, ERP и т.д. в общем на всех основных конфигурациях 1С: Предприятие. Часто бывает, что в организации пользователь с утра запускает 1С и уходит на весь день по своим делам, а лицензия израсходована. Для оптимизации использования лицензий на предприятии и сделана данная доработка. Доработка позволяет в автоматическом режиме выбрасывать пользователей из системы 1С если пользователь не работает в системе. По умолчанию проверка активности пользователя происходит через 2 часа после запуска системы, но данный параметр можно настраивать отдельно для каждого пользователя. Если пользователь не активен его сессия закрывается. Расширение работает как в клиент - серверном так и в файловом варианте работы 1С
1 стартмани
27.09.2018 10732 42 mityushov.vv 6
Инструкция по установке и настройке SQL Server и 1С Промо
Данный мануал позволит практически каждому пользователю пошагово установить и произвести первоначальную настройку SQL Server и 1С (клиент-серверный вариант). Основой для данной инструкции послужил SQL Server 2014 и 1С Предприятие 8.3, также данная инструкция может работать и для других версий SQL Server и 1С Предприятия.
Скрипт по деплою Deploy.os
Настала пора обновить рабочую базу. Вы заранее положили все нужно в хранилище рабочей базы.
В час X вы начинаете обновление: оповещаете пользователей о том, что надо бы из 1Ски всем выйти (никто конечно не выходит),
начинаете рубить соединения вручную (фоновые задания и самые упертые возвращаются быстрее, чем вы их успеваете удалить),
ставите блокировку на базу (и сами долго мучаетесь с заходом в конфигуратор. Доходит до того, что вы снимаете блокировку, забегаете в конфигуратор и снова ставите блокировку, надеясь, что именно сеанс конфигуратора не умрет. Он умирает),
делаете бекап (он длится что то долго и вы отвлекаетесь на пару статей. Когда возвращаетесь в базе уже тусуются пользователи, а бекап уже морально устарел),
обновляете (ребутнув сервер пару раз, т.к. пользователи так и не перестали заходить),
с чистой совестью идете гулять с семьей/пить пиво с друзьями (вам звонят и говорят, что не могут зайти в базу. Видимо кто то забыл выполнить миграцию).
Как работают скрипты, если подробнее
Сами скрипты написаны на
Если добавить флаг -debug, то будут выведены все подробности (будет включен режим отладки для логоса, если вы понимаете о чем я).
CopyBase.os
Шаг Выполнить бекап.
Выполняет бекап базы источника средствами SQLCMD (в моем примере это рабочая база).
Может быть пропущен, если параметр "Source_SQL.UseBackup" = false .
Выполняет бекап в файл "FileBackup" для SQL базы-источника с параметрами "Source_SQL.Server", "Source_SQL.User", "Source_SQL.Password", "Source_SQL.Base"
Если бекап выполнить не удалось- скрипт завершает работу аварийно.
Шаг Проверить соединения
Проверяет, что в базе-приемника (в моем примере это наша база разработки, в которую мы разворачиваем копию) нет соединений.
Пропускается, если "SQL.UseRestore" = false
Получает количество соединений для SQL базы-приемника с параметрами "SQL.Server", "SQL.User", "SQL.Password", "SQL.Base"
Если получить соединения не удалось или соединений больше 0 - скрипт завершает работу аварийно.
Шаг Выполнить восстановление
Запускает скрипт "Script_Restore" для базы "SQL.Server", "SQL.User", "SQL.Password", "SQL.Base"
Может быть пропущен, если "SQL.UseRestore" = false
Обойтись без отдельного скрипта не получилось, и проще всего восстановления было сделать через sql-скрипт. Этот скрипт можно получить при интерактивной попытке восстановить бекап в нужную базу (указав пути к файлам, расставив нужные флажки и быть может указав дополнительные действия). Скрипт должен восстанавливать именно ту базу, для который запущен оскрипт и именно из файла "FileBackup"
Шаг Удалить файл бекапа
Удаляет файл "FileBackup". Может быть пропущен, если "SQL.UseRestore" = false или "SQL.DelBackup" = false
Шаг Переподключить хранилище
Может быть пропущен, если "Repo.Blind" = false.
Подключается к базе-приемнику с параметрами "EXE1CV8", "Base.Connect", "Base.User", "Base.Password"
Отключает базу от хранилища (на случай, если она подключена к другому хранилищу), подключается к хранилищу с параметрами "Repo.Connect", "Repo.User" и "Repo.Password"
Если "UpdateCfg"=true, то выполняет обновление БД
Deploy.os
Шаг Включить RAS
Может быть пропущен, если "Cluster.UseLock" = false, "UseDynamicUpdate" = false или не заполнен "EXERAS".
Выполняет запуск RAS. Есть смысл, если скрипт выполняется на том же сервере, что и сервер 1С.
Именно с помощью RAS и RAC происходит взаимодействие с кластером, с помощью которого устанавливается блокировка и выполняется принудительное завершение работы у пользователей.
Шаг Устанавить блокировку
Может быть пропущен, если "Cluster.UseLock" = false, "UseDynamicUpdate" = false
Для установки блокировки используется куча параметров:
Шаг Пауза перед удалением сеансов
Может быть пропущен, если "Cluster.UseLock" = false, "UseDynamicUpdate" = false
Скрипт останавливается на время до окончательной блокировки, которое задается параметрами "Cluster.lockstart" или "Cluster.lockstartat"
Шаг Удалить соединения
Может быть пропущен, если "Cluster.UseLock" = false, "UseDynamicUpdate" = false
Удаляет все соединения.
Шаг Выполнить бекап
Выполняет бекап в файл "FileBackup" для SQL базы-приемника с параметрами "SQL.Server", "SQL.User", "SQL.Password", "SQL.Base". В отличие от выполнения аналогичного шага в скрипте CopyBase.os тут выполняется бекап именно для текущей базы, а не для базы-источника.
Шаг Обновить конфигурацию из хранилища
Можно пропустить, если "UpdateCfg"=false
Подключается к базе-приемнику с параметрами "EXE1CV8", "Base.Connect", "Base.User", "Base.Password"
Подключается к хранилищу с параметрами "Repo.Connect", "Repo.User" и "Repo.Password", получает из него все обновления и выполняет обновление БД. Если указан флаг "UseDynamicUpdate" = true то обновление динамическое.
Шаг Запуск миграции
Можно пропустить, если "UpdateCfg"=false
Запускает 1С с параметром запуска указанным в "UpdateLaunchParameter". Подразумевается, что в самой базе уже есть код, который по этому параметру запуска полностью автоматически выполнит обновление. Для баз на основе БСП уже все есть и этот ключ "ВыполнитьОбновлениеИЗавершитьРаботу", но это не точно.
Шаг Снять блокировку
Может быть пропущен, если "Cluster.UseLock" = false, "UseDynamicUpdate" = false
Снимает блокировку и разрешает вход пользователям.
Указание параметров и файлы настроек
Пример файлов с настройками лежит в папке bin.
Параметры читаются за счет библиотеки oscript ..\..\..\src\deploy.os
Прочитает файлы из файла param_os.json и нормально отработает.
Переданный файл параметров
Файл с параметрами можно указать явно, причем файлов может быть несколько - они должны быть разделены ;. Каждый последующий файл может переопределить параметры предыдущего.
Особенности чтения файлов параметров
При разработке я придерживался правила - один параметр указывается один и только один раз. Когда обновляется 1Ска на сервере - нужно изменить только один параметр, а не 15 файлов.
Для этого при чтении параметров работает механизм подстановки
и в качестве параметра можно указать другой файл для чтения. Вот пример файла param_os.json, который подтянет все остальные параметры из других файлов
Флаги запуска
Можно перед указанием файлов указать флаги -debug и -testparam . Что они делают описано выше.
Читайте также: