Имя: Пароль:
1C
1С v8
УФ Завершить работу в ПриНачалеРаботыСистемы()
0 ildary
 
18.10.18
16:07
Уважаемые специалисты, подскажите пожалуйста, как правильно сделать следующее: запускаем 1С с параметром запуска, в ПриНачалеРаботыСистемы() при наличии этого параметра выполняем некие действия и надо завершить работу 1С. Всё получилось, но 1С не закрывается.

P.S. У меня есть смутное подозрение, что подобную штуку надо выполнять в ПередНачаломРаботыСистемы, т.к. там есть параметр Отказ. Но парсинг параметров запуска реализован в ПриНачалеРаботыСистемы().
1 Вафель
 
18.10.18
16:08
как закрываешь?
2 ildary
 
18.10.18
16:12
(1)                 СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
                ЗавершитьРаботуСистемы(Ложь);
3 ildary
 
18.10.18
16:12
Забыл добавить - конфигурация самописка с причудливыми вплетениямии БСП разных версий.
4 bolobol
 
18.10.18
16:12
shutdown -r now
должно закрыть
5 bolobol
 
18.10.18
16:14
Когда я проверял синтаксис команды - у меня даже сервант закрылся
6 ildary
 
18.10.18
16:15
(4) спасибо что не  rm -f. Но мне надо закрыть один сеанс 1С, без напалма и ядерной бомбы.
7 dmt
 
18.10.18
16:17
ПрекратитьРаботуСистемы()
8 dmt
 
18.10.18
16:18
хотя у меня и ЗавершитьРаботуСистемы работает
9 Фрэнки
 
18.10.18
16:44
а ничего страшного, что эта ЗавершитьРаботуСистемы только в контексте Клиента и на сервере она не определена?
10 ildary
 
18.10.18
16:47
(9) Скорей всего причина в этом. Скажите пожалуйста, как это ограничение обойти?
11 Фрэнки
 
18.10.18
16:48
хотя в моем тестовом сработало в Модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы()

правда за каким-то фигом моргнула окном приложения зачем-то
12 Фрэнки
 
18.10.18
16:52
(10) ну как обойти... там же небось кучу кода навертели и препроцессором навесили кучу условий, где-то сервер, где-то клиент... вот и не закрывает.

Интересно, а в каком месте/модуле отлавливается параметр командной строки в у вас в коде, после которого принимается вывод, что надо ЗавершитьРаботуСистемы ?
13 ildary
 
18.10.18
16:58
Кажется меня спасла ПрекратитьРаботуСистемы();

(12) из ПриНачалеРаботыСистемы() вызывается ОбработатьПараметрыЗапуска(), которая распарсивает строку и в которую я добавил свою проверку на нужный мне параметр с вызовом дополнительной обработки, после чего 1С завершает работу.
14 Фрэнки
 
18.10.18
17:07
// Обработать параметры запуска программы.
//
// Возвращаемое значение:
//   Булево   - Истина, если необходимо прервать выполнение процедуры ПриНачалеРаботыСистемы.
//
Функция ОбработатьПараметрыЗапуска()

видимо там в остальных потрохах какая-то путаница
15 Фрэнки
 
18.10.18
17:10
один фиг идет же работа с глобальным контекстом

---
ПараметрЗапуска (LaunchParameter)
Использование:

Только чтение.
Описание:

Тип: Строка.
Используется для доступа к параметру запуска, передаваемому через ключ командной строки /C.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
---

зы. интересные штучки :-) люблю в таких разбираться
16 ildary
 
18.10.18
17:15
(14) обращаю внимание - "прервать выполнение процедуры ПриНачалеРаботыСистемы", но не завершать работу 1С. В 7.7 это бы действительно закрыло 1С. А тут не сработало - это была моя первая идея, после того как я почитал документацию.
17 Фрэнки
 
18.10.18
17:24
(16) так оно же просто как Функция , которая возвращает в вызывающую процедуру булевое значение Истина или Ложь , а там уже твое действие, нужна необходимость завершения процедуры или Завершение работы системы всей задачи

Если ОбработатьПараметрыЗапуска() Тогда
    ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;

сейчас смоделирую у себя
18 Фрэнки
 
18.10.18
17:31
ну нельзя таким образом делать-то - там слишком много всего накручено в этой части БСП. Надо просто самим пропарсить ПараметрЗапуска да и все. Тогда все нормально закроется, когда самому захочется, тогда и закроется :-)
Закон Брукера: Даже маленькая практика стоит большой теории.