Пауза без загрузки процессора. Внешняя компонента Native API на C++

21.03.20

Разработка - Разработка внешних компонент

Внешняя компонента Native API на C++ для Win32 и Win64 позволяет установить паузу на заданное количество секунд без загрузки процессора.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Внешняя компонента
.zip 113,32Kb
6
6 Скачать (2 SM) Купить за 2 150 руб.
Обработка для тестирования (в макете есть архив с внешней компонентой)
.epf 127,61Kb
6
6 Скачать (3 SM) Купить за 2 450 руб.
Проект на С++ для Microsoft Visual C++ 2019
.zip 9,81Mb
9
9 Скачать (3 SM) Купить за 2 450 руб.

Внешняя компонента позволяет установить паузу на заданное количество секунд без загрузки процессора. Разработана по технологии Native API, можно использовать как на клиенте, так и на сервере. Только для операционной системы Windows, как 32-х разрядной, так и 64-х разрядной. 

Установка внешней компоненты для типовой конфигурации на БСП:

1. Перейдите в раздел НСИ и администрирование - Печатные формы, отчеты и обработки - Внешние компоненты. 

2. Нажмите "Добавить из файла", выберите zip-архив с  компонентой, заполните идентификатор, версию и наименование (например: Pause, 1.0, Пауза), нажмите "Записать и закрыть".

Можно в конфигураторе добавить zip-архив в макет с типом "Двоичные данные" и использовать из макета.

К разработке приложена обработка для тестирования внешней компоненты как из макета (компонента уже есть в макете внешней обработки), так и из справочника "Внешние компоненты".

Время паузы указывается в миллисекундах (Для установки паузы на 5 секунд нужно указать 5000).

Кнопка "Установить" - устанавливает компоненту на клиента. 

Кнопка "Тест" - для проверки работоспособности компоненты.

Пример вызова паузы:

ВКом = Новый("AddIn.Pause.Pause");
ВКом.Pause(2000);
ВКом.Пауза(2000); //можно на русском

Компонента тестировалась на конфигурации Управление торговлей, редакция 11 (11.4.10.57), подойдет для абсолютно любой конфигурации (даже самописной), так как компоненту можно загрузить в макет и использовать оттуда. Папку с проектом на С++ можно использовать как шаблон для разработки собственной внешней компоненты или доработать текущую.

Внешняя компонента Native API C++ Пауза Sleep

См. также

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    29447    140    100    

93

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    37429    116    128    

117

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    78249    73    280    

191

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47911    125    66    

68

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2992    bayselonarrend    14    

50

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    5853    kovalevdmv    26    

79

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1426    3    4    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2487 21.03.20 19:03 Сейчас в теме
Не хочу расстраивать но в БСП уже сделали паузу без загрузки процессора.
korableg; acanta; gzharkoj; +3 Ответить
2. Dmitrij-2 47 21.03.20 19:33 Сейчас в теме
(1) Внешней компонентой?
3. capitan 2487 21.03.20 23:16 Сейчас в теме
(2)Фоновым заданием
4. tormozit 7276 22.03.20 08:05 Сейчас в теме
(3) В файловой базе работает?
8. capitan 2487 22.03.20 13:00 Сейчас в теме
(4)Работает во всех вариантах баз 100%
Код сюда не буду постить ибо копирайто.
Посмотрите в любой типовой конфигурации поиском Пауза(
5. leemuar 23 22.03.20 10:05 Сейчас в теме
(3) фоновые задания нагружают сервер. Особенно в ситуации, когда при наличии множества интеграций с паузами, этих пауз делается десятки и сотни
6. ltfriend 22.03.20 10:58 Сейчас в теме
(3) фоновым заданием можно сделать паузу, например в 200 мс или в 500 мс?
14. capitan 2487 22.03.20 18:48 Сейчас в теме
(6)и в 1 мкс тоже не поставить. Стесняюсь спросить, зачем нужна пауза в полсекунды и сколько по вашему займет подключение внешней компоненты?
16. ltfriend 23.03.20 08:48 Сейчас в теме
(14) Подключить компоненту можно один раз, а паузу вызывать сколько угодно раз. Зачем? Да простой пример - сайт ВКонтакте ограничивает частоту запросов не более 5 раз в секунду. Попробуйте без паузы в 200 мс выгрузить, например 1000 товаров (да хоть 100) и не получить ошибку 6 - "Слишком много запросов в секунду".
imzharikov; +1 Ответить
7. sergling 34 22.03.20 12:31 Сейчас в теме
(3) не получается поставить паузу в фоновом задании
13. capitan 2487 22.03.20 18:46 Сейчас в теме
(7)МенеджерФоновыхЗаданий (BackgroundJobsManager)
ОжидатьЗавершенияВыполнения (WaitForExecutionCompletion)
Доступен, начиная с версии 8.3.13.
Синтаксис:
ОжидатьЗавершенияВыполнения(<ФоновыеЗадания>, <Таймаут>)
22. sergling 34 25.03.20 20:17 Сейчас в теме
(13) я имею ввиду что мне в самом фоновом задании нужно делать паузу в определенных местах кода
9. PowerBoy 3458 22.03.20 15:18 Сейчас в теме
Ну вот пауза без загрузки проца:

Функция Ожидать(ВремяОжидания) Экспорт
    
    Если ВремяОжидания <> 0 Тогда
        
        НастройкиПрокси = Новый ИнтернетПрокси(Ложь);
        НастройкиПрокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
        НастройкиПрокси.НеИспользоватьПроксиДляАдресов.Добавить("127.0.0.0");
        
        Попытка
            Loopback = Новый HTTPСоединение(
                "127.0.0.0",,,,НастройкиПрокси,
                ВремяОжидания);
            Loopback.Получить(Новый HTTPЗапрос());
			Возврат Истина;
        Исключение
            Возврат Ложь;
        КонецПопытки;
        
    КонецЕсли;
    
КонецФункции
Показать
11. leemuar 23 22.03.20 15:24 Сейчас в теме
(9) запустите сразу 100 пауз и замерьте потребление ресурсов (в том числе сетевых)
12. capitan 2487 22.03.20 18:44 Сейчас в теме
(11)
запустите сразу 100 пауз и замерьте потребление ресурсов

подключите сразу 100 внешних компонент и замерьте потребление ресурсов
Вероятность, что 100 одновременно работающих пользователей поставят паузу в одно и то же время очень невелика
А вот на 100 развернутых баз 100% придется подключить 100 внешних компонент.
15. leemuar 23 22.03.20 23:07 Сейчас в теме
(12) Спасибо что копируете мой стиль, это приятно. Ничего не будет при подключении 100 внешних компонент, мы проверяли и замеряли :) Возможно вы немного не в курсе как компонента располагается и переиспользуется в памяти.

