|   |   | 
| 
 | Внешняя обработка в батнике | ☑ | ||
|---|---|---|---|---|
| 0
    
        inmortal203 31.07.13✎ 17:26 | 
        Не до конца срабатывает внешняя обработка обмена между базами УНФ -> БУ.
 Вот код батника: c: cd "C:\Program Files (x86)\1cv82\8.2.16.362\bin" 1cv8c.exe ENTERPRISE /FDB /F "D:\Test" /N Exchange /P 111 /UC 222 /Execute "C:\Users\7\Desktop\Unloading\V8Exchan82.epf" /Out"C:\Users\7\Desktop\Unloading\vigruzka_log.txt" [-NoTruncate] Воспользовался стандартной обработкой. Создал процедуру автообмен, которую поместил в ПриОткрытии. В ней прописал вручную все параметры и сэмулировал нажатие клавиши ЭНТЕР для выгрузки. Так вот все срабатывает хорошо, но выгрузка не идет. Выгружено - 0 объектов. Тут нажимаешь физически энтер, и, о чудо! выгружено - 10 объектов. Не важно как нажать кнопку, ЭНТЕРом или мышкой, сработает! А вот программное нажатие срабатывает, но судя по всему при нем не отрабатывают какие то события, другого обьяснения нет... | |||
| 1
    
        Ахиллес 31.07.13✎ 17:30 | 
        Ох уж эти сказочники, ох уж эти сказочки.
 А делов то на 5 минут отладки. | |||
| 2
    
        inmortal203 31.07.13✎ 17:31 | 
        (1) При отладке как раз все ОК     | |||
| 3
    
        Ахиллес 31.07.13✎ 17:32 | 
        (2) Процедура выгрузки запускается, но не выгружает?     | |||
| 4
    
        inmortal203 31.07.13✎ 17:32 | 
        + еще момент, на другом компе тоже все срабатывает. но другой комп это к сожалению мой... а не заказчика     | |||
| 5
    
        Ахиллес 31.07.13✎ 17:33 | 
        " сэмулировал нажатие клавиши ЭНТЕР " вот это меня несколько смущает, нельзя ли поподробнее?     | |||
| 6
    
        inmortal203 31.07.13✎ 17:35 | 
        (3) Ага. Запускается 1С, запускается обработка, происходит считывание правил, затем я список выгружаемых объектов программно редактирую, оставляя только пару доков, затем следует нажатие энтер
 Shell = Новый COMОбъект("WScript.Shell"); Shell.SendKeys("{ENTER}"); Это все сопровождается системными сообщениями об успешных операциях, затем происходит выгрузка, но объекты не выгружаются. И кстати лог из батника /Out"C:\Users\7\Desktop\Unloading\vigruzka_log.txt" [-NoTruncate] так же не создается... | |||
| 7
    
        inmortal203 31.07.13✎ 17:36 | 
        а на моем компе, и лог, и выгрузка, все как заказывали)) маразм     | |||
| 8
    
        Ахиллес 31.07.13✎ 17:37 | 
        Вместо вот этой куиты "    Shell = Новый COMОбъект("WScript.Shell");
 Shell.SendKeys("{ENTER}");" просто вставь вызов процедуры нужной. | |||
| 9
    
        inmortal203 31.07.13✎ 17:38 | 
        сначала выгрузка вообще не шла, но дело оказалось в этом 1cv8c.exe, а было 1cv8.exe. Обработка под тонкий клиент, а запускался толстый.     | |||
