|
ЗапуститьПриложение() | ☑ | ||
---|---|---|---|---|
0
nAPACEHAK
17.10.24
✎
15:22
|
Доброго
Помогите лыжи смазать 8.3.25.1374 Обычные. УТ10 Процедура КнопкаВыполнитьНажатие(Кнопка) Результат = ОбработатьФайл(ИмяФайла); ВывестиЛог(Результат); КонецПроцедуры Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИмяФайла = ПолучитьИмяФайла(); Если Не ЗначениеЗаполнено(ИмяФайла) Тогда Возврат; КонецЕсли; Результат = ОбработатьФайл(ИмяФайла); ВывестиЛог(Результат); КонецПроцедуры в ОбработатьФайл() есть вызов команды системы ЗапуститьПриложение(Строка, Каталог, Истина, КодВозврата); 1. Выбираем файл обработчик выбора - получаем результат 2. Жмем Выполнить - обработчик кнопки - получаем результат, теряем фокус с окна предприятия вместо ЗапуститьПриложение() делал так //WshShell = Новый COMОбъект("WScript.Shell"); //Р = WshShell.Run("" + Строка + "", 1, 10); результат такой же Чем еще намазать лыжи то? Спасибо |
|||
1
osa1C
17.10.24
✎
15:23
|
(0) Лыжи смажь салом
|
|||
2
Franchiser
гуру
17.10.24
✎
15:24
|
(0) какая модель лыж?
|
|||
3
Fedor-1971
17.10.24
✎
15:30
|
(0) посмотри в сторону КомандаСистемы(<СтрокаКоманды>, <ТекущийКаталог>)
Словами напиши что хочешь сделать? так то, ты пытаешься обработать файл сразу после его выбора и ещё один раз - по кнопке (как я понимаю, файл уже модифицирован) |
|||
4
Волшебник
17.10.24
✎
15:29
|
третий параметр: ДождатьсяЗавершения
ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>)
чё не так? |
|||
5
nAPACEHAK
17.10.24
✎
15:30
|
(3) Хочу что бы не терялся фокус с предприятия после выполнения команды системы
не пойму, почему одно и тоже а поведение разное если с обработчикавыбора то фокус с предприятия не теряется. а если выполнить с кнопки - то фокус будет на другом открытом окне (браузер, блокнот, чегоугодно) а предприятие сворачивается |
|||
6
nAPACEHAK
17.10.24
✎
15:31
|
(4) да, дожидаемся завершения, получаем код = 0. тут все норм. но 1С предприятие сворачивается вниз
|
|||
7
Волшебник
17.10.24
✎
15:36
|
Оболочка = Новый COMОбъект("Wscript.Shell"); КодВозврата = Оболочка.Run(СтрокаЗапуска, 0, истина); Оболочка.AppActivate(ПолучитьЗаголовокПриложения()); ЭтаФорма.Активизировать(); |
|||
8
Fedor-1971
17.10.24
✎
15:39
|
(5) Так запуск приложения и предполагает передачу фокуса оному, только 1С будет ждать пока ты его закроешь
КомандаСистемы - чисто выполнит то, что просили (типа откроется окно cmd, стартанёт приложение) и сразу отдаст фокус в 1С |
|||
9
Fedor-1971
17.10.24
✎
15:43
|
(7) ПолучитьЗаголовокПриложения() - это заголовок 1С?
что-то мне думается, что в этом коде не всегда будет получать именно заголовок 1С |
|||
10
nAPACEHAK
17.10.24
✎
15:44
|
(8)
см (0). одни и те же действия для разных обработчиков. для одного отдает фокус для другого нет (7) спс. сейчас попробую |
|||
11
Fedor-1971
17.10.24
✎
15:51
|
(10) Контекст старта отличается, возможно, что при нажатии кнопки теряется связь с формой
|
|||
12
nAPACEHAK
17.10.24
✎
16:14
|
*7) увы ((
Ваш вариант тоже так же отработал. Этот тоже Заголовок = ПолучитьЗаголовокПриложения(); Результат = ОбработатьФайл(ИмяФайла); ВывестиЛог(Результат); Оболочка = Новый COMОбъект("Wscript.Shell"); Оболочка.AppActivate(Заголовок); ЭтаФорма.Активизировать(); |
|||
13
Волшебник
17.10.24
✎
16:16
|
(12) Почему запуск приложения называется "ОбработатьФайл"? Что Вы запускаете?
|
|||
14
nAPACEHAK
17.10.24
✎
16:31
|
(12) Результат = ОбработатьФайл(ИмяФайла);
Внешняя обработка. Функция объекта. сам запуск в функции так: Строка = СтрШаблон("""%1"" -enc UTF-8 -raw ""%2"" result.txt", Каталог + "\" + Утилита, ИмяФайла); КодВозврата = Неопределено; ЗапуститьПриложение(Строка, Каталог, Истина, КодВозврата); пробовал: из объекта все переносил на форму - результат не изменился |
|||
15
Волшебник
17.10.24
✎
16:29
|
(14) Используйте КомандаСистемы
|
|||
16
nAPACEHAK
17.10.24
✎
16:48
|
(15) пробую в консоли кода
Тек = "k:\Хлам\"; Строка = "k:\Хлам\pdftotext.exe"; КомандаСистемы(Строка, Тек); мелькает черное cmd окно (откр-закр) и фокус с предприятия улетает на другое приложение |
|||
17
Волшебник
17.10.24
✎
16:50
|
(16) Ну и хрен с ним. Ваше дело массово обработать файлы, а не ловить этот фокус.
|
|||
18
Fedor-1971
17.10.24
✎
16:52
|
(16) Строка = "Start wait """" k:\Хлам\pdftotext.exe"; - будет ждать пока не отработает конвертатор
|
|||
19
nAPACEHAK
17.10.24
✎
16:54
|
(17) ))) ну я так и подумал, про с ним то, но наше дело поймать результат этого выполнения и вывести в окно пользователю.
вот в окно результат выводится и до кучи свертывает предприятие, что не есть слишком хорошо ((( |
|||
20
Волшебник
17.10.24
✎
16:55
|
Запустите конвертацию на сервере в фоновом задании
|
|||
21
Fedor-1971
17.10.24
✎
17:01
|
(19) тогда вернёмся к исходной точке
Полностью словами что нужно сделать? Примерно так: помещаем файлы в каталог, запускаем конвертатор, он сохраняет лог своей работы, пользователю показываем лог Тут весь вопрос в команде, у общей команды нет окна выполнения, можно попробовать приклеить кнопку с командой формы |
|||
22
nAPACEHAK
17.10.24
✎
17:18
|
(19)
Даже еще немного упростим Есть внешняя обработка. поле ввода и кнопка содержимое обработчиков идентично (0) по обработчику выбора имени файла - конвертится пдф, парсится, выводится результат - тут все ок по обработчику кнопки - тоже все работает и выводится, НО... предприятие свернуто. точнее даже не свернуто, а становится активным то приложение, которое было активно до предприятия ну а если без упрощения - так же выбирается файл из вложений, сохраняется, парсится, возвращается результат, заполняются нужные поля на форме ну и плюсом фокус улетает с преддприятия, т.е. поведение как по кнопке из упрощения. вот в чем разница этих обработчиков? почему поведение разное? |
|||
23
Fedor-1971
17.10.24
✎
17:53
|
(22) Кнопка уводит НаСервер выполнение?
Попробуй сделать так: 1. Вынеси в отдельную процедуру, например, Конвертатор() Результат = ОбработатьФайл(ИмяФайла); ВывестиЛог(Результат); 2. Замени вызов в разных местах на Конвертатор() - сразу будет понятно наличие косяка т.к. поведение фокуса будет одинаковым 3. При работе с вложениями, сначала сохрани в файл (желательно НаКлиенте) и запусти Конвертатор() Похоже, что есть обращение к серверу и потеря контекста формы |
|||
24
nAPACEHAK
17.10.24
✎
18:01
|
(23) спс. буду попробовать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |