Имитация (программное) нажатия Клавиш В системе "1С:Предприятие" часто возникает ситуация, когда нужно закрыть окно сообщений, появляющееся при вызове метода Сообщить. Стандартно это окно закрывается при нажатии комбинации клавиш <Ctrl>+<Shift>+<Z>, но можно сделать это и программно.
Код 1C v 8.х //В ходе выполнения некоторого кода открывается окно сообщений
Сообщить("Сегодня: " +ТекущаяДата());
//Выполнение другой части кода
//Теперь нам необходимо закрыть окно сообщений
Wsh = Новый СОМОбъект("Wscript.shell");
//Wsh - переменная. Можно было дать любое другое имя, например Окно
Wsh.SendKeys("^+z"); //имитируем нажатие Ctrl+Z
Wsh.SendKeys("^+я"); //для случая, если текущей является русская раскладка клавиатуры
В результате выполнения данного кода окно сообщений будет
закрыто . Теперь поясним работу этого небольшого куска программы. SendKeys(String) - имитируется нажатие клавиши или последовательности клавиш, указанных в параметре String. В качестве параметра можно указывать как алфавитно-цифровые символы, так и символы специальных клавиш, например "Enter", "Tab", "F1", "Alt", "Shift", "Ctrl" и т.д. Для указания клавиш "Alt", "Shift", "Ctrl" существуют специальные коды:
· "Shift" - +;
· "Ctrl" - ^;
· "Alt" - %.
Если возникнет необходимость передать специальные символы именно как символы, а не команды, нужно заключать их в фигурные скобки, например {+}.
Категория:
COM-объекты, WMI, WSH Функция получение файла с сервера Код 1C v 8.х // Параметры:
// Адрес - адрес файла на сервере
// ЛокальныйПуть - путь для сохранения файла на локальном компьютере
// ВыдаватьСообщения - признак необходимости выдачи сообщений в случае ошибки
// (необязательный, по умолчаню равен Истина)
//
// Возвращаемое значение:
// Число - результат получения файла с сервера
// 0 - успешно;
// 1 - неправильный параметр
// 2 - неправильные код пользователя или пароль для доступа к "закрыто й" части сайта
// 3 - ошибка подключения к веб-сайту.
//
Функция ПолучитьФайлССервера(Знач Адрес, Знач ЛокальныйПуть, Знач ВыдаватьСообщения = Истина,
Знач Соединение = Неопределено) Экспорт
Если НЕ ЗначениеЗаполнено(Адрес) ИЛИ НЕ ЗначениеЗаполнено(ЛокальныйПуть) Тогда
ЗаписатьОшибку("Невозможно подключиться к сети Интернет: не инициализированы внутренние переменные.");
Возврат 1;
КонецЕсли;
Если Соединение = Неопределено Тогда
// Установка параметров прокси-сервера
Если ПроксиСерверТребуетАутентификации Тогда
ПроксиСервер = Новый ИнтернетПрокси();
ПроксиСервер.Пользователь = ПользовательПроксиСервера;
ПроксиСервер.Пароль = ПарольПроксиСервера;
КонецЕсли;
// Создание HTTP-соединения с сервером обновлений
Соединение = Новый HTTPСоединение(СерверОбновлений,
,
КодПользователяСервераОбновлений,
ПарольСервераОбновлений,
?(ПроксиСерверТребуетАутентификации, ПроксиСервер, Неопределено));
КонецЕсли;
Попытка
СоздатьКаталог(ПолучитьКаталогФайла(ЛокальныйПуть));
Соединение.Получить(Адрес, ЛокальныйПуть);
Исключение
// "Ошибка аутентификации при доступе Адресу"
ОписаниеОшибки = ОписаниеОшибки();
Если Найти(ОписаниеОшибки, Адрес) > 0 И НЕ Найти(ОписаниеОшибки, "не обнаружен") Тогда
ЗаписатьПредупреждение("Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки);
Если ВыдаватьСообщения Тогда
ОбщегоНазначения.ПредупреждениеОбОшибке("Неправильно указан код пользователя или пароль.");
КонецЕсли;
Возврат 2;
КонецЕсли;
// Файл не обнаружен
Если Найти(ОписаниеОшибки, "не обнаружен") Тогда
Сообщение = "Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки;
ЗаписатьПредупреждение("Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки);
Если ВыдаватьСообщения Тогда
ОбщегоНазначения.СообщитьОбОшибке(Сообщение);
КонецЕсли;
Возврат 3;
КонецЕсли;
// Ошибка работы с Интернет: a timeout was reached
Сообщение = "Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки;
ЗаписатьПредупреждение(Сообщение);
Если ВыдаватьСообщения Тогда
ОбщегоНазначения.СообщитьОбОшибке(Сообщение);
КонецЕсли;
Возврат 3;
КонецПопытки;
ЗаписатьИнформацию("Файл успешно получен (адрес: http://" + Соединение.Сервер + "/" + Адрес +
"; локальный файл: " + ЛокальныйПуть + ").");
Возврат 0;
КонецФункции
Категория:
Работа с Интернет, Почтой (Mail), FTP Выбор периода, задать период Код 1C v 8.х
//Процедура для кнопки выбор периода
Процедура ВыбПериодНажатие(Элемент)
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
НастройкаПериода.РедактироватьКакИнтервал = Истина;
НастройкаПериода.РедактироватьКакПериод = Истина;
НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период; //Закладка Период
// НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Интервал;// Закладка Интервал
Если НастройкаПериода.Редактировать() Тогда
НачПериода = НастройкаПериода.ПолучитьДатуНачала();
КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
КонецЕсли;
КонецПроцедуры
Код 1C v 7.x
// Функция ВвестиПериод выдает на экран диалог специального вида,
// при помощи которого пользователь может выбрать период.
// Выбранный пользователем период записывается в переменные, передаваемые как параметры при вызове метода.
Дата1 = '01.01.97';
Дата2 = '31.03.97';
Если ВвестиПериод(Дата1, Дата2, "Введите период отчета") <> 1 Тогда
// Нажата кнопка «Отмена», клавиша или закрыто окно диалога
Возврат 0;
Иначе
СформироватьОтчет(Дата1, Дата2);
КонецЕсли;
Категория:
Работа с Датами (Временем)