Имя: Пароль:
1C
1С v8
Запуск регламентных заданий в фоновом режиме
, ,
0 DmitryR
 
20.01.21
11:38
Всем доброго дня, возможно ли запустить 1с в фоне и выполнить регламентное задание? Нашел следующий способ:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"путь к базе" /N"пользователь" /P"пароль" /RunModeManagedApplication /DisableStartupMessages /DisableStartupDialogs /Execute %StartRegl% /C bf8c4d66-efcd-4b33-af16-27c7dcead2be
В результате открывается 1с с ошибкой: Файл не обнаружен 'С:\С'. 2(0x00000002): Не удается найти указанный файл.
1 ДенисЧ
 
20.01.21
11:41
А можно регламентное не в фоне запустить? Ну, без особых извратов...
2 DmitryR
 
20.01.21
11:48
(1) Для начала можно и не в фоне, главное через cmd хоть какого результата добиться
3 ДенисЧ
 
20.01.21
11:50
"/Execute %StartRegl%"

Это за НЕХ?
4 DmitryR
 
20.01.21
11:56
(3) Не понял вопроса. Если что, то я не особо разбираюсь в запуске через cmd, просто искал примеры запуска, нашел только один и пытаюсь с ним работать. Уверенность есть только в путях, пользователе и id регламентного. Ну и от себя добавил запуск через толстый /RunModeManagedApplication. Остальное как было в примере.
5 ДенисЧ
 
20.01.21
12:11
Я так понял... Ты нашёл какую-то строчку в интернете и пытаешься её запустить?
А если ты такую ссылку найдёшь https://hi-tech.mail.ru/news/52616-odna-strochka-lomaet-zhestkiy-disk-obnaruzhena-uyazvimost-windows-10/ ?
Тоже запустишь?
6 Kassern
 
20.01.21
12:13
почитай тут, особенно про команду Execute
http://catalog.mista.ru/public/104654/
7 DmitryR
 
20.01.21
12:41
(5) По существу предложения будут?
8 ДенисЧ
 
20.01.21
12:54
(7) Да. Сначала разобраться. А потом уже незнакомые команды запускать.
И ответить, хотя бы для себя, на вопрос из (3)
9 fisher
 
20.01.21
12:57
(0) У тебя файловая, что ли? С какого-то там релиза ничего такого делать не надо. Оно само.
10 ДенисЧ
 
20.01.21
12:58
(9) Не само. Нужен запущенный сеанс, в котором оно уже само...
11 fisher
 
20.01.21
13:00
(0) Вообще, та строчка что ты нашел - это вообще попытка запуска внешней обработки при старте. К фоновым заданиям это отношения не имеет.
(10) Справедливо.
12 Kassern
 
20.01.21
13:05
(11) А что мешает этой обработкой запустить регламентное задание?)
13 DmitryR
 
20.01.21
13:06
(12) Ну если дельных предложений не поступит так и сделаю.
14 fisher
 
20.01.21
13:07
(12) Которое вызовет внешнюю обработку?)
15 fisher
 
20.01.21
13:08
(13) Ты бы проблему свою детальнее описал. Чем тебе не подходит стандартное регламентное задание с расписанием? Ты хочешь по событию извне запустить фоновое или чего?
16 Kassern
 
20.01.21
13:10
(15) Вангую: скорее всего у него файловая база, а держать ее 24/7 запущенной он не хочет. Вот и хочет из командной строки запустить, что-то там обновить и закрыть.
17 DmitryR
 
20.01.21
13:11
(16) Так и есть, только зачем ванговать если очевидно?
18 fisher
 
20.01.21
13:13
(16) Фигасе ты Ванга. Был уверен, что дело в другом.
(17) Каждый сверчок уверен, что все думают о его шестке и поймут в пол-слова.
19 Kassern
 
20.01.21
13:16
(17) как видишь, не для всех очевидно)
20 fisher
 
20.01.21
13:16
То есть вся проблема в экономии лицензии, что ли? Так все равно не получится ее сэкономить. Если все будут заняты - доп-сеанс не стартанет.
21 DmitryR
 
20.01.21
13:17
Детально: Планировщик запускает 1с в фоне и стартует регламентное, соответственно по расписанию идет обмен между базами, в конце дня этот сеанс убивается так же планировщиком. Далее попрошу если есть конкретные предложения, то предлагайте, а тешить свое чсв ступайте в другое место. Есть задача и сжатые сроки, иначе разобрался и сам и время было бы штудировать брошюрки.
22 Kassern
 
20.01.21
13:19
(17) не забудь тогда флаг какой нить сделать в виде файла к примеру, о том отработала или нет обработка. Чтобы потом у тебя не было запущено +100500 процессов 1с, из-за того что зависла обработка, а твой шедулер упорно будет создавать новые процессы
23 fisher
 
20.01.21
13:25
(21) Ну, я бы написал скрипт который периодически проверяет наличие сессий 1С (анализом каталога базы) и если сессий нет - запускает предопределенный сеанс. А если сессии есть - киляет предопределенный сеанс (если он есть). Но у тебя, как я понял по сабжу, проблема гораздо примитивней - у тебя не получается из командной строки вообще сеанс 1С запустить, так? Ну, просто выбрось все начиная с /Execute в сабжевой команде.
24 fisher
 
20.01.21
13:27
Тебе же не надо внешнюю обработку запускать. Сеанс сам начнет обрабатывать регламенты, если он единственный.
25 fisher
 
20.01.21
13:32
(22) Можно еще при старте 1С проверять, что если под этим предопределенным пользователем уже есть сеанс, то завершать работу. Это накладней, но 1С-нику это легче заскриптить чем внешнюю проверку.
26 DmitryR
 
20.01.21
13:34
(25) Запущенных сеансов не будет т.к. старт 1 раз утром и кил процесса вечером.
27 fisher
 
20.01.21
13:37
(26) Идея в том, чтобы чекать часто на тот случай, если процесс упадет среди дня.
28 DmitryR
 
20.01.21
13:38
Значит следующим образом запускаю 1с и все ок
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"путь" /N"пользователь" /P"пароль" /RunModeManagedApplication /DisableStartupMessages /DisableStartupDialogs
И внимание вопрос если Execute запускает только внешние обработки, то как запустить регламентное без ВО и возможно ли это? Собственно изначально вопрос был в этом, а мы ушли в другую степь)
29 DmitryR
 
20.01.21
13:39
(27) Это потом) Пока нужно хотя бы стартануть
30 fisher
 
20.01.21
13:40
(28) Только внешние. Про регламенты тебе уже отвечали. Не надо их принудительно запускать. Они будут обрабатываться автоматически одним из активных сеансов.
31 acht
 
20.01.21
13:44
(21) > и сжатые сроки, иначе разобрался и сам и время было
Ты на форуме уже два часа колупаешся, смотри - не успеешь.
32 fisher
 
20.01.21
13:46
Если воткнуть /AllowExecuteScheduledJobs -Force
то регламенты будут выполняться на этом конкретном сеансе
33 DmitryR
 
20.01.21
13:46
(30) В общем пришел к следующему. Запускать планировщиком 1с с внешней обработкой, которая будет запускать сценарий обмена без регламентного. Тема закрыта. Конкретно вам спасибо за помощь и предложения.
34 DmitryR
 
20.01.21
13:48
(31) Пожалуйста покиньте ветку
35 Aleksey
 
20.01.21
13:49
(28)
Я б добавил проверку файла в cmd
if exist = "d:\Obmen\*.xml" (
"C:\Program Files\1cv8\common\1cestart.exe Enterprise /F"путь" /N"пользователь" /P"пароль" /RunModeManagedApplication /DisableStartupMessages /DisableStartupDialogs /Execute"ПутьКОбработке\Обработка.epf" /C"Загрузка"
)

А уж в самой обработки прописал
Если ПараметрЗапуска = "Загрузка" Тогда        
... пишем код по загрузки, ну или по запуску типовой процедуры
    ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
36 Aleksey
 
20.01.21
13:50
*в модули объекта самой обработки
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан