Имя: Пароль:
1C
 
Запуск фонового задания через 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С Бухгалтерией");


Теперь работает. )
2 + 2 = 3.9999999999999999999999999999999...