Остановка загрузки (Выгрузка SH5 в 1С 2.0)
Для прерывания процесса загрузки накладных нажмите комбинацию клавиш [Ctrl+Break]. Загрузка происходит циклично с шагом 50 документов. То есть, система отбирает первые 50 документов из списка (в хронологическом порядке, считая с даты начала интервала загрузки), затем происходит заполнение табличных частей документов, после этого – запись документов. Затем отбирает следующие 50 документов и выполняет то же самое и т.д. до тех пор, пока не будут загружены все документы. Выполнение можно остановить перед заполнением табличных частей документов и перед записью документов. Информацию о текущем состоянии загрузки можно увидеть на панели состояния в нижнем левом углу окна 1С.
Загрузка документов будет остановлена для текущего цикла из 50 документов (если она произведена перед заполнением табличных частей документов или перед записью документов) и последующих. Предыдущие (загруженные) циклы документов останутся без изменений.

Нажмите комбинацию [Ctrl+Break] 1 раз. После этого загрузка будет прервана и в окне служебных сообщений будет получено сообщение об этом.
Прерывание выполнения отчета, обработки и других длительных действий
Формирование отчета, занимающее продолжительное время, может быть прервано пользователем нажатием клавиши Esc. При этом отчет сформирован не будет. Эта возможность применяется для того, чтобы отказаться от формирования отчета после начала его формирования.
После нажатия клавиши Esc выводится вопрос: «Прервать выполнение обработки?». При нажатии кнопки «Да» формирование отчета прекращается. При нажатии кнопки «Нет» формирование отчета продолжается дальше.
Заметим, что выдача вопроса может произойти не в сам момент нажатия клавиши Esc, а несколько позже. Это объясняется тем, что прерывание формирования отчета может выполняться системой только на определенных стадиях.
Аналогично могут быть прерваны и другие продолжительные действия, например, выполнение обработки или проведение документа .
В зависимости от устройства конкретной обработки та часть действий, которая уже выполнена до нажатия клавиши Esc, будет отменена или наоборот записана. При прерывании проведения документа отменяется весь процесс проведения, и документ возвращается к состоянию до начала проведения. То есть документ не может быть проведен частично.
Некоторые действия системы не могут быть остановлены клавишей Esc, например, не может быть остановлена запись документа или установка периода расчета бухгалтерских итогов.
Другие материалы по теме:
Нас находят: как отменить формирование отчета в 1с 8 2, как остановить формирование отчета в 1с 8 2, как остановить обработку в 1с 8 2, как остановить формирование отчета в 1с, остановить обработку в 1с 8 2, как отменить формирование отчета в 1с, как остановить проведение документов в 1с, отменить формирование отчета в 1с, остановить формирование отчета в 1с, как отменить обработку в 1с 8 2

Мы на Facebook
© Учебный центр «Стимул», 2011-2023. info@stimul.kiev.ua
Длительные операции на сервере
Область применения: управляемое приложение.
1. При разработке конфигураций следует избегать длительных вызовов из клиентского кода в серверный. Все длительные серверные вызовы, которые могут выполняться более 8 секунд в обычных сценариях работы пользователя, следует выполнять асинхронно, с помощью фонового задания.
К таким операциям относятся: формирование отчета, групповая обработка объектов, загрузка или выгрузка данных в другое приложение, заполнение больших табличных частей и т.п.
В противном случае такие вызовы могут привести к потере работоспособности приложения или затруднению работы с ним:
- браузер может предложить прекратить длительно выполняющийся сценарий, после чего приложение станет неработоспособным;
- веб сервер может прервать длительное обращение к серверу 1С:Предприятия и вернуть ошибку 504 (шлюз не отвечает);
- в случае длительного выполнения операции, у пользователя нет возможности отменить ее.
2.1. Общий подход к асинхронному выполнению длительных серверных операций с помощью фонового задания:
Код, выполняющий длительную обработку данных, располагается в модуле менеджера объекта* или в общем модуле. Результат своей работы он помещает во временное хранилище;

а для прочих мест – выводится блокирующая форма ( РежимОткрытияОкна = БлокироватьОкноВладельца ), на которой размещена декорация с анимированной картинкой и кнопка «Отмена» :

