Как остановить отчет в 1с
Перейти к содержимому

Как остановить отчет в 1с

  • автор:

Как остановить отчет в 1с

если выполняется запрос то никак, если например в цикле есть ОбработкаПрерыванияПользователя() то ctrl+break, еще вариант подключить отладку и там остановить (если выполняется на сервере то должна быть включена отладка на сервере)

если серверная база — убить процесс в СУБД (как вариант — перезагрузить сервер). Если файловая — убить процесс в диспетчере задач.

Делать отчет через фоновое задание и длительную операцию
(5) это чит. Несчитово.

(5) А как принудительно остановить фоновое задание? (если клиенту стало пофиг на результат, а сервер нагружать бессмысленной работой не хочется?

(7) см в типовой: обработка ожидания, прерывание по esc
(8) Вкратце методику можно?

При формировании отчета запускается типовая форма длительной операции, через обработчик ожидание дергается состояние фонового задание, по кнопке esc выскакивает предложение завршить формирование, и при опросе фонового задания выпрлнится его завершение

(10) По кнопке Esc не прерывается.

(11) твой отчет может и не прерывается, нужно при написании отчетов использовать технологию заложенную в бсп

У тебя толстый или тонкий коиент? Внешний или внутренний отчет? В зависимости от этого по разному нужно писать отчет

«и при опросе фонового задания выпрлнится его завершение»
А как это конкретно происходит на уровне платформы? Есть метод «ПрерватьФоновоеЗадание» или типа такого?

ФоновоеЗадание (BackgroundJob)
Отменить (Cancel)
Синтаксис:

Отменяет задание. Задание может отменить только администратор или пользователь, запустивший задание.

Сервер, толстый клиент, внешнее соединение.

(14) если посмотришь общую форму «ДлительнаяОперация», там есть кнопка «Отменить»

(14) по этой кнопке выполняется закрытие формы, код по завершению задания размещен в обработчике ПриЗакрытии()

(15) И оно отменится в любом случае? А если в нём работает длительный тяжелый запрос — отменится сразу или платформа будет ждать, когда запрос выполнится?

(18) ждать не будет, отменит сразу
(19) Сильно сомневаюсь, что отменит длительный запрос.

(19) Ошибаешься. Проверка отмены выполняется только после каждой строчки кода исполняемого языка. Ты даже на цикле в одну строчку проверь (пусть фоновое, например, каждую секунду пишет в файл кол-во проходов цикла)

(21) не проверял, отменит сразу, но завершит не сразу)
Через кластер серверов тоже ведь не сразу завершается
а почему такие вопросы?
тема про то как прервать выполнение отчета, визуально будет выглядеть что задание прервано, как физически платформа завершит запущенное задание — другой вопрос.

(22) Ага визуально отменено, а сервер грузится. Такой хоккей нам не нужен.

(21) (23) смысл фоновых заданий в том, что можно выполнять, формирование отчета в нескольких потоках.
Это может потребоваться для повышения производительности формирования обработки/отчета и как бонус можно завершать эти потоки. Так вот по-моему мнению, если мы из одного потока даем отмену на выполнения задания, в котором код выполняется не приостанавливаясь ни на секунду не зависимо от того что выполняется в других потоках, то утверждение (21) что проверить на цикле, в котором фоновое что-то пишет в файл не может быть убедительным, т.к. выполнения кода в 2-х разных потоках никак не связано. Через какое реально времени произойдет завершение фонового задание возможно знаю разработчики, но с написанным кодом в 1С не думаю что это вообще как-то связано. Максимум это м.б. связано с ожиданием каким-либо от sql-сервера. Чтобы проверить что быдет с тяжелым запросом после отмены задания напишите тяжелый запрос с использованием декартового произведения чтобы подвесить сервер и посмотрите когда реально произойдет отмена.

Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший

Дневник провинциального программиста

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

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

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

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

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

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

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

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

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

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

Как остановить отчет в 1с

Дата публикации 06.12.2022

Использован релиз 3.0.125

В программе при формировании стандартных отчетов (карточка счета, оборотно-сальдовая ведомость и др.) можно включить или отключить проверку актуальности данных учета.

Если при включенной проверке какие-либо документы были проведены после выполнения обработки «Закрытие месяца», то в сформированном отчете отображается строка «Данные учета неактуальны». По кнопке «Актуализировать» автоматически будут перепроведены все документы с указанной даты и выполнены регламентные операции обработки «Закрытие месяца» за каждый месяц периода (рис. 1). После этого отчет нужно сформировать повторно.

Проверка актуальности данных учета включается (отключается) в разделе «Администрирование»:

  • Раздел: АдминистрированиеПроведение документов.
  • Если в блоке «Расчеты выполняются» переключатель установлен в положение «При проведении документов», то при снятом флажке «Проверять проведение документов при формировании отчетов» автоматическая проверка и восстановление последовательности проведения документов и регламентных операций при формировании отчетов будет отключена.
  • Если в блоке «Расчеты выполняются» переключатель установлен в положение «При закрытии месяца», то флажок «Проверять проведение документов при формировании отчетов» недоступен для редактирования. В этом случае проверка актуальности данных проводится всегда.

Смотрите также

Подпишитесь на новости

Не пропускайте последние новости — подпишитесь
на бесплатную рассылку сайта:

  • десятки экспертов ежедневно мониторят изменения законодательства и судебную практику;
  • рассылка бесплатная, независимо от наличия договора 1С:ИТС;
  • ваш e-mail не передается третьим лицам;

Прервать формирование отчёта в 1С:БП 8.3

Был задан такой вопрос в 1С: почему нет возможности прервать исполнение ошибочно запущенного отчёта? Приходится аварийно завершать сеанс работы с приложением.
Это СЪЕДАЕТ РАБОЧЕЕ ВРЕМЯ ПОЛЬЗОВАТЕЛЕЙ ПРОГРАММЫ.
1С:БП8.3(8.3.5.1383) ред.3.0(3.0.38.51)

Вчера получен ответ от разработчиков:

«Формирование отчета происходит на сервере, а прерывание доступно только на клиенте

В серверном режиме работы формирование отчетов не блокирует интерфейс, и если отчет запущен ошибочно, то его можно просто закрыть или изменить его настройки и запустить формирование заново, не дожидаясь пока он сформируется»

Добавить комментарий

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