Фоновое обновление конфигурации базы данных что это
Диалог фонового обновления конфигурации базы данных
Для вызова операции фонового обновления конфигурации базы данных нужно выбрать пункт меню Конфигурация — Конфигурация базы данных — Фоновое обновление конфигурации базы данных.
Рис. 24. Диалог фонового обновления конфигурации базы данных
Нажатие кнопки Запустить запускает фазу обработки. При этом в окне служебных сообщений отображается текст:
Старт фонового обновления конфигурации БД прошел успешноКонфигурация недоступна для редактирования. Выполняется фоновое обновление конфигурации базы данных.
После запуска фонового обновления конфигурация блокируется от изменения. Во время выполнения любой фазы, работу фонового обновления можно приостановить с помощью кнопки Приостановить. Для того, чтобы продолжить выполнение фонового обновления служит кнопка Продолжить.
После окончания фазы обработки начинается фаза актуализации, во время выполнения которой можно перевести систему к выполнению фазы принятия изменений с помощью кнопки Завершить или отказаться от обновления с помощью кнопки Отменить.
СОВЕТ. Рекомендуется отменять запущенный процесс фонового обновления конфигурации базы данных в тех случаях, когда не планируется завершение фонового обновления конфигурации базы данных (например, процесс поставлен на бесконечную «паузу»). Выполнение данной рекомендации положительно скажется на характеристиках системы, т. к. не будет происходить регистрация изменений для выполнения фазы актуализации.
Флажок Разрешить динамическое обновление служит для того, чтобы определить, нужно ли при нажатии на кнопкуЗапустить попытаться выполнить динамическое обновление вместо запуска процесса фонового обновления конфигурации базы данных. Если этот флажок установлен, то сразу же после нажатия на кнопку Запустить будет производиться проверка на возможность выполнить динамическое обновление конфигурации. В случае, когда конфигурация допускает такую возможность, вместо фонового обновления конфигурации базы данных будет производиться динамическое обновление.
Флажок Выполнять на сервере служит для того, чтобы определить, где будет выполняться запуск, завершение и отмена. Если этот флажок сброшен, то данные действия будут выполняться на стороне клиентского приложения, а если установлен — то на стороне сервера «1С:Предприятия». Кроме того, если установлен данный флажок, то можно выполнять обновление конфигурации только при наличии права ОбновлениеКонфигурацииБазыДанных, без установленного права Администрирование.
Сохранение конфигурации базы данных в файл
Для сохранения конфигурации базы данных в файл на диск нужно выбрать пункт Конфигурация — Конфигурация базы данных — Сохранить конфигурацию БД в файл. На экран выводится стандартный диалог выбора файла. Необходимо выбрать каталог и указать имя файла, в который будет записана конфигурация базы данных.
Сохраненный файл конфигурации базы данных необходим для операции сравнения и объединения конфигураций (см.здесь).
Сравнение конфигурации и конфигурации базы данных
Если в процессе внесения изменений в конфигурацию требуется получить отчет об отличиях от конфигурации базы данных, то следует выбрать пункт Конфигурация — Конфигурация базы данных — Сравнить, объединить с конфигурацией БД.
В случае необходимости можно восстановить измененные объекты.
Отказ от изменений в конфигурации
Для отказа от изменений в конфигурации достаточно выбрать пункт Конфигурация — Конфигурация базы данных — Вернуться к конфигурации БД.
ПРИМЕЧАНИЕ. Пункты меню Сохранить конфигурацию БД в файл. и Вернуться к конфигурации БД доступны даже в случае закрытой редактируемой конфигурации. Команда Вернуться к конфигурации БД по-прежнему недоступна, когда информационная база подключена к хранилищу конфигурации.
Запуск «1С:Предприятия»
В конфигураторе предусмотрен запуск режима 1С:Предприятие. Для этого нужно выбрать пункт Сервис — 1С:Предприятие. Часто необходимо запустить «1С:Предприятие» в режиме отладки. Для этого существует командаОтладка — Начать отладку (подробнее про отладчик см. здесь).
Если конфигурация была модифицирована (были произведены изменения), то конфигуратор выводит вопрос:Редактируемая конфигурация отличается от конфигурации базы данных. Произвести обновление конфигурации базы данных? Для сохранения внесенных изменений следует выбрать кнопку Да.
Если выбрана кнопка Нет, то режим 1С:Предприятие запускается без сохранения конфигурации.
В случае отказа на экран выводится вопрос: Конфигурация базы данных не соответствует сохраненной конфигурации. Продолжить? Если выбрана кнопка ОК, то запускается режим 1С:Предприятие с прежней конфигурацией базы данных. Если выбрана кнопка Отмена, то запуск режима 1С:Предприятие не производится.
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.
Фоновое обновление конфигурации базы данных
Общее описание
Обновление конфигурации базы данных, которое связано с реструктуризацией базы данных, выполняемое для информационных баз большого объема, может занимать длительное время. Во время выполнения обновления, работать с информационной базой не возможно.
Для того чтобы свести потери времени на эту операцию к минимуму, существует специальный режим, выполняющий обновление конфигурации базы данных в фоновом режиме. Фоновое обновление конфигурации базы данных характеризуется следующими особенностями:
● Доступно только в клиент-серверном варианте информационной базы;
● Может выполняться при закрытом конфигураторе.
● Большая часть фонового обновления конфигурации базы данных выполняется без монопольного доступа к базе данных (включая выполнение операции реструктуризации базы данных).
● Во время фонового обновления недоступны следующие операции:
● Отладка прикладного решения.
● Выполнение операции обновления конфигурации базы данных.
● Не допускается использование методов УстановитьРежимАгрегатов(), УстановитьИспользованиеАгрегатов(),ПерестроитьИспользованиеАгрегатов().
● Изменение содержимого плана счетов или плана видов расчета, если связанный с ним регистр бухгалтерии или регистр расчета участвует в операции фонового обновления. Попытка изменить содержимое таких планов счетов или планов вида расчета вызывает ошибку.
● Фоновое обновление конфигурации можно поставить «на паузу» длительностью не более 48 часов. Если «пауза» продлится более 48 часов — фоновое обновление будет отменено.
● Не поддерживается работа фонового обновления для конфигураций, находящихся в режиме совместимости с версией 8.1 (см. здесь).
● Не поддерживается работа фонового обновления конфигурации базы данных при работе на СУБД IBM DB2 9.1.
Процесс фонового обновления конфигурации состоит из нескольких этапов:
● Фаза обработки:
● Выполняется длительное время.
● Запуск данной фазы может быть выполнен любым способом:
● Интерактивно, из конфигуратора;
● Из встроенного языка (с помощью соответствующих методов);
● С помощью режима пакетного запуска конфигуратора.
● Во время выполнения фазы пользователи могут работать с информационной базой.
● Выполняется реструктуризация основного объема данных для следующих объектов конфигурации:
● Во время выполнения фазы обработки, система фиксирует все измененные данные для вышеперечисленных объектов, по аналогии с механизмами обмена данными.
● Фаза актуализации:
● Запускается автоматически, после окончания фазы обработки, с интервалом 1 минута.
● Во время выполнения фазы пользователи могут работать с информационной базой.
● Фаза состоит из автоматически повторяющихся итераций. Каждая итерация анализирует изменения, накопленные с момента выполнения предыдущей итерации (или завершения фазы обработки) и выполняет реструктуризацию накопленных изменений.
● Итерации завершаются в момент перехода к следующей фазе.
● Фаза принятия изменений:
● Требует монопольный доступ к информационной базе.
● Во время выполнения фазы пользователи не могут работать с информационной базой.
● Первым шагом этой фазы выполняется актуализация данных, накопленных с момента проведения последней, перед текущей фазой, итерации фазы актуализации.
● Затем выполняется реструктуризация данных, не участвующих в фазах обработки и актуализации. В этих данных не предполагается большого объема изменений, и их реструктуризация выполняется быстро.
● Следующим шагом выполняется принятие всех изменений, выполненных в базе данных.
● После этого обновление конфигурации базы данных завершается.
Если фоновое обновление запущено так, что не требуется выполнения реструктуризации базы данных, то в этом случае все обновление выполняется в фазе принятия изменений, переход к которой возможен сразу после начала фонового обновления.
Во время фонового обновления имеется возможность остановить работу сервера или поставить процесс фонового обновления «на паузу».
После остановки сервера или после аварийного завершения рабочего процесса, обслуживающего системное фоновое задание, выполняющее обновление, создание первого сеанса будет происходить несколько большее время, нежели обычно. Это связано с восстановления фонового обновления. Однако сам процесс фонового обновления находится в приостановленном состоянии. Для продолжения работы необходимо возобновить работу фонового обновления. Такое поведение реализовано для того, чтобы не произошло зацикливание системы в том случае, если причиной аварийного завершения рабочего процесса, обслуживающего фоновое обновление, является собственно фоновое обновление.
После восстановления работоспособности сервера, фоновое обновление конфигурации базы данных продолжает работу следующим образом:
● Если работа была прервана в фазе обработки, то процесс продолжается с последнего объекта конфигурации, обработка которого не была завершена.
● Если работа была прервана в фазе актуализации — незаконченная итерация начинается заново.
СОВЕТ. Рекомендуется отменять запущенный процесс фонового обновления конфигурации базы данных в тех случаях, когда не планируется завершение фонового обновления конфигурации базы данных (например, процесс поставлен на бесконечную «паузу»). Выполнение данной рекомендации положительно скажется на характеристиках системы, т. к. не будет происходить регистрация изменений для выполнения фазы актуализации.
При выполнении операции фоновой реструктуризации следует учитывать некоторые особенности работы системы:
● Если регистр бухгалтерии или накопления добавлен в состав разделителя, то данный регистр обрабатывается во время фазы принятия изменений.
● Если изменен тип независимого разделителя (см. здесь), то все объекты, входящие в состав этого разделителя, обрабатываются во время фазы принятия изменений.
● Если изменяется тип измерения, входящего в основной отбор независимого регистра сведений, то такой регистр обрабатывается во время фазы принятия изменений.
Автоматическое обновление и резервное копирование 1С при помощи powershell
Суть рассматриваемого вопроса изложена в заголовке, повествование разобьем на три части. Отдельно внизу будут приведены тексты скриптов.
1) Предисловие
Вопрос необходимости резервного копирования в автоматическом режиме не подлежит сомнению ни у корифеев, ни у новичков. В статье рассмотрим резервное копирование средствами 1С (что имеет ряд преимуществ перед копированием средствами СУБД). При этом будут применены средства пакетного запуска платформы 1С, powershell и планировщик задач Windows.
Задачи обновления информационных давно автоматизированы, но только для типовых конфигураций, либо тех, что используют библиотеку стандартных подсистем. В моем случае мы работаем со старенькой Альфа-Авто редакции 4, которая распространяется на 12 серверов. Изменения вносятся примерно два раза в неделю, поэтому выгода от автоматизации налицо.
В обоих случаях мы имеем следующие исходные данные:
2) Резервное копирование
После прочтения указанных ссылок мы уже знаем, что надо сделать, чтобы запустить скрипт powershell, поэтому сразу перейду к делу.
Сделать резервную копию информационной базы в пакетном режиме очень просто, надо только «выгнать» всех пользователей. Делать мы это будем, подключившись COM-объектом к базе данных. Это в нашем примере делает функция ExitAll. В тело функции зашито, что она вызывается на том сервере, на котором, собственно, установлен кластер серверов 1С. Вызовите эту функция безо всяких параметров в своем скрипте на сервере — и ВСЕ пользователи из ВСЕХ баз кластера вылетят.
Приношу свои извинения человеку, чьим кодом я воспользовался при написании этой процедуры — авторство восстановить не удалось.
После этого следует вызвать функцию BackUpBase с параметром — имя информационной базы. У меня во всех ИБ есть служебный администратор с одинаковыми учетными данными, поэтому я их просто захардкодил. При необходимости можно их параметризовать, либо обойтись аутентификацией ОС.
Итоговый скрипт сохраняем в файл.
В планировщике задач создаем «Простую задачу», имя, разумеется, на ваше усмотрение.
У меня работает ежедневно, но и тут хозяин — барин. Запускать лучше всего ночью, когда никто не работает, например, в 3:00. Действие для задачи — «Запустить программу». Сама программа у нас «powershell.exe». А вот ее аргументы —
где ExitAllUsersAndBackup.ps1 — как раз наш сохраненный скрипт.
-ExecutionPolicy RemoteSigned — ключ, который разрешает выполнение пакетных скриптов powershell, если в системе они глобально не разрешены. Работает через раз (возможно, не хватает компетенции чтобы разобраться, но закономерности не нашёл). В случаях, когда не работает с этим ключом, приходится разрешать выполнение скриптов для всего сервера.
Для этого Win+R, powershell.exe,
и подтверждаем действие.
Время работы с данными скриптами — более трех месяцев. Перебои были, но связаны с отключением электричества и прочими внешними факторами.
3) Обновление конфигурации
После того, как все пользователи вышли (или выгнаны, как в предыдущем случае), можно обновлять конфигурацию. Наличие регламентных заданий может помешать обновлению, так как с момента отключения всех пользователей и открытия конфигуратора для загрузки конфигурации вполне может начать работу какое-то задание. Поэтому расписание следует обдумать.
Конфигурацию мы храним на ftp-сервере, на который помещаем ее вручную. Файл конфигурации называется GK.cf, в приведенном примере обновляется одна единственная конфигурация. Потенциально можно так же обновлять и несколько различных конфигураций.
На ftp рядом с GK.cf помещаем файл с названием flag.txt. Наличие этого файла сигнализирует о том, что обновляться надо. Можно проверять наличие самого фйла GK.cf, но мы используем флаг так же для других целей.
Скрипт работает следующим образом:
Надежность этого скрипта чуть меньше. Обновление проходит до конца на 100% в тех случаях, когда меняется структура метаданных. В других случаях бывает, как я предупреждал ранее, появление активного пользователя. В результате конфигурация загружена в базу, но конфигурация базы данных не обновлена (снова прошу прощения за подобную кривоватую терминологию перед людьми, не связанными с 1С). В остальном — полет нормальный.
Скрипт резервного копирования
Скрипт обновления конфигурации
Благодарю за внимание. Готов к конструктивной критике.
Длительные операции на сервере
Область применения: управляемое приложение.
1. При разработке конфигураций следует избегать длительных вызовов из клиентского кода в серверный. Все длительные серверные вызовы, которые могут выполняться более 8 секунд в обычных сценариях работы пользователя, следует выполнять асинхронно, с помощью фонового задания.
К таким операциям относятся: формирование отчета, групповая обработка объектов, загрузка или выгрузка данных в другое приложение, заполнение больших табличных частей и т.п.
В противном случае такие вызовы могут привести к потере работоспособности приложения или затруднению работы с ним:
2.1. Общий подход к асинхронному выполнению длительных серверных операций с помощью фонового задания:
а для прочих мест – выводится блокирующая форма ( РежимОткрытияОкна = БлокироватьОкноВладельца ), на которой размещена декорация с анимированной картинкой и кнопка «Отмена» :
2.2. Асинхронное формирование отчета требуется только для тех отчетов, которые
Поведение таких отчетов должно быть максимально похожим на поведение отчетов на базе СКД, а именно:
Пример выполнения функции в фоновом задании при использовании в конфигурации Библиотеки стандартных подсистем. В модуле менеджера объекта размещена функция, которая выполняет поиск настроек и возвращает их:
Функция ОпределитьНастройкиУчетнойЗаписи(АдресЭлектроннойПочты, Пароль) Экспорт
.
Возврат Настройки;
КонецФункции
В форме объекта выполняется вызов этой функции в фоновом задании в три этапа:
1) запуск фонового задания на сервере,
2) подключение обработчика завершения фонового задания на клиенте,
3) обработка результата выполнения фонового задания.
// 2. Подключение обработчика завершения фонового задания.
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
Оповещение = Новый ОписаниеОповещения(«ПриЗавершенииПоискаНастроек», ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
КонецПроцедуры
// 3. Обработка результата выполнения фонового задания.
&НаКлиенте
Процедура ПриЗавершенииПоискаНастроек(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда // Пользователь отменил задание.
Возврат;
КонецЕсли;
Если Результат.Статус = «Ошибка» Тогда
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
КонецЕсли;
Настройки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата);
УстановитьНастройкиУчетнойЗаписи(Настройки);
Методическая рекомендация (полезный совет)
3.1. При каждом выполнении фонового задания его результат помещается во временное хранилище на время жизни формы:
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, ПараметрФоновогоЗадания);
Если длительная операция выполняется пользователем многократно, пока эта форма открыта, то временные хранилища накапливаются, что вызывает рост потребления памяти. Поэтому для уменьшения расхода оперативной памяти в большинстве случаев рекомендуется очищать временное хранилище сразу после получения результата фонового задания:
Настройки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата); // Данные во временном хранилище больше не требуются.
Если же результат фонового задания требуется сохранять на протяжении нескольких серверных вызовов, то необходимо передавать фиксированный адрес заранее инициализированного временного хранилища:
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения,
«Справочники.УчетныеЗаписиЭлектроннойПочты.ОпределитьНастройкиУчетнойЗаписи»,
АдресЭлектроннойПочты, Пароль);
КонецФункции
4. Если в конфигурации реализуются алгоритмы, инициирующие запуск фоновых заданий или запись данных информационной базы без участия пользователя (например, регулярное обновление информации в открытой форме), то в них следует проверять, что в текущем сеансе не установлен монопольный режим. В противном случае, следует блокировать попытки выполнения таких действий. Например:
Если МонопольныйРежим() Тогда
Возврат;
КонецЕсли;
5. В некоторых случаях возникает необходимость в выполнении длительных операций, требующих установки монопольного режима доступа к информационной базе. Например:
При этом необходимо сначала устанавливать монопольный режим, а затем выполнять запуск фонового задания, которое реализует саму длительную операцию. В этом случае фоновым заданием будет унаследован монопольный режим, ранее установленный из пользовательского сеанса (см. документацию к платформе).
На время выполнения этого фонового задания следует блокировать весь интерфейс приложения, открывая форму ожидания завершения операции в режиме РежимОткрытияОкна = БлокироватьВесьИнтерфейс. Блокировать интерфейс приложения требуется потому, что на время выполнения задания полноценная работа пользователя с приложением уже невозможна:
* Примечание: ошибки записи также возникают в тех случаях, когда объекты записываются программно, например, из обработчиков ожидания. В них также следует проверять монопольный режим согласно п.5.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Каждый, кто занимался обновлением информационных баз 1С:Предприятие знает, что эта, в общем-то простая, операция становится очень трудоемкой и отнимает много времени если обновляемых баз много. Процесс обновления требует постоянного внимания со стороны специалиста: там подтвердить, там принять изменения, там согласиться, хотя сам процесс вмешательства, как правило, не требует (мы будем рассматривать находящиеся на поддержке конфигурации). Существенно облегчить жизнь поможет автоматизация этого процесса, о чем мы сегодня и поговорим.
Если у вас случайно оказались лишние 14 700 руб, то вы можете приобрести специализированный продукт 1С:Обновление информационных баз в пакетном режиме, остальным мы хотим предложить вспомнить возможности ключей запуска 1С, которые в умелых руках позволяют творить чудеса, причем совершенно бесплатно.
производит обновление конфигурации базы данных.
Как видим, все необходимые инструменты есть, осталось научиться их правильно применять. Откроем блокнот и начнем написание нашего скрипта:
Так как очень часто в названиях папок с базами присутствуют русские буквы, установим кодировку cp 1251, иначе доступ к ним окажется невозможным. Несмотря на это в окне интерпретатора вы все равно будете видеть «крякозябры».
Следующим шагом зададим переменные. Это нужно сделать для того, чтобы, например при обновлении платформы или смене релиза не править весь скрипт, а изменить всего-лишь одну переменную. Обращаем внимание, что если значение переменных или опций содержат пробелы, то их необходимо заключать в кавычки.
Если посмотреть внутрь каталога обновлений, то мы увидим следующую структуру:
Таким образом можно следует указать пути ко всем необходимым каталогам обновлений. После чего можно переходить непосредственно к обновлению.
Рассмотрим ключи подробнее:
Для примера, вторую запись сделаем для обновления ИБ на сервере:
Добавив строки для всех требующих обновления баз сохраним файл как update-1C.bat, после чего запускаем его в конце рабочего дня и смело уходим домой, к утру все необходимые базы будут обновлены.
Обратите внимание, скрипт запускает 1С в фоновом режиме, т.е. внешне как-бы ничего не происходит, но если мы откроем диспетчер задач, то найдем там запущенный фоновый процесс.
После обновления не будет лишним изучить файлы логов, чтобы убедиться, что все прошло как надо, либо оперативно обнаружить и исправить ошибки.
И, конечно же, не забывайте делать резервные копии баз, особенно перед обновлением.