| 10
    
        inmortal203 31.07.13✎ 17:39 | 
        (8) я поначалу так сделал) но потом решил вот попробовать хардкор. "Если ты хочешь чтоб тебе нажали кнопку - на тебе!!!" Но нет, не хочет(     | |||
| 11
    
        Ахиллес 31.07.13✎ 17:40 | 
        (10) Забей. В этой обработке шелл не пень не впёрся. Сделал и забыл.     | |||
| 12
    
        inmortal203 31.07.13✎ 17:41 | 
        &НаКлиенте
 Процедура Автообмен() ИзменитьРежимОбработки(ЭтоКлиент); Объект.ИмяФайлаПравилОбмена = "#####"; Файл = Новый Файл(ИмяФайлаПравил); Если Не Файл.Существует() Тогда Возврат; КонецЕсли; ПравилаЗагружены = Истина; /////////////////Чтение правил обмена///////////////// АдресФайлаПравилВХранилище = ""; ИмяФайлаДляРасширения = ""; Если ЭтоКлиент Тогда Если Не ПоместитьФайл(АдресФайлаПравилВХранилище, "Файл правил обмена", ИмяФайлаДляРасширения,,УникальныйИдентификатор) Тогда Возврат; КонецЕсли; Иначе Если ПустаяСтрока(Объект.ИмяФайлаПравилОбмена) Тогда Предупреждение(НСтр("ru = 'Выберите файл правил обмена.'")); Возврат; КонецЕсли; КонецЕсли; Объект.ФлагОшибки = Ложь; Состояние(НСтр("ru = 'Выполняется чтение правил обмена. Пожалуйста, подождите...'")); ВыполнитьЗагрузкуПравилОбмена(АдресФайлаПравилВХранилище, ИмяфайлаДляРасширения); Если Не Объект.ФлагОшибки Тогда ПравилаЗагружены = Истина; Иначе ПравилаЗагружены = Ложь; КонецЕсли; /////////////////Чтение правил обмена///////////////// ПрямаяВыгрузка = Истина; ПрямаяВыгрузкаПриИзмененииЗначения(); Объект.КаталогИнформационнойБазыДляПодключения = "####"; Объект.ВерсияПлатформыИнформационнойБазыДляПодключения = "V82"; Объект.ПользовательИнформационнойБазыДляПодключения = "Бухгалтерия"; Объект.ПарольИнформационнойБазыДляПодключения = ""; ПериодВыгрузки.ДатаНачала = НачалоДня(ТекущаяДата()); ПериодВыгрузки.ДатаОкончания = КонецДня(ТекущаяДата()); Объект.ДатаНачала = НачалоДня(ТекущаяДата()); Объект.ДатаОкончания = КонецДня(ТекущаяДата()); /////////////////Выбор необходимых объектов для выгрузки///////////////// Для Каждого ПервыйУровень ИЗ Объект.ТаблицаПравилВыгрузки.ПолучитьЭлементы() Цикл ПервыйУровень.Включить = 0; Для Каждого ВторойУровень Из ПервыйУровень.ПолучитьЭлементы() Цикл ВторойУровень.Включить = 0; Если ВторойУровень.ЭтоГруппа Тогда Для каждого ТретийУровень Из ВторойУровень.ПолучитьЭлементы() Цикл Если Найти(ТретийУровень.Наименование,"Расход из кассы")<>0 ИЛИ Найти(ТретийУровень.Наименование,"Поступление в кассу")<>0 Тогда ТретийУровень.Включить = 1; ВторойУровень.Включить = 1; Иначе ТретийУровень.Включить = 0; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; /////////////////Выбор необходимых объектов для выгрузки///////////////// //ВыполнитьВыгрузкуИзФормы(); НажатиеЭнтер(); КонецПроцедуры | |||
| 13
    
        Ахиллес 31.07.13✎ 17:42 | 
        (12) Хвалишься или жалуешься? Продаёшь или покупаешь?     | |||
| 14
    
        inmortal203 31.07.13✎ 23:33 | 
        (13) пытаюсь разобраться...     | |||
| 15
    
        Jump 01.08.13✎ 00:28 | 
        (0)От имени какого пользователя системы запускается программа?.
 (2)Это как? Запускаешь отлаживать все срабатывает, а запускаешь работать нет? Ну так в режиме отладки и запускай. Ну и еще мне непонятен момент эмуляции нажатия клавиши? А это зачем? Не проще ли в коде перевесить обработчик запуска с кнопки на входную процедуру? | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |