14 декабря 2009 г.

Как прервать выполнение обработки в 1С 8

Вообще-то сегодня у меня на очереди была друга тема, а именно - программное создание документа «Корректировка записей регистров» (в продолжение «Как программно создать и заполнить документ «Операция»). Но мне очень хотелось, чтобы пример для нее был реальный, из жизни. Пример-то я придумал, но с ним вышла небольшая заминка. И чтобы пауза долго не затягивалась, я пока решил переключиться на что-нибудь другое.

Сегодня у меня совсем простая «объяснялка» на тему Как прервать выполнение обработки в 1С 8. Судя по статистике того же Яндекса, этим вопросом регулярно интересуются, поэтом я счел нужным упомянуть о нем в дневнике.

Кто работал с 1С версии 7.7, тот знает, что любую обработку можно было прервать нажатием клавиши Esc. Эта возможность была встроена непосредственно в платформу 1С версии 7.7. И пользователи, и программисты к ней привыкли, поэтому отсутствие функции прерывания в восьмой версии платформы 1С:Предприятие вызывала недоумение.

На самом же деле в 1С 8 с прерыванием обработок все в порядке. Разработчики платформы поступили мудро, предоставив управление прерыванием модулей программистам-разработчикам конфигураций. Для этого в список процедур и функций интерактивной работы была включена процедура ОбработкаПрерыванияПользователя(). Данная процедура предназначена для прерывания работы встроенного языка при нажатии пользователем клавиш Ctrl+Break. Процедура ОбработкаПрерыванияПользователя() проверяет, были ли нажаты клавиши Ctrl+Break. Если да, то выполнение встроенного языка прекращается и выдается сообщение «Выполнение прервано пользователем!».

Данную процедуру рекомендуется использовать внутри циклов, если есть подозрение, что выполнение цикла может затянуться надолго. Упрощенно это можно представить так:

Пока ВыполняетсяУсловие Цикл
 //Внутри цикла выполняются необходимая работа
 //...............................
 //В конце цикла осуществляется проверка 
 //необходимости прерывания выполнения программы
 
 ОбработкаПрерыванияПользователя();
КонецЦикла;

Обратите внимание, что процедура ОбработкаПрерыванияПользователя будет работать только в тех случаях, когда допускается прерывание выполнения модулей. Платформа 1С 8 допускает прерывание выполнения, если оно инициировано определенным интерактивным действием пользователя, такими как:

  • нажатие кнопки в форме;
  • выбор пункта меню или кнопки командной панели в форме;
  • выбор пункта меню или кнопки панели инструментов интерфейса;
  • действия, инициируемые обработчиками событий «Выбор» элементов управления.

Процедура не используется на сервере 1С:Предприятие, а также в модуле внешнего соединения.

P. S. Пользуясь случаем, хочу напомнить Вам об акции по обмену ссылками. Первый обмен в рамках акции уже состоялся.

Комментировать в ВКонтакте

Комментировать в Facebook

Комментировать в Blogger

2 комментария: