Утилита на С# для отображения курсов валют 1С

Маленькая утилита для вывода текущего курса валют поверх окна 1С.

Утилита была создана по запросу менеджера предприятия. В 1С конфигурации реализован механизм записи текущего курса валют в сетевой файл ПриЗаписи регистра сведений.

Процедура ПриЗаписи(Отказ, Замещение)

ткКурсДолара = ОбщийМодуль.КурсНаДату(ТекущаяДата(), "долар");
ткКурсЕвро = ОбщийМодуль.КурсНаДату(ТекущаяДата(), "євро");

Если (НЕ ткКурсДолара = Ложь) И (НЕ ткКурсЕвро = Ложь) Тогда
ткКроссКурс = Окр((ткКурсЕвро / ткКурсДолара),3);

ФайлКурса = Новый Файл("..curs.txt");
Если ФайлКурса.Существует() Тогда

Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ФайлКурса.ПолноеИмя);
Текст.Очистить();

Текст.ДобавитьСтроку(Строка(Формат(ткКурсДолара, "ЧДЦ=2; ЧРД=.")));
Текст.ДобавитьСтроку(Строка(Формат(ткКурсЕвро, "ЧДЦ=2; ЧРД=.")));
Текст.ДобавитьСтроку(Строка(Формат(ткКроссКурс, "ЧДЦ=3; ЧРД=.")));

Текст.Записать(ФайлКурса.ПолноеИмя);

КонецЕсли;

КонецЕсли;

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

Утилита каждые 5 сек. считывает данные из текстового файла в сети и отображает текущий курс. Положение утилиты фиксировано. Расчет положения автоматический, в зависимости от настроек разрешения экрана, занимает позицию в правом верхнем углу, с отступом ТОР 35, RIGHT 5. Эти, и другие параметры можно настроить под свои нужны, исходник на С# прилагается. (Если у Вас нет опыта в программировании на C# но есть желание использовать эту утилиту, возможно с другими настройками, обращайтесь в личку, помогу чем смогу. Не бесплатно.)

При сворачивании 1С утилита прячется, при разворачивании отображается вновь. При выходе из 1С утилита автоматически закрывается. 

Создано на VS 2024 (WPF form). Тестировалось на платформе 1С:Предприятие 8.3 (8.3.13.1644).

2 Comments

  1. xtd

    (1)

    ..цепляется за hwnd.. — совершенно верно.

    Область применения зависит от Вашей фантазии. Курс валют — это только одно из всевозможных решений.

    Reply
  2. gosizo

    Интересное решение

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *