Форум Кладовочки АЛьФ`а

Общие вопросы => 7.7 => Тема начата: АЛьФ от 21 марта 2024, 11:07

Название: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 21 марта 2024, 11:07
Есть у кого-нибудь практический опыт настройки запуска 1С из виндового планировщика в режиме "без входа в систему"? Нужно простыми словами разжевать админу что и как настроить.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: trdm от 21 марта 2024, 12:36
У меня работает под моей учеткой на серсере сеанс робота.
Когда сервак перезагружается, 1С не запускается пока не войду :(
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 21 марта 2024, 12:42
Цитата: trdm от 21 марта 2024, 12:36У меня работает под моей учеткой на серсере сеанс робота.
Когда сервак перезагружается, 1С не запускается пока не войду :(

От подобной схемы и хочется избавиться.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: amo|obs от 22 марта 2024, 10:10
1. Выгрузить ветку реестра под пользователем с зарегистрированной базой, например в файл 1cDbList.reg
[HKEY_CURRENT_USER\Software\1C]
2. Выполнить батник запуска 1С в режиме "без входа в систему" единожды со следующей строкой
regedit /s C:\1c\1cRobot\1cDbList.reg
затем ее можно закомментировать
3. Строка запуска выглядит примерно так
start "" /wait "C:\Program Files (x86)\1CV77\BIN\1cv7.exe" ENTERPRISE /DC:\1c\MNFC /NRobot /P777
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 22 марта 2024, 10:13
Цитата: amo|obs от 22 марта 2024, 10:101. Выгрузить ветку реестра под пользователем с зарегистрированной базой, например в файл 1cDbList.reg
[HKEY_CURRENT_USER\Software\1C]
2. Выполнить батник запуска 1С в режиме "без входа в систему" единожды со следующей строкой
regedit /s C:\1c\1cRobot\1cDbList.reg
затем ее можно закомментировать
3. Строка запуска выглядит примерно так
start "" /wait "C:\Program Files (x86)\1CV77\BIN\1cv7.exe" ENTERPRISE /DC:\1c\MNFC /NRobot /P777


Т.е. проблемы только с регистрацией базы в реестре?
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: amo|obs от 22 марта 2024, 10:32
Вот так и работает
https://disk.yandex.ru/d/5cuUmBNPF6wisQ
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: amo|obs от 22 марта 2024, 10:37
Цитата: АЛьФ от 22 марта 2024, 10:13
Цитата: amo|obs от 22 марта 2024, 10:101. Выгрузить ветку реестра под пользователем с зарегистрированной базой, например в файл 1cDbList.reg
[HKEY_CURRENT_USER\Software\1C]
2. Выполнить батник запуска 1С в режиме "без входа в систему" единожды со следующей строкой
regedit /s C:\1c\1cRobot\1cDbList.reg
затем ее можно закомментировать
3. Строка запуска выглядит примерно так
start "" /wait "C:\Program Files (x86)\1CV77\BIN\1cv7.exe" ENTERPRISE /DC:\1c\MNFC /NRobot /P777


Т.е. проблемы только с регистрацией базы в реестре?
Не исключено.
Можно проще - зарегистрировать базы "вручную"
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 22 марта 2024, 10:47
Спасибо. Передам админу, пусть экспериментирует.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: vladmenleo от 22 марта 2024, 11:45
У нас все роботы работают без регистрации пользователя. Один раз заходишь под этим пользователем на сервер и запускаешь там базу. после захода убираешь галку с советах дня, иначе автоматом пользователь не выйдет. И еще маленький ньюанс. В планировщике задач на вкладке Действия есть поле Рабочая папка (Необязательно). пока это необязательное поле не заполнил, ничего не работало :( Это на win 2008, как на других не подскажу
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: GRUNGO от 22 марта 2024, 16:14
Цитата: vladmenleo от 22 марта 2024, 11:45У нас все роботы работают без регистрации пользователя. Один раз заходишь под этим пользователем на сервер и запускаешь там базу. после захода убираешь галку с советах дня, иначе автоматом пользователь не выйдет. И еще маленький ньюанс. В планировщике задач на вкладке Действия есть поле Рабочая папка (Необязательно). пока это необязательное поле не заполнил, ничего не работало :( Это на win 2008, как на других не подскажу

и после перезапуска сервака не нужно авторизовываться пользователю?
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: vladmenleo от 23 марта 2024, 05:12
Цитата: GRUNGO от 22 марта 2024, 16:14и после перезапуска сервака не нужно авторизовываться пользователю?
Нет, не нужно. В шедулере естественно прописан пароль, а так постоянно на сервере никто не залогинен
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: item от 27 марта 2024, 00:07
Цитата: vladmenleo от 22 марта 2024, 11:45...И еще маленький ньюанс. В планировщике задач на вкладке Действия есть поле Рабочая папка (Необязательно). пока это необязательное поле не заполнил, ничего не работало :( Это на win 2008, как на других не подскажу

У меня наоборот, работает с пустым полем Рабочая папка, попытки указать рабочую папку приводили к ошибке запуска "неверно указан путь...", win2008.

Один минус в запуске без авторизации - процесс виден только в диспетчере задач.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 09:23
Что-то не получается у нашего админа настроить запуск без авторизации.
И тут мне подумалось... А никто не запускал 1С из задания в SQL Server Agent? Сейчас у меня там настроен скрип, который выгружает базу и архивирует выгруженный файл bak сторонним архиватором (т.к. SQL Server 2005 сам не архивирует выгрузку). Так вот, что мне мешает прописать там же запуск 1С для выполнения регламентных заданий?
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 11:30
Хм... Вроде получилось...
Но уперся в то, что служебный пользователь в базе логинется в базу и тут же отключается. До начала работы глобальника не доходит. Как-то можно оттестировать почему он отпадает?
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: Злоп от 29 марта 2024, 12:43
Полные права виндявого пользователя на папку с базой должны быть.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 13:00
Цитата: Злоп от 29 марта 2024, 12:43Полные права виндявого пользователя на папку с базой должны быть.
Папка сетевая и шара подключается с помощью
EXEC xp_cmdshell 'net use R: \\192.168.0.43\e$\Development\Programmer\AFedorov\_bases_\v7\_copy_ /user:*** /Persistent:no'
Из задания в папку пишет. Как проверить достаточно ли прав?
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 13:06
Попробовал переделать на обращение через OLE.
Initialize возвращает 0 и в журнале регистрации теперь только подключение, без отключения.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 13:42
На самом деле с каталогом непонятно, конечно.
Подключается с данными одного пользователя, но запуск 1С идет от системы (от пользователя, под которым SQL запущен). 1С папку видит и к базе логинется, в журнал регистрации пишет. Но тут же отваливается, записав это в тот же ЖР. Т.е. доступа достаточно на чтение и на запись.
Вот почему бы 1С в этом случает не писать в тот же ЖР причину отвала? Загадка...
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 13:48
Ха! А вот еще тайна природы.
Если код запроса запустить не в задании, а просто в запросе, то запускается и начинает работу. Но валится в исключение на выполнении метода глСервис.ПолучитьСписокАктивныхПользователей().
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 13:53
А вот фиг! Тайна еще тайней получается. Сработал, как в предыдущем сообщении только один раз. А теперь при любом запуске подключение и тут же отвал.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 14:42
Выявилась странная закономерность. Подключаюсь к серверу, на котором стоит SQL, своим логином. Там запускаю "от имени администратора" 1С под регламентным пользователем. Все запускается, как ожидается.
Тут же со своего компа в открытой "менежмент студио" запускаю запрос с регламентыми заданиями, получаю исключение в методе ПолучитьСписокАктивныхПользователей (т.е. идет уже запуск 1С на уровне выполнения глобального модуля и дошло до ПриНачалеРаботыСистемы()). Запускаю этот же запрос второй раз, получаю вход-выход без инициализации глобального модуля.

А может и нет связи между запусками...
Ваще не понимаю что там происходит...
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 29 марта 2024, 16:48
Тупик... Так ничего и не удалось сегодня сделать. То вход-выход, то вход - вылет по исключению. Без какой-либо системы.
Пытался делать запуск от имени моего логина. Безрезультатно.
Похоже придется писать подмену dll, чтобы отловить где же затык.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: АЛьФ от 21 апреля 2024, 15:18
В итоге решение: использовать регламентное задание v8 для запуска батника, в котором прописан запуск семерки.
Все работает.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: zhenyat от 05 июля 2024, 18:25
Здравствуйте
У меня настроено так:
1. Создан cmd - шник, в котором выполняются различные регламентные действия (создание баккапов конфигруатором и  запуск 1с для восстановления индексных файлов:

set CURDATE=%DATE%
set LOG=C:\cmds\Log\backup-%CURDATE:~6,4%-%CURDATE:~3,2%-%CURDATE:~0,2%.txt
set BACKUP_PATH=\\-------\backup\1c77

echo %TIME% ***Begin > %LOG%

del /q D:\-------\ExtForms\DB_SQLite\*
echo %TIME% БД SQLite очищена >> %LOG%

"%ProgramFiles(x86)%\1cv77\bin\1cv7s.exe" config /dD:\------- /tE:\Temp /nBackup /@C:\cmds\Backup

echo %TIME% Резервная копия создана >> %LOG%

if exist %BACKUP_PATH% (
move E:\Backup\base.zip %BACKUP_PATH%\Work-%CURDATE:~6,4%-%CURDATE:~3,2%-%CURDATE:~0,2%.zip >> %LOG%
) else (
rename E:\Backup\base.zip Work-%CURDATE:~6,4%-%CURDATE:~3,2%-%CURDATE:~0,2%.zip
)

del /f/q D:\------\*.cdx
"%ProgramFiles(x86)%\1cv77\bin\1cv7s.exe" enterprise /m /dD:\----- /tE:\Temp /nBackup

echo %TIME% Индексы восстановлены >> %LOG%

А раньше и был запуск от имени специального пользователя регламентов - для него в "ПриНачалеРаботыСистемы()" был запуск разных обработок.

2. в планировщике этот батничек запускается от имени специального юзера, с настройками "Выполнять для всех пользователей" и "Выполнять с наивысшими правами"
Естественно, для этого пользователя необходимые базы уже прописаны в реестре

Эта связка работает уже лет 10
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: MadDAD от 08 июля 2024, 15:55
Цитата: АЛьФ от 29 марта 2024, 13:48Ха! А вот еще тайна природы.
Если код запроса запустить не в задании, а просто в запросе, то запускается и начинает работу. Но валится в исключение на выполнении метода глСервис.ПолучитьСписокАктивныхПользователей().

Так а что за исключение? Может проблема в правах доступа к папкам пользователей?
Вообще на сколько я помню с семерошных времен - для корректной работы семерки сессия под которой запускается платформа должна быть открыта интерактивно хотя бы один раз после перезапуска сервера, иначе получаются такие спецеффекты. Там какой-то затык с контекстом.
Название: Re: Запуск 1С 7.7 по расписанию без авторизации пользователя
Отправлено: GSoft от 02 октября 2024, 17:41
Сам запуск делался штатным планировщиком без выкрутас. Только первый запуск делался в ручном режиме под пользователем чтобы все правильно прописалось и настроилось

А про реализацию задачи уже на стороне 1С - я в свое время писал такую штуку для разбора командной строки из ярлыка запуска

вот например строка для запуска в авторежиме отчета на техподдержку и выгрузку его в HTML

""C:\Program Files\1Cv77\BIN\1cv7s.exe" enterprise /d"\\ИмяПК\fs\1C\base\itbase\" /N"ИнфоЭкран" "Attr-Отчет.ИнфоЭкранСПП,ИнфоЭкран,ХТМ,ЗакрытьФорму,ЗакрытьПриложение""


1. код запуска основной функции при старте системы
//обработка доппараметров командной строки, пока только для инфоэкранов
Если ОбработкаДопПараметровКоманднойСтроки() > 0 Тогда
//В параметрах передан признак закрытия приложения
СтатусВозврата(0);
Возврат;
КонецЕсли;
//работа системы для инфоэкрана закончена




2. код самой функции (при старте системы)

//_____________________________________________________________________________
Функция ОбработкаДопПараметровКоманднойСтроки()
ЕстьПроблемы = 0;
    Закрыть1С = 0;

Если (НазваниеНабораПрав() = "Пользователь") и (ИмяПользователя() = "ИнфоЭкран") Тогда
Состояние("Обработка параметров командной строки");
////пока не формируем отчеты из регистров эта проверка не нужна
////проверка наличия "Оперативного учета"
//Если НаличиеКомпонентыОперативныйУчет() = 0 Тогда
// Возврат 2;
//КонецЕсли;

////эта проверка пока тоже под вопросом
//// автоматическое открытие периода
//Если АвтоматическоеОткрытиеПериода() = 0 Тогда
// Возврат 5;
//КонецЕсли;
                           

////загружаем только формекс, больше ничего из компонент не надо
//Если глЗагрузитьКомпонентуФормекс(0) = 0 Тогда
// //формекс не загружен, инициализировать командную строку не получится
// СписокДопПарам = 0;
//Иначе       
// //формекс загружен, инициализируем командную строку
// СписокДопПарам = РазборКоманднойСтрокиФормекс();
//КонецЕсли;
//2024-10-02
Если ПустоеЗначение(глФормексЗагружен) = 1 Тогда
Если глЗагрузитьКомпонентуФормекс() = 0 Тогда
//формекс не загружен, инициализировать командную строку не получится
СписокДопПарам = 0;
КонецЕсли;

//формекс загружен только что, инициализируем командную строку
СписокДопПарам = РазборКоманднойСтрокиФормекс();
Иначе
//формекс уже загружен, инициализируем командную строку
СписокДопПарам = РазборКоманднойСтрокиФормекс();
КонецЕсли; 
//2024-10-02

Если СписокДопПарам = 0 Тогда
//доппараметры отсутствуют или не инициализирован Формекс
//поэтому запускаем только то что точно надо
Результ = "";
Результ = ИнфоЭкранСПП(0);   
Закрыть1С = 1;
Иначе
Если (ТипЗначенияСтр(СписокДопПарам) = "СписокЗначений") тогда //и (СписокДопПарам.ПолучитьЗначение(1) = "ДопПараметры") Тогда
Если ТипЗначенияСтр(глСервис) = "Сервис" Тогда // (глФормексЗагружен = 1) 
Конт = "глМод"; 

Для Инд  =  1 По СписокДопПарам.РазмерСписка() Цикл
//Ищем набор объектов
ТекущийПараметр = СокрЛП(СписокДопПарам.ПолучитьЗначение(Инд));
                                                 
//в принципе можно в цикле увеличитвать значения счетчика на кол-во значений по умолчанию
//для отчета на 4 параметра
//для обработки на 3 параметра
Если Найти(ТекущийПараметр,"Обработка.") = 1 Тогда
ТекущийПараметр = СтрЗаменить(ТекущийПараметр, "Обработка.", "");
ИначеЕсли Найти(ТекущийПараметр,"Отчет.") = 1 Тогда
ТекущийПараметр = СтрЗаменить(ТекущийПараметр, "Отчет.", "");
ИначеЕсли Найти(ТекущийПараметр,"ЗакрытьПриложение") = 1 Тогда
ТекущийПараметр = "";
Закрыть1С = 1;
Иначе
ТекущийПараметр = "";
КонецЕсли;

Если ПустоеЗначение(ТекущийПараметр) = 0 Тогда                                   
Результ = "";

Попытка
глСервис.ВыполнитьФункцию(Конт,ТекущийПараметр,СписокДопПарам,Результ);   
Исключение
Сообщить(ОписаниеОшибки());
Сообщить("Ошибка при выполнении функции: " + "ТекущийПараметр", "!");
ЕстьПроблемы = 1;
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;                               
КонецЕсли;
КонецЕсли;   

Если ЕстьПроблемы > 0 Тогда
Сообщить("Были ошибки при выполнении глобального модуля", "!!!");
КонецЕсли;

Возврат Закрыть1С;
КонецФункции // ОбработкаДопПараметровКоманднойСтроки



3. а дальше в нужном объекте производим разбор параметров полученных из функции (2)