2.2. Асинхронное формирование отчета требуется только для тех отчетов, которые
- разработаны без использования СКД или с использованием СКД, но с переопределенной процедурой формирования отчета (переопределен обработчик кнопки «Сформировать» или в обработчике модуля отчета ПриКомпоновкеРезультата устанавливается СтандартнаяОбработка = Ложь ).
- и формирование которых, как правило, занимает длительное время.
Поведение таких отчетов должно быть максимально похожим на поведение отчетов на базе СКД, а именно:
- форму отчета не следует блокировать на время его формирования;
- пользователь может изменить настройки и переформировать отчет, не дожидаясь окончания его формирования;
- при закрытии формы отчета, формирование отчета прерывается.
3. При использовании в конфигурации Библиотеки стандартных подсистем в распоряжении разработчика имеются вспомогательные функции и процедуры общих модулей ДлительныеОперации , ДлительныеОперацииКлиент , а также процедура УстановитьСостояниеПоляТабличногоДокумента общего модуля ОбщегоНазначенияКлиентСервер .
Пример выполнения функции в фоновом задании при использовании в конфигурации Библиотеки стандартных подсистем. В модуле менеджера объекта размещена функция, которая выполняет поиск настроек и возвращает их:
Функция ОпределитьНастройкиУчетнойЗаписи(АдресЭлектроннойПочты, Пароль) Экспорт
.
Возврат Настройки;
КонецФункции
В форме объекта выполняется вызов этой функции в фоновом задании в три этапа:
1) запуск фонового задания на сервере,
2) подключение обработчика завершения фонового задания на клиенте,
3) обработка результата выполнения фонового задания.
// 2. Подключение обработчика завершения фонового задания.
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
Оповещение = Новый ОписаниеОповещения(«ПриЗавершенииПоискаНастроек», ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
КонецПроцедуры
// 3. Обработка результата выполнения фонового задания.
&НаКлиенте
Процедура ПриЗавершенииПоискаНастроек(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда // Пользователь отменил задание.
Возврат;
КонецЕсли;
Если Результат.Статус = «Ошибка» Тогда
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
КонецЕсли;
Настройки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата);
УстановитьНастройкиУчетнойЗаписи(Настройки);
Методическая рекомендация (полезный совет)
3.1. При каждом выполнении фонового задания его результат помещается во временное хранилище на время жизни формы:
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, ПараметрФоновогоЗадания);
Если длительная операция выполняется пользователем многократно, пока эта форма открыта, то временные хранилища накапливаются, что вызывает рост потребления памяти. Поэтому для уменьшения расхода оперативной памяти в большинстве случаев рекомендуется очищать временное хранилище сразу после получения результата фонового задания:
Настройки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата); // Данные во временном хранилище больше не требуются.
Если же результат фонового задания требуется сохранять на протяжении нескольких серверных вызовов, то необходимо передавать фиксированный адрес заранее инициализированного временного хранилища:
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения,
«Справочники.УчетныеЗаписиЭлектроннойПочты.ОпределитьНастройкиУчетнойЗаписи»,
АдресЭлектроннойПочты, Пароль);
КонецФункции
4. Если в конфигурации реализуются алгоритмы, инициирующие запуск фоновых заданий или запись данных информационной базы без участия пользователя (например, регулярное обновление информации в открытой форме), то в них следует проверять, что в текущем сеансе не установлен монопольный режим. В противном случае, следует блокировать попытки выполнения таких действий. Например:
Если МонопольныйРежим() Тогда
Возврат;
КонецЕсли;
5. В некоторых случаях возникает необходимость в выполнении длительных операций, требующих установки монопольного режима доступа к информационной базе. Например:
Обновление данных ИБ при первом интерактивном запуске программы после обновления конфигурации;
Удаление объектов, помеченных на удаление;
Выгрузка данных информационной базы в файл для перехода в сервис;
Использования монопольного режима для снижения времени выполнения массовых операций по изменению данных;
При этом необходимо сначала устанавливать монопольный режим, а затем выполнять запуск фонового задания, которое реализует саму длительную операцию. В этом случае фоновым заданием будет унаследован монопольный режим, ранее установленный из пользовательского сеанса (см. документацию к платформе).
На время выполнения этого фонового задания следует блокировать весь интерфейс приложения, открывая форму ожидания завершения операции в режиме РежимОткрытияОкна = БлокироватьВесьИнтерфейс. Блокировать интерфейс приложения требуется потому, что на время выполнения задания полноценная работа пользователя с приложением уже невозможна:
- Если пользователь(*) попытается записать какой-либо объект, это приведет к ошибке (из-за установленного монопольного режима);
- В ряде случаев могут запускаться фоновые задания в качестве реакции на действия пользователя случае (при поиске в динамическом списке, при вводе по строке, формировании отчетов и пр.), которые также завершатся с ошибкой.
Кроме того, на самой форме ожидания длительной операции не следует размещать элементы управления, которые могут приводить к запуску таких фоновых заданий. Например: поля ввода, динамические списки и отчеты.
* Примечание: ошибки записи также возникают в тех случаях, когда объекты записываются программно, например, из обработчиков ожидания. В них также следует проверять монопольный режим согласно п.5.
Прервать формирование отчёта в 1С:БП 8.3
Был задан такой вопрос в 1С: почему нет возможности прервать исполнение ошибочно запущенного отчёта? Приходится аварийно завершать сеанс работы с приложением.
Это СЪЕДАЕТ РАБОЧЕЕ ВРЕМЯ ПОЛЬЗОВАТЕЛЕЙ ПРОГРАММЫ.
1С:БП8.3(8.3.5.1383) ред.3.0(3.0.38.51)
Вчера получен ответ от разработчиков:
«Формирование отчета происходит на сервере, а прерывание доступно только на клиенте
В серверном режиме работы формирование отчетов не блокирует интерфейс, и если отчет запущен ошибочно, то его можно просто закрыть или изменить его настройки и запустить формирование заново, не дожидаясь пока он сформируется»
