Для прерывания цикла в 1С Предприятии имеется процедура ОбработкаПрерыванияПользователя. Метод проверяет, была ли нажата пользователем клавиша Ctrl+Break. Если клавиша была нажата, то выполнение встроенного языка прекращается и выдается соответствующее сообщение. Но иногда необходимо после выхода из цикла совершить какие-либо действия (записать в файл результаты, закрыть файл и т.п.). В данной реализации цикл выполняется в фоновом режиме. Во время выполнения доступны интерфейсные элементы управления, с помощью которых можно остановить выполнение цикла.
Файлы
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование |
Скачано |
Купить файл |
По подписке PRO
|
Компонента и обработка
.zip 13,15Kb
|
14 |
1 850 руб.
Купить
|
1 SM
Скачать
|
Исходники компоненты
.zip 4,58Kb
|
6 |
1 850 руб.
Купить
|
1 SM
Скачать
|
Новая версия. Dll и пример использования
.rar 13,42Kb
|
2 |
1 850 руб.
Купить
|
1 SM
Скачать
|
Подписка
PRO — скачивайте любые файлы со
скидкой до 85% из Базы знаний
Оформите подписку на
компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкой
Идея состоит в запуске цикла уже после отработки системного события (нажатие кнопки, пункта меню и т.п.). Это реализовано с помощью подключения обработчика событий в форме и внешней компоненты. При нажатии кнопки "Выполнить" подключается процедура, в которой выполняется цикл. При этом необходимо в цикле обрабатывать сообщения Windows, чтобы работали интерфейсные элементы управления. Те элементы, которые не нужны можно сделать недоступными. Внешняя компонента как раз содержит метод, который обрабатывает сообщения Windows. Метод возвращает true, если была нажата комбинация Ctrl+Break. Код метода на С++:
HRESULT InitDone::GetMessage(VARIANT * cbKey)
{
MSG msg;
V_VT(cbKey) = VT_BOOL;
V_BOOL(cbKey) = false;
while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
::DispatchMessage(&msg);
::TranslateMessage(&msg);
if(msg.message == WM_KEYDOWN && msg.wParam == 3) // Ctrl + Break
V_BOOL(cbKey) = true;
}
return S_OK;
}
В приложенных файлах содержатся исходники простейшей компоненты для 1, dll компоненты и шаблон обработки
Вступайте в нашу телеграмм-группу
Инфостарт