Добавить в api метод открытия файла в режиме предприятия

9815 Открыто

Прошу добавить в api метод открытия файла в режиме предприятия

Комментарии

tormozit
#1, 05 ноября 2024 08:13

Отправить нажатие CTRL+O?


bolsun
#2, 05 ноября 2024 10:12

(1) tormozit, я так понял нужно не открытие диалога, а открытие файла.
А это вызвать диалог, дождаться, вставить путь, затем Enter.


amiralnar
#3, 05 ноября 2024 13:52

(2) bolsun, Нельзя сэмулировать Drag'n'Drop файла в окно конфигуратора?


tormozit
#4, ред. 05 ноября 2024 14:32

(2) bolsun, Понял. Такая функция в АПИ для конфигуратора для начала не помешала бы.
Но и существующим АПИ можно решить задачу. В ИР адаптере есть похожая функция ЗагрузитьТочкиОстановаИзФайлаВОткрытомОкнеТочекОстанова().


bolsun
#5, 05 ноября 2024 14:39

(3) amiralnar, на первый взгляд можно.


9815
#6, ред. 23 ноября 2024 12:05

(2) bolsun,
накидал скрипт
Процедура ОткрытьФайл()
АктивноеОкно = ТурбоКонф.ПолучитьАктивноеОкно();
ТурбоКонф.ControlKey(Keys.O);
ТурбоКонф.Ждать(300);
ТурбоКонф.PasteText("e:\Users\user\dev\tasks\ОтладкаФорм.epf");
ТурбоКонф.Ждать(300);
ТурбоКонф.Key(Keys.Enter);

КонецПроцедуры

Срабатывает не всегда. Аналогично не всегда срабатывает "типовой" скрипт "Каталог файлов" - думаю проблема одна. С чем может быть связано?
Заявка по поводу скрипта "каталог файлов" - https://turboconf.ru/Tasks/9847


tormozit
#7, ред. 23 ноября 2024 12:10

(6) 9815, Понимаю, что намного интереснее самому разбираться, но все же рекомендую посмотреть в (4). Судя по твоей реализации, ты туда совсем не смотрел.


9815
#8, 23 ноября 2024 13:38

(7) tormozit, дело не в реализации. Твой вариант тоже отрабатывает в предприятии один раз. См. https://turboconf.ru/Tasks/9847


bolsun
#9, ред. 23 ноября 2024 14:07

(6) 9815, как я писал в ТГ, вместо PasteText нужно использовать УстановитьЗначение, который работает не через буфер.

Также:

ТурбоКонф.ControlKey(Keys.O);
ТурбоКонф.Ждать(300);  // МАЛО

Надежнее использовать двойную проверку

TurboApi.ЖдатьОкно("Открытие", 5000);
TurboApi.ЖдатьТипТекущегоЭлемента("поле|edit", 500);


tormozit
#10, ред. 23 ноября 2024 14:20

нужно использовать УстановитьЗначение

Не согласен. Я много раз сталкивался с тем, что этот метод не взводит внутренний флаг модифицированности в диалоге выбора файла. И причем такая проблема не только в этом диалоге, а еще и в других (например в палитре свойств конфигуратора). Поэтому уже давно отказался от такой установки текста в поля ввода. Смотри в ИР адаптере

Функция УстановитьИмяФайлаВДиалогеСохранения(ИмяФайла, ЗаголовокОкна) Экспорт
	//ОкноСохранения = ТурбоКонф.ЖдатьОкно(ЗаголовокОкна, 2000, Ложь);
	//Если ОкноСохранения = 0 Тогда
	//	Возврат;
	//КонецЕсли;
	Если Не ЖдатьПотерюАктивностиОкна() Тогда 
		Сообщить("Не дождались появления диалога сохранения файла");
		Возврат Ложь;
	КонецЕсли;
	ТурбоКонф.Ждать(100);
	//ТурбоКонф.УстановитьЗначение(ИмяФайла); // Так диалог не видит изменения
	ТурбоКонф.УстановитьЗначение("");
	ТурбоКонф.ВставитьТекст(ИмяФайла);
	ТурбоКонф.Ждать(100);
	ТурбоКонф.Клавиша(Клавиши.Enter);
	Возврат ЖдатьДоступностиФайла(ИмяФайла);
КонецФункции 


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера