Имя: Пароль:
1C
 
Как запустить в фоновом режиме?
0 Фанни
 
21.07.06
13:37
Для целей обмена данными между площадками необходимо запускать 1С в фоновом режиме автоматически через планировщик заданий Windows.
ПОДСКАЖИТЕ куда вставить вызов процедуры обмена и последующий вызов
ЗавершитьРаботуСистемы(Ложь)?

ВЫЗОВ этих функций из ПриНачалеРаботыСистемы() в модуле приложений МНЕ не подходит (после места, где системой определяется пользователь), поскольку пользователь на удаленных площадках видит открытие 1С и это ему мешает.
1 Черноморетс
 
21.07.06
13:40
Смотрри параметры командной строки в "Установке по руководству и запуску"
2 Черноморетс
 
21.07.06
13:41
хыхы, в "Руководстве по установке и запуску"
3 Фанни
 
21.07.06
13:50
(2) В смысле добавить в командную строку /DisableStartupMessages ?
Или что-то еще?
4 Фанни
 
21.07.06
14:00
Вызов типа D:\PROGRA~1\1cv8\bin\1cv8.exe enterprise /F"E:\Мама дорогая\Успокой меня" /NАвтомат /P123 /DisableStartupMessages НЕ решил мою задачу.

БОЛЕЕ ТОГО, даже после перенесения вызова процедур обмена и завершения работы в ПередНачаломРаботыСистемы() модуля приложений (с переносом туда и вызова нужного мне ОпределитьТекущегоПользователя()) ТОЖЕ НЕ РЕШИЛО ЗАДАЧУ:

(1) После запуска выдается табло с 1С
(2) Хотя и быстро, почти мелькает, но рабочий стол 1С распахивается.

КАК БЫТЬ?
5 Lendy
 
21.07.06
14:05
Запускать на том компьютере, где не сидят пользователи.
6 Фанни
 
21.07.06
14:09
(5) Это можно на центральном хосте, а на удаленных площадках всего по 1 компу!

КАК БЫТЬ?
7 Антошка WAREZNIC
 
21.07.06
14:11
пакетно запускать... пакетно...
8 smaharbA
 
21.07.06
14:13
-Embedding вАлшебное слово
9 Фанни
 
21.07.06
14:14
(7) Ты по делу скажи как, а то советы мониторы выключать мы и сами можем дать ;))
10 Фанни
 
21.07.06
14:17
(8) А куда его нужно говорить в командную строку?
Тогда так /Embedding или -Embedding?
Откуда тайные знания? В руководстве я не нашел про это слово.
11 Фанни
 
21.07.06
14:24
-Embedding в командной строке - это, как я понял, инструкция для Windows, а не для 1С. Попробую.

А сама 1С-то что по поводу невидимого запуска советует делать?
12 smaharbA
 
21.07.06
14:25
D:\PROGRA~1\1cv8\bin\1cv8.exe -Embedding enterprise ...
13 Advan
 
21.07.06
14:28
Смотри параметры запуска в синтаксис помошнике, и (8)
14 Фанни
 
21.07.06
14:37
(12) Попробовал. Нужного результата не достиг.

Подробнее:
= Назначенное задание запустилось, но в списке задач стоит комментарий "Работает" или, иными словами, свою работу не завершает.
= Вызов процедуры обмена в ПриНачалеРаботыСистемы(), ради которой все затевалось, произведен не был.
= В Диспетчере задач Windows задача 1С есть.
15 Фанни
 
21.07.06
14:42
(13) В параметрах ничего дельного кроме /DisableStartupMessages, которое не помогает, не нашел.
16 Фанни
 
21.07.06
14:44
-Embedding - я так понял, это загрузить задачу резидентно и оставить TSR?
17 Фанни
 
21.07.06
14:52
ОТВЕТА ПОКА Я НЕ НАШЕЛ.
Удивлен! Что никто с обменом данных не работает?
18 Lendy
 
21.07.06
14:58
(17) работает, но не заморачивается.
19 Advan
 
21.07.06
14:58
(17)На личном опыте вообще убедился что лучший робот - человек, поставь ему кнопку сделать обмен и не мучайся.
20 A 008
 
21.07.06
15:05
/C<параметры комстроки>
ПриНачалеРаботыСистемы отрабатываешь ПараметрЗапуска
21 A 008
 
21.07.06
15:08
+ после отработки - ЗавершитьРаботуСистемы
Типовые смотреть полезно иногда.
А шедул запускай под какимнить "условной" уч.записью, под которой никто не работает.
22 Фанни
 
21.07.06
15:14
(20),(21)
Даже ПередНачаломРаботыСистемы() - это уже поздно, поскольку мелькает окно 1С.
Сейчас пробую работать с ОбработатьПараметрЗапуска().

Естесно, что с условной и со вставкой:

   Если глТекущийПользователь.Наименование = "Автомат обмена данными" Тогда
        вбАвтоВыполнитьОбмен();
        ЗавершитьРаботуСистемы(Ложь);
   КонецЕсли;
23 Фанни
 
21.07.06
15:34
ОСТАВЛЯЮ ВОПРОС ОТКРЫТЫМ.

Практически же, пока, я вставил код прямо в сам модуль приложения:

ОпределитьТекущегоПользователя();
//2006-07-20 Запуск обмена как назначенного задания
Если глТекущийПользователь.Наименование = "Автомат обмена данными" Тогда
    вбАвтоВыполнитьОбмен();
    ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;

Буду ждать лучших идей.
24 smaharbA
 
21.07.06
18:58
Не может быть что не работает, все(почти) ОЛЕ запускаются с этим параметром и ведь работают
25 Neco
 
21.07.06
19:14
(23) Если на удаленных площадках (там где по 1 компу) установлено что вроде ВинХР или ВинСервер, то в планировщике можно настроить так, что процесс будет запускать от имени какого либо пользователя. Так можно установить пользователя специально для выполнения сией процедуры и указать его в планировщике.
26 Фанни
 
21.07.06
22:42
(25) Проблема не в том, что из планировщика не запускается, а проблема в том, что при это мелькают ненужные окна - заставка 1С (это еще терпимо) и сам рабочий стол 1С. Если обработку запускать скажем каждые 10 минут, то это маячание будет раздражать оператора.
27 Фанни
 
21.07.06
22:45
(24) Проверено на XP SP2. Не работает. Просто резидентно загружается в память.
Более того, управление не передается на уровень отработки события ПриНачалеРаботыСистемы()
28 Херрес
 
21.07.06
22:48
(0) напиши процедуру на vbscript, которая через ОЛЕ будет подключаться к 1С и запускать нужную внешнюю обработку (ComСоединение не покатит)
на сколько помню, 1С показываться не будет. А если будет, можно ему сказать .visible=False
29 Deteur
 
22.07.06
09:53
Если будешь использовать wmic (через командную строку) то никаких окошечек не будет появляться
30 Бриарей
 
22.07.06
10:45
(0) Послушай (28) и сделай наоборот ;-)
Обмен через COM-соединение прекрасно работает.
31 real_drummer
 
22.07.06
10:49
а ты не пробовал запускать не от имени пользователя который в данный момент работает в системе а от имени другого???
32 Advan
 
22.07.06
12:02
Да заведи пользователя и запускай под ним - шедулер это позволяет, хотя если каждые 10 минту то правильней запустить 1 раз и потом использовать обработчик ожидания
33 Бриарей
 
22.07.06
13:51
(31) если это мне, то да, все работает
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.