В базах с хорошим количеством интеграций busy-loop паузы существенно снижают производительность сервера и клиента. В отличие от использования шедуллера ОС, который используется во внешней компоненте
23. Andreynikus 1385 31.05.20 17:31 Сейчас в теме
(9)
Попробуйте сделать паузу в 30 секунд этим методом, сильно удивитесь -)
24. PowerBoy 3458 31.05.20 19:40 Сейчас в теме
(23)Я знаю, что пауза до 20 секунд, поэтому если требуется больше - запускайте в цикле.
10. Steelvan 307 22.03.20 15:20 Сейчас в теме
На этом сайте уже присутствуют минимум три родных dll с методом задержки Pause().
Ищутся и находятся простым поиском по сайту.
17. Infactum 318 23.03.20 09:08 Сейчас в теме
Полезная нагрузка этих компонент с паузой - одна строка кода
std::this_thread::sleep_for(...)

Но даже при этом авторам компонент обычно лень собрать кроссплатформенно.
starik-2005; +1 Ответить
18. savostin.alex 39 23.03.20 10:21 Сейчас в теме
Попытка
Для Счетчик = 1 По 3 Цикл
ПолучитьCOMОбъект("winmgmts:").ExecNotificationQuery("Sel ect * fr om __instancemodificationevent where TargetInstance isa 'Win32_UTCTime'").NextEvent();
КонецЦикла;
Исключение
КонецПопытки;
19. starik-2005 3172 23.03.20 15:55 Сейчас в теме
(18) а без com, и чтобы на Linux работало?
20. savostin.alex 39 24.03.20 01:50 Сейчас в теме
21. starik-2005 3172 24.03.20 09:03 Сейчас в теме
(20) https://yandex.ru/turbo?text=https%3A%2F%2Fandreyex.ru%2Flinux%2Fkomandy-linux-i-komandy-shell%2Fispolzovanie-komandy-sleep-v-skriptah-bash-v-linux%2F

Просто ВыполнитьКомандуСистемы("sleep 0.05") для 5 мс ожидания. В первый раз будет чуть дольше, дальше закешируется и будет летать. И это не кушает ресурсов (см сцылку).
25. shmalevoz 311 30.06.20 01:43 Сейчас в теме
Аналогично в винде
choice /N /D:y /T:100
пауза в 100 секунд
26. EmpireSer 28.09.20 01:12 Сейчас в теме
(25) А чем команда "timeout /t <Число>" не угодила ?
27. 7OH 70 05.08.21 18:06 Сейчас в теме
В браузере на клиенте работает ?
28. Dmitrij-2 47 05.08.21 19:02 Сейчас в теме
Оставьте свое сообщение