8.х Как в 1С 8.0 прервать работу отчета, не дожидаясь его окончания?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Coder1C, 5 дек 2007.

  1. TopicStarter Overlay
    Coder1C
    Offline

    Coder1C Слуга форума Команда форума Администратор

    Регистрация:
    10 фев 2006
    Сообщения:
    506
    Симпатии:
    31
    Баллы:
    54
    Вопрос:
    Как в 1С 8.0 прервать работу отчета, не дожидаясь его окончания?

    Ответ:

    Контрол+Бреак

    Нужно, чтобы в цикле вызывалась процедура ОбработкаПрерыванияПользователя()
  2. veraspb63
    Offline

    veraspb63

    Регистрация:
    18 мар 2008
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    :unsure:
    Котрол_брейк на срабатывает, точнее в некот.отчетах
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Во время выполнения запроса Контрол+Бреак не прокатит. А большинство отчетов написано на одном запросе...
  5. serger
    Offline

    serger

    Регистрация:
    4 сен 2008
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Проблема также часто бывает из-за зависания самой программы во время выполнения кода, т.е. код выполняется и 1с-ка работает, но какие-либо призывы невоспринимает. Не пробовал, но возможно можно вставить что-нибудь наподобии ожидания сколько-то милисекунд, хотя врядли поможет...это проблема самой программы.
  6. Sigi
    Offline

    Sigi

    Регистрация:
    18 июн 2008
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Как и было сказано большинство отчетов выполнены на одном запросе, а запрос прервать невозможно не как. По другому, как я понимаю, сделать было нельзя. Если в файловом режиме еще бы можно было это реализовать, то в клиент северном варианте запрос выполняется на SQL сервере и программа не может его прервать.
  7. 8sirius8
    Offline

    8sirius8

    Регистрация:
    18 июн 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Прервать работу отчета всегда можно просто об этом надо позоботится заранее. Там где код выполняется циклом без "тяжелых" запросов используем ОбработкаПрерыванияПользователя(), там где код собирается выполнять грамоздкий запрос используем фоновое задание в итоге сам отчет будет реагировать на действия пользователей и прервать его можно "без последствий"
  8. realAndrei
    Offline

    realAndrei

    Регистрация:
    21 июл 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    по фоновое задание поподробнее... как потом его результат планируется вернуть пользователю?
  9. TopManager
    Offline

    TopManager

    Регистрация:
    15 ноя 2006
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Действительно, интересно как реализовать такое фоновое задание. Никогда не видел такого хода. Пример в студию!
  10. TopManager
    Offline

    TopManager

    Регистрация:
    15 ноя 2006
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1

    Можно в файл сохранять например, а потом читать и показывать..;) Этакая асинхронная схема..
  11. Damian
    Offline

    Damian

    Регистрация:
    28 апр 2010
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Сохранить вызов запроса или результат запроса?
    Если сохранять вызов, а потом его выполнять - то какой смысл его (вызов) сохранять?
    Если сохранять результат - то на кой его сохранять в файл, он в оперативке лежит - быстренько его считать и освободить.
    И, кстати, действительно непонятно, что значит "Фоновое выполнение запроса". Как это реализовать?
    Для примера могу сказать, что у меня в одном запросе ожидается около 15 тысяч строк. Работать будет долго, собака :)
    Можно это фоном пустить?
  12. DamienB
    Offline

    DamienB Опытный в 1С

    Регистрация:
    25 ноя 2010
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    26
    Я пускаю фоном задание по автоматическому изменению стоимости остатка на складах при изменении курса валюты.
    Выглядит таким образом:

    Код:
    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(Параметр1);
    ...
    МассивПараметров.Добавить(ПараметрN);
    ФоновыеЗадания.Выполнить("ОбщМодуль.ВыполнитьФоновоеЗадание",МассивПараметров,,"Название задания");
    
    
    Создаётся отдельный сеанс на сервере предприятия для выполнения именно этого задания.
    В моём случае заданию возвращать нечего - оно создаёт документ, проводит его и всё.

    Если задание что-либо должно вернуть - создать какой-нибудь параметр сеанса для хранения результата и обработчиком ожидания проверять его.

    Ну, это что касается выполнения фоном.
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В 8.2 сделали возможность формировать СКД в фоне.

Поделиться этой страницей