Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пауза на форме
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Nikitaje
Всем привет друзья. Конфа самописная. Управляемые формы 8.3
Выполняется фоновое задание, процесс идет польователь работает. при ходи выполнение пишуться документы.
Пользователь увидел ошибку, и хочет приостановить задание сделать ручные дейтвия и возобновить с момента остановки.
Скажите пожалуйста это возможно вообще?
sava1
прервать - да, возобновить - геморно (зависит от задания). Надо сохранить все параметры и запускать задание с другими параметрами
Nikitaje
sava1 @ Сегодня, 14:37 необходимо зарегистрироваться для просмотра ссылки ,
Идет перебор XML, на основании их пишеться документ.
Я хочу добавить кнопку "Пауза"
Паузу поставил кое что сделал. Продолжил. Идет дальше перебор

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

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

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


Nikitaje @ Сегодня, 14:41 необходимо зарегистрироваться для просмотра ссылки ,

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

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

Начало

код

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

Конец

код

конец


Как считаете, нормально или можно сднлать по лучше?
logist
Цитата(Nikitaje @ 12.02.21, 14:30) необходимо зарегистрироваться для просмотра ссылки
Выполняется фоновое задание

с фоновым заданием не сделаете, потому что пока пользователь нажмет на кнопку фоновое задание уже далеко уедет, и по сути ФЗ будет выглядеть как обычный цикл, потому что каждый раз будет вынуждено проверять "нажатие", вообще не пойму зачем вы уперлись в ФЗ. Фоновое задание это то, что должно выполнится в фоне, без действий пользователя.
Это можно сделать без фонового задания - каждый документ обрабатывается отдельно в цикле, цикл начинается с проверки флага остановки по ошибке, именно флага который будет установлен до запуска. Ждать нажатие пользователя который визуально видит происходящее это глупость.
Сделайте простой цикл с кнопкой, и попробуйте нажать при выполнении - вы не сможете этого сделать, разве что у вас жутко медленный комп и меганагруженная обработка.
Nikitaje
logist @ Сегодня, 16:18 необходимо зарегистрироваться для просмотра ссылки ,
Хорошо отошли от фонового задания.
Внешняя обработка, выполняет какой то код. Пошли писать документы.
На десятом документе пользователь хочет нажать паузу и сделать другие документы.
Но форма уже замерзла, Я не могу в ней нажимать

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

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

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

Зачем он хочет нажать паузу? У вас проблема видимо не в 1С, а в неправильно организации работы
Nikitaje
logist @ Сегодня, 17:01 необходимо зарегистрироваться для просмотра ссылки ,
Пользователю нужен контроль при выполнении.
Есть ли варианты вообще как можно поставить на паузу или нет?
Я пока такого не встречал, вот и хотелось понять и уточнить
logist
Цитата(Nikitaje @ 12.02.21, 23:12) необходимо зарегистрироваться для просмотра ссылки
Пользователю нужен контроль при выполнении.

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

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

Цитата(Nikitaje @ 13.02.21, 5:06) необходимо зарегистрироваться для просмотра ссылки
а нужно выполнить какие то работы?

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

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

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

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

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

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

да, с вероятностью 99,9%
fly
Nikitaje @ Сегодня, 10:19 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(Nikitaje @ 13.02.21, 10:19) необходимо зарегистрироваться для просмотра ссылки
Варианты действий зачем разные, заполнить что другое, выпустить отчет да что угодно.



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

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



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

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

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

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

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


Есть обработка, она считывается xml файлы, создает на основе этого докуметы записывается проводит.
Иногда это затягивается и выполняется долго, и нужна другая работа. Формировать отчеты, списывать что нибудь.
Пользователь попросил "Сделать паузу", создать кнопку по ней нажал все остановилось. Поработал, включил дальше
29a
Цитата(Nikitaje @ 13.02.21, 10:19) необходимо зарегистрироваться для просмотра ссылки
Я правильно вас понимаю, сделать эту обработку как фоновую и не думать вообще об кнопках паузы?

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

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

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

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

Ваша проблема в том, что вы не вникаете в суть того что на самом деле нужно пользователю, а делаете прямо то что сказано. Это чревато частыми переработками в будущем, ну и собственно тратой времени на попытку реализации того что тут обсуждается.
fly
Цитата(Nikitaje @ 15.02.21, 11:44) необходимо зарегистрироваться для просмотра ссылки
Пользователь попросил "Сделать паузу", создать кнопку по ней нажал все остановилось. Поработал, включил дальше


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

Nikitaje
Цитата(fly @ 17.02.21, 15:15) необходимо зарегистрироваться для просмотра ссылки
можно сделать и паузу - только сущность в том, что паузу нужно сделать на чем то,

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

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

p.s. Вы если не читаете или не воспринимаете, что вам пишут - сообщите как-то об этом, чтобы люди зря не напрягались.
fly
Nikitaje @ Сегодня, 2:28 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(Nikitaje @ 20.02.21, 2:28) необходимо зарегистрироваться для просмотра ссылки
Паузу в форме нашей обработки.
ЧТобы было понятнее.


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

Я просто не могу понять что не понятно.
Давайте по порядку.
форма при выполнении блокирует выполнение вообще каких либо операций. Все встало.
Пользователь говорит, надо сделать кнопку пауза. Чтобы можно было дальше работать.
Это возможо сделать?
И как лучше, придумывать что то с паузой или проще сделать все фоновым заданием
sava1
Обычная обработка с кнопкой "выполнить ".
Файл читайте в цикле по объектно - через ХДТО. - запоминайте прочитанные объекты
в цикле - ОбработкаПрерыванияПользователя - если отработало - прекратили чтение.
при повторном нажатии "Выполнить" - читаете ХМЛ, если загружали - пропускаете.
и так ДО УПОРА

logist
Цитата(Nikitaje @ 22.02.21, 11:40) необходимо зарегистрироваться для просмотра ссылки
Я просто не могу понять что не понятно.

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