Версия для печати темы (https://pro1c.org.ua/index.php?s=d7627b7d0d5c403f25dc405e46062d79&showtopic=64638)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Пауза на форме

Автор: Nikitaje 12.02.21, 14:30

Всем привет друзья. Конфа самописная. Управляемые формы 8.3
Выполняется фоновое задание, процесс идет польователь работает. при ходи выполнение пишуться документы.
Пользователь увидел ошибку, и хочет приостановить задание сделать ручные дейтвия и возобновить с момента остановки.
Скажите пожалуйста это возможно вообще?

Автор: sava1 12.02.21, 14:37

прервать - да, возобновить - геморно (зависит от задания). Надо сохранить все параметры и запускать задание с другими параметрами

Автор: Nikitaje 12.02.21, 15:05

sava1 @ Сегодня, 14:37 * ,
Идет перебор XML, на основании их пишеться документ.
Я хочу добавить кнопку "Пауза"
Паузу поставил кое что сделал. Продолжил. Идет дальше перебор

Вот только что пришла в голову идея.

Добавляем кнопку пауза.

В цикле когда все пишеться добавляем условие, проверяет нажатие нопки пауза, при нажатии кнопки пауза флаг ставиться истина его и проверяем.
еще цикл - ресурсозатрадо но для развития мысли пойдет.
это бессконечный цикл который проверфяет стоит флаг истина или нет. Но тогда форма замерзнет.
Делать еще фоновое задание с бессконечным циклом. А есловия выхода ну, придумать осталось


Nikitaje @ Сегодня, 14:41 * ,

Придумал. Поправте если не так.
Создаем реквизит формы булево
Создаем кнопку на форме пауза.
Кнопка нажата истина нажата повторно ложь

Фоновое задание началось.
Длительный цикл

Начало

код

условие если кнопка нажата
бессконечный цикл
начало
условие проверки этого реквизита если ложь тогда заканчиваем цикл идем дальше по коду.

Конец

код

конец


Как считаете, нормально или можно сднлать по лучше?

Автор: logist 12.02.21, 16:18

Цитата(Nikitaje @ 12.02.21, 14:30) *
Выполняется фоновое задание

с фоновым заданием не сделаете, потому что пока пользователь нажмет на кнопку фоновое задание уже далеко уедет, и по сути ФЗ будет выглядеть как обычный цикл, потому что каждый раз будет вынуждено проверять "нажатие", вообще не пойму зачем вы уперлись в ФЗ. Фоновое задание это то, что должно выполнится в фоне, без действий пользователя.
Это можно сделать без фонового задания - каждый документ обрабатывается отдельно в цикле, цикл начинается с проверки флага остановки по ошибке, именно флага который будет установлен до запуска. Ждать нажатие пользователя который визуально видит происходящее это глупость.
Сделайте простой цикл с кнопкой, и попробуйте нажать при выполнении - вы не сможете этого сделать, разве что у вас жутко медленный комп и меганагруженная обработка.

Автор: Nikitaje 12.02.21, 16:45

logist @ Сегодня, 16:18 * ,
Хорошо отошли от фонового задания.
Внешняя обработка, выполняет какой то код. Пошли писать документы.
На десятом документе пользователь хочет нажать паузу и сделать другие документы.
Но форма уже замерзла, Я не могу в ней нажимать

Или это задача не решается?

Задача,
есть обработка она выполняет код. Пишет документы из xml.
Пока пишет все вкладки встали, пришел клиент говорит Мне надо что то там сделать. Вкладки уже все в заморозке сделать ничего нельзя, можно вызвать прирывания пользователя, но нужно начать с того места где Мы остановились

Nikitaje @ Сегодня, 16:37 * ,
https://pro1c.org.ua/redirect.php?https://dropmefiles.com/Osiyc

Автор: logist 12.02.21, 17:01

Цитата(Nikitaje @ 12.02.21, 16:45) *
На десятом документе пользователь хочет нажать паузу и сделать другие документы.

Зачем он хочет нажать паузу? У вас проблема видимо не в 1С, а в неправильно организации работы

Автор: Nikitaje 12.02.21, 23:12

logist @ Сегодня, 17:01 * ,
Пользователю нужен контроль при выполнении.
Есть ли варианты вообще как можно поставить на паузу или нет?
Я пока такого не встречал, вот и хотелось понять и уточнить

Автор: logist 13.02.21, 0:04

Цитата(Nikitaje @ 12.02.21, 23:12) *
Пользователю нужен контроль при выполнении.

Контроль чего? Заложите условия проверки в код, флажок "Останавливаться по ошибке", цикл, по ошибке останавливается, далее кнопка продолжить. Предварительно загружаете файл в таблицу, чтобы понимать какие строки уже обработались.
Если пользователь хочет в процессе что-то визуально контролировать, то это утопия, для таких случаев создают визуальную таблицу куда всё грузят, пользователь просматривает и потом выполняется загрузка данных.

Автор: Nikitaje 13.02.21, 5:06

Цитата(logist @ 13.02.21, 0:04) *
Контроль чего? Заложите условия проверки в код, флажок "Останавливаться по ошибке", цикл, по ошибке останавливается, далее кнопка продолжить. Предварительно загружаете файл в таблицу, чтобы понимать какие строки уже обработались.
Если пользователь хочет в процессе что-то визуально контролировать, то это утопия, для таких случаев создают визуальную таблицу куда всё грузят, пользователь просматривает и потом выполняется загрузка данных.

Что делать в случае, что документов много и они грузяться замораживая. Форма замерзла а нужно выполнить какие то работы?
Как быть в этом случае.
Операция длиться 15 минут, после 5 минут выполнения к пользователю пришли сказали нужно кое что сделать.
А операция как необратимая термоядерная реакция уже идет.
Я бы хотел внедрить что нибудь, что могло приостановить выполнение.
Ну как на C#. При копировании можно поставить паузу, и код запуститься с того момета где Я поставил паузу

Автор: logist 13.02.21, 5:34

У вас в топике написано - "пользователь увидел какую-то ошибку", теперь выясняется что надо делать что-то другое в базе, через пару дней узнаем еще какие-то подробности, которые в корне меняют суть проблему? smile.gif

Цитата(Nikitaje @ 13.02.21, 5:06) *
а нужно выполнить какие то работы?

открыть второй сеанс 1с.

Цитата(Nikitaje @ 13.02.21, 5:06) *
Я бы хотел внедрить что нибудь, что могло приостановить выполнение.

Зачем? У вас же задача чтобы пользователь мог выполнять что-то еще, или таки не эта задача?
В общем не понятно, чего вы вцепились в эту паузу, фоновое задание выполняется в фоне и не блокирует интерфейс, посмотрите как сделаны типовые отчеты в актуальных конфигурациях, там можно запустить отчет и заниматься другими задачами в этом же сеансе.


Автор: Nikitaje 13.02.21, 10:19

Цитата(logist @ 13.02.21, 5:34) *
У вас в топике написано - "пользователь увидел какую-то ошибку", теперь выясняется что надо делать что-то другое в базе, через пару дней узнаем еще какие-то подробности, которые в корне меняют суть проблему?

Да Я пидумываю действия. Пользователю нужна кнопка пауза.
Варианты действий зачем разные, заполнить что другое, выпустить отчет да что угодно.

Я правильно вас понимаю, сделать эту обработку как фоновую и не думать вообще об кнопках паузы?

Автор: logist 13.02.21, 12:03

Цитата(Nikitaje @ 13.02.21, 10:19) *
Я правильно вас понимаю

да, с вероятностью 99,9%

Автор: fly 13.02.21, 12:33

Nikitaje @ Сегодня, 10:19 * ,

Цитата(Nikitaje @ 13.02.21, 10:19) *
Варианты действий зачем разные, заполнить что другое, выпустить отчет да что угодно.



- ну так и действия тогда разные в таком случае:
"заполнить что другое" - пользователь открывает что "заполнено" - это что = в 1С это существует Обект (Документ, Справочник) и его пользовательская Форма (которая позволяет менять непосредственно объект).
Когда не описано а) источник данных, б) процедура получения данных из источника, в) результат получения данных из источника, г) следующий этап обработка полученных данных по описанным правилам, д) результат обработанных данных, е) потом куда должен записаться этот результат и с какими условиями и т.д. - на ваш вопрос будет Много разных ответов, которые либо ни о чем, либо о чем угодно, но только не ваш случай.

"выпустить отчет" - тут как бы странно звучит, так как отчет "выпускается" = берет данные из БД и отображает на форме или в Табличный документ, или Таблицу и т.п.. Он служит для отображения данных в БД в удобном виде для анализа - своя классификация, группирока и т.п. Смысла его не выпускать как бы нет - ты или формируешь отчет или нет, и принимается решение до момента "выпустить".



Цитата(Nikitaje @ 13.02.21, 10:19) *
Я правильно вас понимаю, сделать эту обработку как фоновую и не думать вообще об кнопках паузы?

Да можно и в фоновое задание, и если очень захотеть и прерывать, только ответ "Да думайте" - "Нет не думайте", зависит от задачи, а сама задача ну явно не расскрыта - что приводит к правильностилюбого из выбранных вариантов.

Цитата(Nikitaje @ 12.02.21, 14:30) *
Пользователь увидел ошибку, и хочет приостановить задание сделать ручные дейтвия и возобновить с момента остановки.

нужно ли делать (тема "Пауза на форме") - Кто работает с данными, а в 1С - это много обычно данных, приходят чаще к выводу - после заполнения данных - к примеру на форму в таблицу, откорректировать на этой форме эти полученные данные и потом записать в базу.

Автор: Nikitaje 15.02.21, 11:44

Цитата(fly @ 13.02.21, 12:33) *
"выпустить отчет" - тут как бы странно звучит, так как отчет "выпускается" = берет данные из БД и отображает на форме или в Табличный документ, или Таблицу и т.п.. Он служит для отображения данных в БД в удобном виде для анализа - своя классификация, группирока и т.п. Смысла его не выпускать как бы нет - ты или формируешь отчет или нет, и принимается решение до момента "выпустить".

Может быть неправильно выразился. Сформировать.
Цитата(fly @ 13.02.21, 12:33) *
ама задача ну явно не расскрыта - что приводит к правильностилюбого из выбранных вариантов.


Есть обработка, она считывается xml файлы, создает на основе этого докуметы записывается проводит.
Иногда это затягивается и выполняется долго, и нужна другая работа. Формировать отчеты, списывать что нибудь.
Пользователь попросил "Сделать паузу", создать кнопку по ней нажал все остановилось. Поработал, включил дальше

Автор: 29a 15.02.21, 15:06

Цитата(Nikitaje @ 13.02.21, 10:19) *
Я правильно вас понимаю, сделать эту обработку как фоновую и не думать вообще об кнопках паузы?

ИМХО учитывая, что:
Цитата(Nikitaje @ 15.02.21, 11:44) *
Есть обработка, она считывается xml файлы, создает на основе этого докуметы записывается проводит.

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

Если обработка будет мешать работать пользователям (не зависимо от того, в фоне она работает или на клиенте), самое простое, добавить флаг на приостановку работы.
Вариант 1 - флаг проверяется в вечном цикле, как было написано ранее
Вариант 2 - при установке флага, закончить формирование текущего документа, запомнить номер обрабатываемой строки, прервать выполнение, при повторном старте, начать загрузку с номера строки на которой прервали работу.


Автор: logist 15.02.21, 15:58

Цитата(Nikitaje @ 15.02.21, 11:44) *
Пользователь попросил "Сделать паузу", создать кнопку по ней нажал все остановилось. Поработал, включил дальше

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

Автор: fly 17.02.21, 15:15

Цитата(Nikitaje @ 15.02.21, 11:44) *
Пользователь попросил "Сделать паузу", создать кнопку по ней нажал все остановилось. Поработал, включил дальше


можно сделать и паузу - только сущность в том, что паузу нужно сделать на чем то,
а это "что-то" вами не описано.
Интерпретация - "есть обработка" которая получается данные из XML и записывает Объекты в базу, ну никак не описание (там между Файл на рабочей станции в формате XML ------> Данные в базе - есть еще куча всего насанного в этой обработке и платформе).


Автор: Nikitaje 20.02.21, 2:28

Цитата(fly @ 17.02.21, 15:15) *
можно сделать и паузу - только сущность в том, что паузу нужно сделать на чем то,

Паузу в форме нашей обработки.
ЧТобы было понятнее.
ЗАпустили обработку.
ЗАгрузка пошла, дальше вот хочется паузу сделать. Приостановить действия обработки. Действия пользователя Мне кажется не нуждаются в дополнении.
Пользователь захотел сделать паузу, хочет чтобы форма разблокировалась, он мог делать любые действия какие хочет. ФОрмировать отчеты, заполнять номенклатуру.
Паузу требуется сделать, чтобы форма разморозилась для выполнения других действий на платформе. Каких? Да разных. Это суть задачи не меняет никак

Автор: logist 20.02.21, 3:43

Цитата(Nikitaje @ 20.02.21, 2:28) *
чтобы форма разморозилась для выполнения других действий на платформе

Выполнение в фоновом задании не "замораживает" форму.

p.s. Вы если не читаете или не воспринимаете, что вам пишут - сообщите как-то об этом, чтобы люди зря не напрягались.

Автор: fly 20.02.21, 9:37

Nikitaje @ Сегодня, 2:28 * ,

Цитата(Nikitaje @ 20.02.21, 2:28) *
Паузу в форме нашей обработки.
ЧТобы было понятнее.


Если вопрос в этом - добавьте кнопку "Пауза".

Автор: Nikitaje 22.02.21, 11:40

Цитата(logist @ 20.02.21, 3:43) *
p.s. Вы если не читаете или не воспринимаете, что вам пишут - сообщите как-то об этом, чтобы люди зря не напрягались.

Я просто не могу понять что не понятно.
Давайте по порядку.
форма при выполнении блокирует выполнение вообще каких либо операций. Все встало.
Пользователь говорит, надо сделать кнопку пауза. Чтобы можно было дальше работать.
Это возможо сделать?
И как лучше, придумывать что то с паузой или проще сделать все фоновым заданием

Автор: sava1 22.02.21, 11:48

Обычная обработка с кнопкой "выполнить ".
Файл читайте в цикле по объектно - через ХДТО. - запоминайте прочитанные объекты
в цикле - ОбработкаПрерыванияПользователя - если отработало - прекратили чтение.
при повторном нажатии "Выполнить" - читаете ХМЛ, если загружали - пропускаете.
и так ДО УПОРА


Автор: logist 22.02.21, 14:43

Цитата(Nikitaje @ 22.02.21, 11:40) *
Я просто не могу понять что не понятно.

Та всё понятно. Просто задача из разряда: - а давайте пришьем собачке 5-ю лапку, она сказала что так хочет, - она так и сказала?, - да, так и сказала.
Всё что можно сделать уже описали в теме. Но по сути это утопичная задача, вы хотите сделать то, что на самом деле не нужно.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua