|
Запуск фонового задания через com с клиентского компьютера | ☑ | ||
---|---|---|---|---|
0
varyag
15.10.14
✎
07:39
|
Есть у меня обмен между Альфа-Авто и Бухгалтерией. Выполняется фоновым заданием по расписанию, но иногда требуется срочная выгрузка данных, и чтобы бухи не бегали ко мне - написал обработку для Бухгалтерии, которая запускает задание в Альфа-Авто через com-соединение. Так вот интересная штука. Если я выполняю запуск с Бухгалтерии на сервере то все отлично отрабатывает. Если же делаю это с клиентского компьютера - то код отрабатывает без ошибок, но ничего не происходит, т.е. код не выполняется. Натолкните на мысль пожалуйста.
Вот код обработки: СтрокаПодключения = ПолучитьСтрокуПодключения("Srvr=""192.168.4.201"";Ref=""alfa_work"";"); //СтрокаСостояния = "Подключение к 1С:Альфа-Авто..."; ПодключениеБазы(СтрокаПодключения); Если Не V8Base = Неопределено Тогда Состояние("Выполняется обмен с Альфа-Авто"); Сообщить("Начало обмена данными. Это может занять продолжительное время. Пожалуйста подождите"); // Попытаемся записать в лог данные о пользователе, путь прописываем жестко Попытка ФайлЛога = Новый ЗаписьТекста("\\192.168.4.201\1c\Exchange\AA-BP\ExchangeLog.txt",КодировкаТекста.ANSI,,Истина); ФайлЛога.ЗаписатьСтроку("Обмен запущен из 1С:Бухгалтерии. Пользователь: "+ПараметрыСеанса.ТекущийПользователь); ФайлЛога.Закрыть(); Исключение КонецПопытки; // Запускаем фоновый обмен Попытка V8Base.фзФоновыеЗадания.ВыполнитьОбменСБухгалтерией(); Сообщить("Обмен данными завершен."); Исключение Сообщить("Не удалось выполнить обмен. "+ОписаниеОшибки()); КонецПопытки; ОтключениеБазы(); КонецЕсли; |
|||
1
varyag
15.10.14
✎
07:41
|
В файл лога этот фрагмент записывается:
Попытка ФайлЛога = Новый ЗаписьТекста("\\192.168.4.201\1c\Exchange\AA-BP\ExchangeLog.txt",КодировкаТекста.ANSI,,Истина); ФайлЛога.ЗаписатьСтроку("Обмен запущен из 1С:Бухгалтерии. Пользователь: "+ПараметрыСеанса.ТекущийПользователь); ФайлЛога.Закрыть(); Исключение А вот код записи лога, который находится в правилах уже не отрабатывает |
|||
2
TormozIT
гуру
15.10.14
✎
08:02
|
Возможно используется объект Application, при запуске которого выводится какой то диалог, ожидающий реакции пользователя. Если так, то попробуй использовать внешнее соединение.
|
|||
3
TormozIT
гуру
15.10.14
✎
08:04
|
Попробуй выполнить код V8Base.фзФоновыеЗадания.ВыполнитьОбменСБухгалтерией() непосредственно в сеансе пользователя.
|
|||
4
varyag
15.10.14
✎
08:13
|
(2) Думаю дело не в этом, на серверном компе же выполняется..
(3) т.е. непосредственно в сеансе пользователя? не понял если честно что ты имеешь ввиду. Все выполняется на клиентском компьютере, т.е. не выпадает в исключение, сообщает Сообщить("Обмен данными завершен."); |
|||
5
TormozIT
гуру
15.10.14
✎
08:23
|
(4) Отладить то в текущем сеансе будет попроще.
|
|||
6
varyag
15.10.14
✎
08:33
|
(5) Извини, не пойму... что значит в текущем сеансе? Я запускаю обработку в бухгалтерии на клиентском компе. Обработка цепляется через com к другой базе (обе серверные). ВОт процедура соединения:
Функция ПодключениеБазы(СтрокаПодключения) Экспорт Если Не ЗначениеЗаполнено(СтрокаПодключения) Тогда Возврат Ложь; КонецЕсли; Состояние("Подключение к базе"); V8 = Новый COMObject("V82.COMConnector"); Попытка V8Base = V8.Connect(СтрокаПодключения); Сообщить("Соединение с базой установлено"+Символы.ПС,СтатусСообщения.Информация); Подключено = Истина; Исключение V8Base = Неопределено; Сообщить("Не удалось установить соединение с базой. "+ОписаниеОшибки(),СтатусСообщения.Внимание); Подключено = Ложь; КонецПопытки; Возврат Подключено; КонецФункции Отладчиком смотрю соединение успешно происходит, в объекте V8Base.фзФоновыеЗадания видно экспортные функции.. т.е. по идее все должно выполниться, остановиться в базе премнике не удается почему то отладчиком =( Хотя атоматическое подключение к фоновым заданиям галочку поставил.. |
|||
7
varyag
15.10.14
✎
08:36
|
и сеанс видит в окне подключение. Но е останавливается на точке останова
|
|||
8
второй Вах
15.10.14
✎
08:36
|
что бы бухи не бегали к тебе, не затирай им ввод вчерашними бэкапами
|
|||
9
varyag
15.10.14
✎
08:39
|
(8) что, простите?
|
|||
10
второй Вах
15.10.14
✎
08:41
|
(8) мне то пофик, бухи не простят
|
|||
11
varyag
15.10.14
✎
08:43
|
(10) Видимо у вас проблемы с этим? Вам в ветку психологической помощи.. Еще и сами себе отвечаете
|
|||
12
TormozIT
гуру
15.10.14
✎
08:52
|
Запусти интерактивный сеанс в базе, к которой подключается внешнее соединение. Отладить в нем выполнение кода фзФоновыеЗадания.ВыполнитьОбменСБухгалтерией()
|
|||
13
varyag
15.10.14
✎
09:06
|
(12) Может ты невнимательно читал... Но у меня этот код отрабатывает если запускаю консолью заданий хоть на сервере, хоть на клиенте, Или если обработкой этой запускаю на сервере. А вот обработкой на клиенте - не отрабатывает... поэтому что я там могу отладить при таком запуске, если при таком запуске итак работает
|
|||
14
TormozIT
гуру
15.10.14
✎
09:50
|
Запусти на компьютере бухгалтера интерактивный сеанс (обычное приложение) в базе, к которой подключается внешнее соединение. Запусти в нем на клиенте выполнение кода в базе, к которой подключается внешнее соединение.
|
|||
15
TormozIT
гуру
15.10.14
✎
09:52
|
(14) Вместо "выполнение кода в базе, к которой подключается внешнее соединение" надо "фзФоновыеЗадания.ВыполнитьОбменСБухгалтерией()"
|
|||
16
TormozIT
гуру
15.10.14
✎
09:55
|
Если это при этом код выполняется правильно, то далее попробуй вместо COMConnector использовать Application.
|
|||
17
varyag
15.10.14
✎
10:26
|
(16) Да выполняется, говорю же я запускал уже консолью выполение этого кода интереактивно в базе к которой подключаюсь, в ней же и это задание находится.. А про Application если честно я совсем не в курсе что за зверь. Типа запускать базу в которой это задание как приложение? это вообще не лучший вариант.. Или я неверно понял?
|
|||
18
TormozIT
гуру
15.10.14
✎
10:32
|
(17) Запускать Application я предложил, чтобы понять будет ли разница в работе кода.
|
|||
19
varyag
15.10.14
✎
10:34
|
(18) понял, щас погуглю что это такое.. Спасибо
|
|||
20
TormozIT
гуру
15.10.14
✎
11:16
|
V8X.Application
|
|||
21
varyag
15.10.14
✎
11:45
|
(20) Да я уже почитал - это ОЛЕ, как то использовал для обменя с 1с77..
В общем решил я проблему.. Строку V8Base.фзФоновыеЗадания.ВыполнитьОбменСБухгалтерией(); заменил на V8Base.ФоновыеЗадания.Выполнить("фзФоновыеЗадания.ВыполнитьОбменСБухгалтерией",,,"Автоматический обмен с 1С Бухгалтерией"); Теперь работает. ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |