Закрыть 1с по расписанию
Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.
Здравствуйте!
Пытаюсь настроить выполнение внешней обработки для АА5 через пакетный файл и планировщик windows. Все замечательно отрабатывает при открытом сеансе windows. Как только в планировщике windows устанавливаю параметр "Выполнять вне зависимости от регистрации пользователя" запускается процесс 1cv8.exe, в журнале регистрации АА5 появляются записи о регистрации пользователя, и больше ничего не происходит. Нашел, что при таком запуске АА5 в процедуру
и происходит зацикливание. Как можно обойти проверку инициализации внешних компонент, или как возможно запустить внешнюю обработку по расписанию не изменяя конфигурации?
Добрый день.
В данном случае мы рекомендуем пользоваться механизмом фоновых заданий. Все необходимое в конфигурации для этого присутствует.
А нельзя ли поподробнее? Я нигде не нашел ответ как запустить внешнюю обработку, через фоновые задания, не изменяя конфигурации. Напишите, пожалуйста, как это сделать, или где это подробно описано.
Ответа так и не будет? Я видел несколько похожих тем на форуме, с теми же проблемами - ни в одной нет решения. В моем понимании пакетный запуск - это стандартная функция 1С Предприятие. Если конфигурация АА5 не запускается в данном режиме, то это ошибка конфигурации. Если можно как-то запустить внешнюю обработку через фоновые задания, не изменяя конфигурации - напишите как, или дайте ссылку где это описано.
Добрый день, Николай. АРМ Администратор - закладка "Фоновые задания" - Добавить Регламентное задание - Вид задания: произвольная обработка - на закладке "Параметры" подтягивается обработка, которая ранее была добавлена в справочник "Внешние печатные формы" - в контекстном меню "расписание" настраивается расписание данного задания
Здравствуйте, Светлана. Обработка без регламентного задания запускается и работает. Насколько я понял из описания регламентного задания "Произвольная обработка" - "Произвольная обработка" вызывает методы, которые прописаны в общем модуле "фзФоновыеЗадания". Как возможен запуск обработки без указания метода в регламентном задании? Какой метод должен быть указан?
Нужно использовать регламентное задание "Произвольная обработка". В произвольной обработке указываете созданную Вами процедуру, которая выполняет определенные действия в Вашем случае это запуск внешней обработки. Процедуру можно прописать в любом глобальном модуле. лучше создайте собственный модуль.
Обсуждения про использование произвольной обработки есть на форуме. Например Здесь.
Николай, правильно ли мы понимаем, что:
1) есть файловая база (фоновые задания на которой запущенного 1С не заработают)
2) есть windows
3) в windows есть планировщик задач
4) Вы хотите настроить планировщик windows, чтобы он например ежедневно в 4:00 запускал Альфу и в Альфе при этом автоматически запускалась некая обработка
При обновлении конфигурации через расширение столкнулся с такой ситуацией, что пользователи не обращают внимания на уведомления и продолжают день-два-три работать без обновлений, потом когда оказывается, что доработка была для них, они возмущаются, почему у меня не работает то, что вы сделали. Так вот, я подумал: А почему же вы не закрываете программу на ночь, не видите уведомлений, что ли. Решил я на всякий случай, после обновления, ночью, когда все спят, делать завершение всех сеансов пользователей 1С.
Когда думал, как же это можно сделать, копал в Google разные сайты, а также Infostart. Но вот на Инфостарте не нашел простого решения: везде купить разработку, там такая, там другая.
Оказалось решение очень простым.
Для этого понадобится нам стандартная обработка "Блокировка работы пользователей" - она как раз таки также выполняет и данную задачу.
Открываем обработку Администрирование -> Обслуживание -> Блокировка работы пользователей
Здесь устанавливаем поля, подробно описывать не буду, но обратить внимание стоит на дату начала и дату окончания.
Дата начала - это дата, с которой база будет недоступна для открытия, т.е до этого времени у всех пользователей автоматически завершатся сеансы.
Дата окончания - это дата, до которой база будет недоступна.
После Даты окончания база будет доступна для всех пользователей.
Далее нажимаем "Установить блокировку" после чего выдаст предупреждение "Указано слишком большое время начала действия блокировки. " нажимаем "Запланировать".
ИТОГ: Вопрос решен. Всех пользователей выгнал ночью. Утром, когда будут заходить, все обновления применяются.
Специальные предложения
(2)Зато все админы и прогеры умеют ставить блокировку работы.
А статья именно для целей админов и программистов была написана вами.
Ждем статью - регламентное удаление помеченных объектов по расписанию.
Спорное утверждение. Если это так, то кто поставил статье 3 плюса? Должны были минуснуть, если умеют.
(9)эникеи и джуниорские джуны.
Данная функция гуглится же в одну строчку. )))) Ладно, все имеет место быть
(16) я, в бытность эникея, гуглил вот так "как отключить пользователей в 1с файловая база" после того как прочитал пять статей про выброс из серверной 1Ски
(17) Да, первая ссылка гугл подходит, хоть и с замечаниями.
Во-первых, почему-то гугл находит внутри страницы раздел с описанием как это сделать в серверной базе данных.
Если по ссылке провалиться, то также откроется раздел для серверной базы данных. Если прокрутить вверх, то там есть информация про обработку для 8.2. Операции - обработки - Блокировка установки соединений с информационной базой. В принципе, можно догадаться что подобная обработка есть в 8.3 и найти ее во всех функциях, названия похожие.
И опять насчет поиска гугл. Запрос на второй картинке почему-то в заголовке выдает информацию про RDP. Причем здесь RDP? Ху ноуз. Так что, да, найти можно, но придется прочитать пять статей про выброс из серверной 1Ски и учитывать что гугл неверно находит информацию внутри страницы, хотя сама страница найдена правильно.
(18) ))) Замечания, потому что в будние эникея не умел я пользоваться кавычками, плюсиками и прочими приблудами гугла поиска.
Хорошо хоть вопрос задал более менее правильно. И тогда вышла совсем другая статья на первый план.
А с RDP да, весело, но думаю если изменить вопрос, то и результат будет лучше
А где, собственно, регламентное задание .
Я думал сделали, чтобы каждый день завершало подвисшие.
Ну то есть регламентное - с расписанием на каждый день\час\месяц.
А тут одноразовая типовая выгонялка, про которую все знают ((((
(5) Я про эту возможность не знал, спасибо. Название обработки "Блокировка работы пользователей" говорит о том что она умеет блокировать начало новых сеансов работы с базой. О том что она еще и завершает сеансы пользователей я не знал.
Есть скрипт, который:
1. Скажет пользователям, что им пора отдыхать, подождет минутку и выгонит всех, кто не успел выйти сам
2. Установит блокировку входа
3. Сделает бекап
4. Получить последний cf с хранилища или из какого-то другого места
5. Накатит его на продуктив
6. Запустит в режиме предприятия, дождется выполнения обновления и согласиться с лицензионным соглашением, если нужно
7. Снимет блокировку пользователя
И всё это будет транслировать красиво в консоль, slack и какой-нибудь телеграм (если чутка допилить)
Теперь вечера обновления проходят спокойно и за минуту-другую. Надо только запустить скрипт и потом посмотреть что в итоге всё получилось без ошибок.
(6)С хранилища на продуктив? У кого-то так бывает? Обычно в хранилище изменения по пачке задач, часть из которых прошла приемку (и надо накатить), часть готовы, но еще не проверялись, а часть вообще содержат нерабочий код.
(10) Очень часто бывают релизные хранилища. Как раз оттуда и делают сборку для продуктива или накатывают полный cf.
Всех выгоняешь, а когда в следующий раз заходишь. они опять там все сидят.
Клиенты у них не закрываются, висят и долбятся в свой путь подключения, и, когда находят его, снова заходят в базу.
В файловом режиме, для того, чтобы этот метод помог, нужно в период кулдауна переименовать папку с базой, поменять у себя путь, и вот тогда спокойно зайти (после кулдауна) и сделать с базой нужные вещи.
После этого переименовать папку обратно, чтобы остальные смогли войти.
В клиент-сервере же эта шляпа вообще не нужна, там консоль кластера есть.
(7) консоль кластера есть, но этой обработкой: 1)я безопасно завершаю сеансы(с предупреждением пользователей); 2)я блокирую базу на время(в которое выполняю работы, и на протяжении этого времени, я могу зайти в базу, а другие нет)
в этом то и фишка
Надоело делать резервную копию 1с вручную? Сейчас расскажем, как можно делать резервную копию автоматически – по расписанию.
Вариант для серверной базы данных.
1. Создаем файл с расширением bat приблизительно следующего содержания:
Расшифровка кода операторов командной строки:
set kat=C:Program Files (x86)1cv88.3.9.2170 – устанавливаем путь к исполняемым файлам 1с
set serv=192.168.0.1 – указываем ip или имя сервера 1с
set base=Base – указываем имя базы данных на сервере
set user=Администратор – логин Администратора 1с
set pass=Пароль – Пароль Администратора
set passblok=КодРазрешения – пароль для снятия блокировки работы пользователей в 1с. По умолчанию равен = КодРазрешения
Этот пароль можно посмотреть(и/или) поменять в консоле Администрирования баз данных 1с
set pathexport=“f:Backup1c82_%date%.dt” – указываем путь куда будет выгружаться резервная копия (имя файла будет иметь вид 1с82_01.01.2001.dt на текущую дату)
“%kat%in1cv8.exe” ENTERPRISE /S %serv%\%base% /N %user% /P %pass% /DisableStartupMessages /C ЗавершитьРаботуПользователей
-завершение работы пользователей (через 1 минуту) и установка блокировки на вход новых пользователей
“%kat%in1cv8.exe” CONFIG /S %serv%\%base% /DisableStartupMessages /DumpIB %pathexport% /N %user% /P %pass% -NoTruncate /UC %passblok%
-непосредственно выгрузка резервной копии
“%kat%in1cv8.exe” ENTERPRISE /S %serv%\%base% /N %user% /P %pass% /DisableStartupMessages /C РазрешитьРаботуПользователей /UC %passblok%
-снятие блокировки на вход пользователей
2. Запуск этого bat файла по расписанию через планировщик заданий Windows
Планировщик заданий находится: Панель управления Windows- Администрирование-Планировщик заданий
- Переходим на вкладку триггеры – создаем новый триггер с расписанием
- Переходим на вкладку действия и создаем новое действие “Запуск программы”, указав путь к bat файлу. Жмем ОК – все выгрузка БД 1с по расписанию настроена
P.S. Если выгрузка занимает длительное время целесообразно создать несколько задач отличных по времени к примеру
- Заблокировать базу в 02:50
- Выполнить выгрузку базы 1с в 03:00
- Разблокировать базу в 05:00
Похожие записи
Резервное копирование баз 1с через командную строку : 2 комментария
Блокировка не работает =(
Что конкретно не работает? Не завершается работа пользователей или новые могут входить? База какая серверная или файловая?
Нужно создать ярлыки(в любой папке щелкните правой клавишей мыши — Создать — Ярлык) с командами:
Отключение или Завершение работы пользователей:
Для Серверного варианта:
«C:Program Files1cv81in1cv8.exe» ENTERPRISE /S /N /P /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
Рабочий пример:
«C:Program Files (x86)1cv81in1cv8.exe» ENTERPRISE /SSQLSRVMyDB /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /CЗавершитьРаботуПользователей
Разрешить работу пользователей:
Для Файлового варианта:
«C:Program Files1cv81in1cv8.exe» ENTERPRISE /F /N /P /WA- /AU- /DisableStartupMessages /C РазрешитьРаботуПользователей /UC ПакетноеОбновлениеКонфигурацииИБ
Рабочий пример:
«C:Program Files (x86)1cv81in1cv8.exe» ENTERPRISE /FD:FileBasesmyDB /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /CРазрешитьРаботуПользователей /UCПакетноеОбновлениеКонфигурацииИБ
Для Серверного варианта:
«C:Program Files1cv81in1cv8.exe» ENTERPRISE /S /N /P /WA- /AU- /DisableStartupMessages /C РазрешитьРаботуПользователей /UC ПакетноеОбновлениеКонфигурацииИБ
Рабочий пример:
«C:Program Files (x86)1cv81in1cv8.exe» ENTERPRISE /SSQLSRVMyDB /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /CРазрешитьРаботуПользователей /UCПакетноеОбновлениеКонфигурацииИБ
Для успешного выполнения резервного копирования в информационной базе не должно быть активных сеансов пользователей. Чтобы автоматически завершить работу пользователей, перед выполнением бэкапа, в Effector Saver предусмотрен соответствующий механизм.
Для настройки завершения работы пользователей 1С:Предприятия перейдите на вкладку «Отключение пользователей».
Обратите внимание: в бесплатной редакции Effector Saver данный функционал не реализован. В момент запуска бэкапа пользователям нужно покинуть базу 1С:Предприятия, иначе выгрузка базы не произойдет.
Установите флаг «Завершить работу пользователей 1С:Предприятия». Из выпадающего меню выберете один из вариантов:
- «Завершить сеансы на сервере 1С:Предприятие»;
- «Вызвать штатное завершение работы пользователей».
В случае выбора «Завершить сеансы на сервере 1С:Предприятие» — отключение пользователей происходит путем принудительного завершения сеансов на сервере 1С:Предприятия. Этот вариант подходит только для клиент-серверных баз 1С:Предприятия.
Если Вы изменяли стандартные настройки сервера 1С, возможно потребуется изменить параметры, которые идут ниже.
Если в кластере 1С:Предприятия создан пользователь «Администратор кластера», установите флаг «Кластер требует авторизации». Заполните поля: «Имя администратора кластера:» и «Пароль администратора кластера:».
Важно: не путайте данного пользователя с пользователем базы 1С:Предприятия и пользователем «Администратор центрального сервера».
В консоли администрирования сервера 1С:Предприятия администраторы кластера расположены по пути:
«Console Root» — «1C:Enterprise 8.3 Central Servers» — «(*)имя компьютера» — «Кластеры» — «Локальный кластер» — «Администраторы».
Если порт подключения к агенту сервера отличный от стандартного, установите флаг «Используется нестандартный порт агента сервера». Заполните поле «Порт агента сервера:», по умолчанию — 1540.
Для определения порта агента сервера зайдите в консоль администрирования сервера 1С. При клике правой кнопкой мыши на имя компьютера из выпадающего меню выберете «Свойства» — «Параметры центрального сервера 1С:Предприятия» — «IP порт:».
Второй вариант, откройте «Службы». Выберите «Агент сервера 1С:Предприятия…» и откройте окно «Свойства», строка «Исполняемый файл:».
В случае выбора «Вызвать штатное завершение работы пользователей» — отключение пользователей происходит путем вызова встроенного в типовые конфигурации механизма завершения работы пользователей. Данный механизм основан на использовании процедуры «Блокировка установки соединений с информационной базой».
Сегодня мы побеседуем о блокировке сеансов пользователей 1С, их отключению от базы 1С и, также об автоматизации этих процессов. Т.е., как уже ясно, о повседневной работе персонала, обслуживающего 1С Предприятие.
Остановимся на самом начале. А именно на том месте, когда 1С, при попытке сохранить обновленную конфигурацию, скажет: — «Ошибка исключительной блокировки информационной базы». Происходит такое от того, что в информационной базе в момент сохранения работают другие пользователи. Для дальнейшего обновления необходимо выгрузить пользователей и продолжить сохранение.
Также одним из вариантов применения автоматической блокировки сеансов по расписанию на сервере 1С будет настройка резервного копирования баз 1С.
Вообще, в жизни найдется много ситуаций, когда может потребоваться предложенная для обсуждения функциональность.
Средство разработки Powershell (PS)
Сначала нам нужно определиться со средством для написания нашей управляющей подпрограммы (скрипта). Ранее серверы и рабочие станции на ОС Windows для написания командных сценариев и подпрограмм использовали командную строку (cmd). Современные серверные ОС под управлением Windows используют более совершенный аналог cmd — расширяемое средство автоматизации Windows PowerShell.
Наш рассматриваемый опыт будет выполняться на сервере с ОС Windows 2012 R2 и кластере серверов на базе 1С Предприятие 8.3. В связи с этим и разработку командного сценария мы будем делать на Windows PowerShell.
Обращаем Ваше внимание на то, что во имя избежания всяческих казусов с правами, все работы следует производить от имени пользователя с полными правами.
Автоматизация блокировки начала сеансов в 1С.
- PermissionCode
- DeniedMessage
- DeniedFrom
- DeniedTo
Итак, откроем обычный текстовый редактор (Блокнот) и напишем скрипт следующего содержания:
Надоело делать резервную копию 1с вручную? Сейчас расскажем, как можно делать резервную копию автоматически – по расписанию.
Вариант для серверной базы данных.
1. Создаем файл с расширением bat приблизительно следующего содержания:
Расшифровка кода операторов командной строки:
set kat=C:Program Files (x86)1cv88.3.9.2170 – устанавливаем путь к исполняемым файлам 1с
set serv=192.168.0.1 – указываем ip или имя сервера 1с
set base=Base – указываем имя базы данных на сервере
set user=Администратор – логин Администратора 1с
set pass=Пароль – Пароль Администратора
set passblok=КодРазрешения – пароль для снятия блокировки работы пользователей в 1с. По умолчанию равен = КодРазрешения
Этот пароль можно посмотреть(и/или) поменять в консоле Администрирования баз данных 1с
set pathexport=“f:Backup1c82_%date%.dt” – указываем путь куда будет выгружаться резервная копия (имя файла будет иметь вид 1с82_01.01.2001.dt на текущую дату)
“%kat%in1cv8.exe” ENTERPRISE /S %serv%\%base% /N %user% /P %pass% /DisableStartupMessages /C ЗавершитьРаботуПользователей
-завершение работы пользователей (через 1 минуту) и установка блокировки на вход новых пользователей
“%kat%in1cv8.exe” CONFIG /S %serv%\%base% /DisableStartupMessages /DumpIB %pathexport% /N %user% /P %pass% -NoTruncate /UC %passblok%
-непосредственно выгрузка резервной копии
“%kat%in1cv8.exe” ENTERPRISE /S %serv%\%base% /N %user% /P %pass% /DisableStartupMessages /C РазрешитьРаботуПользователей /UC %passblok%
-снятие блокировки на вход пользователей
2. Запуск этого bat файла по расписанию через планировщик заданий Windows
Планировщик заданий находится: Панель управления Windows- Администрирование-Планировщик заданий
- Переходим на вкладку триггеры – создаем новый триггер с расписанием
- Переходим на вкладку действия и создаем новое действие “Запуск программы”, указав путь к bat файлу. Жмем ОК – все выгрузка БД 1с по расписанию настроена
P.S. Если выгрузка занимает длительное время целесообразно создать несколько задач отличных по времени к примеру
- Заблокировать базу в 02:50
- Выполнить выгрузку базы 1с в 03:00
- Разблокировать базу в 05:00
Похожие записи
Резервное копирование баз 1с через командную строку : 2 комментария
Блокировка не работает =(
Что конкретно не работает? Не завершается работа пользователей или новые могут входить? База какая серверная или файловая?
Нужно создать ярлыки(в любой папке щелкните правой клавишей мыши – Создать – Ярлык) с командами:
Отключение или Завершение работы пользователей:
Для Серверного варианта:
“C:Program Files1cv81in1cv8.exe” ENTERPRISE /S /N /P /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
Рабочий пример:
“C:Program Files (x86)1cv81in1cv8.exe” ENTERPRISE /SSQLSRVMyDB /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /CЗавершитьРаботуПользователей
Разрешить работу пользователей:
Для Файлового варианта:
“C:Program Files1cv81in1cv8.exe” ENTERPRISE /F /N /P /WA- /AU- /DisableStartupMessages /C РазрешитьРаботуПользователей /UC ПакетноеОбновлениеКонфигурацииИБ
Рабочий пример:
“C:Program Files (x86)1cv81in1cv8.exe” ENTERPRISE /FD:FileBasesmyDB /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /CРазрешитьРаботуПользователей /UCПакетноеОбновлениеКонфигурацииИБ
Для Серверного варианта:
“C:Program Files1cv81in1cv8.exe” ENTERPRISE /S /N /P /WA- /AU- /DisableStartupMessages /C РазрешитьРаботуПользователей /UC ПакетноеОбновлениеКонфигурацииИБ
Рабочий пример:
“C:Program Files (x86)1cv81in1cv8.exe” ENTERPRISE /SSQLSRVMyDB /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /CРазрешитьРаботуПользователей /UCПакетноеОбновлениеКонфигурацииИБ
Для успешного выполнения резервного копирования в информационной базе не должно быть активных сеансов пользователей. Чтобы автоматически завершить работу пользователей, перед выполнением бэкапа, в Effector Saver предусмотрен соответствующий механизм.
Для настройки завершения работы пользователей 1С:Предприятия перейдите на вкладку «Отключение пользователей».
Обратите внимание: в бесплатной редакции Effector Saver данный функционал не реализован. В момент запуска бэкапа пользователям нужно покинуть базу 1С:Предприятия, иначе выгрузка базы не произойдет.
Установите флаг «Завершить работу пользователей 1С:Предприятия». Из выпадающего меню выберете один из вариантов:
- «Завершить сеансы на сервере 1С:Предприятие»;
- «Вызвать штатное завершение работы пользователей».
В случае выбора «Завершить сеансы на сервере 1С:Предприятие» — отключение пользователей происходит путем принудительного завершения сеансов на сервере 1С:Предприятия. Этот вариант подходит только для клиент-серверных баз 1С:Предприятия.
Если Вы изменяли стандартные настройки сервера 1С, возможно потребуется изменить параметры, которые идут ниже.
Если в кластере 1С:Предприятия создан пользователь «Администратор кластера», установите флаг «Кластер требует авторизации». Заполните поля: «Имя администратора кластера:» и «Пароль администратора кластера:».
Важно: не путайте данного пользователя с пользователем базы 1С:Предприятия и пользователем «Администратор центрального сервера».
В консоли администрирования сервера 1С:Предприятия администраторы кластера расположены по пути:
«Console Root» — «1C:Enterprise 8.3 Central Servers» — «(*)имя компьютера» — «Кластеры» — «Локальный кластер» — «Администраторы».
Если порт подключения к агенту сервера отличный от стандартного, установите флаг «Используется нестандартный порт агента сервера». Заполните поле «Порт агента сервера:», по умолчанию — 1540.
Для определения порта агента сервера зайдите в консоль администрирования сервера 1С. При клике правой кнопкой мыши на имя компьютера из выпадающего меню выберете «Свойства» — «Параметры центрального сервера 1С:Предприятия» — «IP порт:».
Второй вариант, откройте «Службы». Выберите «Агент сервера 1С:Предприятия…» и откройте окно «Свойства», строка «Исполняемый файл:».
В случае выбора «Вызвать штатное завершение работы пользователей» — отключение пользователей происходит путем вызова встроенного в типовые конфигурации механизма завершения работы пользователей. Данный механизм основан на использовании процедуры «Блокировка установки соединений с информационной базой».
Читайте также: