Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Окошко с прогресс бар-ом , 1С:Предприятие 8.2 (8.2.11.236) самописная конфигурация          
Fabri Подменю пользователя
сообщение 31.08.12, 12:50
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

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

К примеру, есть цикл:

Для А=0 По 50 Цикл
Сообщить(А);
КонецЦикла;


Вместо Сообщить, необходимо б чтобы выводилось окно с прогресс бар-ом или с надписью, пододжиде, выполняется операция № А.

Думал создать общую форму, и её вызывать, так в 8.2 не вижу где добавить элемент прогресс бар на форму. Заранее спасибо.

pablo Подменю пользователя
сообщение 31.08.12, 12:59
Сообщение #2

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Прогрессбар - это обычный числовой реквизит, вынесенный на форму, у элемента управления которого Вид = Поле индикатора (в редакторе свойств)

+ еще можно посмотреть типовую общую форму ХодВыполненияОбработкиДанных


Signature
Правильно поставленный вопрос содержит до 90% ответа.

ignsv Подменю пользователя
сообщение 31.08.12, 13:00
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

пример через общую форму
мФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
мФормаИндикатора.ВладелецФормы = ЭтаФорма;
Если мФормаИндикатора.Открыта() Тогда
Возврат;
КонецЕсли;
    
мФормаИндикатора.Открыть();

мФормаИндикатора.КомментарийОбработкиДанных = "Разбивка значения на отдельные слова";
мФормаИндикатора.МаксимальноеЗначение = ТаблицаСправочника.Количество();        

Для Каждого СтрокаСсылки ИЗ ТаблицаСправочника Цикл
        
мФормаИндикатора.Значение = ТаблицаСправочника.Индекс(СтрокаСсылки)+1;

Конеццикла;

мФормаИндикатора.Закрыть();

logist Подменю пользователя
сообщение 31.08.12, 13:02
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(pablo @ 31.08.12, 13:59) *
Прогрессбар - это обычный числовой реквизит

В управляемых формах есть такая штука:

Цитата
Состояние (Status)
Синтаксис:

Состояние(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Параметры:

<ТекстСообщения> (необязательный)

Тип: Строка.
Строка, предназначенная для вывода в панель состояния. Если параметр не указан, возобновляется вывод системного текста в панель состояния.
<Прогресс> (необязательный)

Тип: Число.
Значение индикатора прогресса (от 1 до 100).
Если не задан, индикатор прогресса не отображается.
<Пояснение> (необязательный)

Тип: Строка.
Текст пояснения.
<Картинка> (необязательный)

Тип: Картинка.
Картинка.
Описание:

Выводит текст в панель состояния.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Fabri, Powerman,

pablo Подменю пользователя
сообщение 31.08.12, 13:05
Сообщение #5

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

logist Ваш прогрессбар будет в строке состояния внизу формы (если не ошибаюсь), а мой - в (почти) произвольном месте формы wink.gif


Signature
Правильно поставленный вопрос содержит до 90% ответа.

logist Подменю пользователя
сообщение 31.08.12, 13:22
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(pablo @ 31.08.12, 14:05) *
будет в строке состояния внизу формы (если не ошибаюсь)

Ошибаетесь, он будет в нижнем правом углу экрана не зависимо от окон форм и главного окна приложения smile.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 31.08.12, 13:27
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Общая форма из типовых, боюсь, в самописной конфе на управляемых формах не даст нужного эффекта smile.gif

Fabri Подменю пользователя
сообщение 31.08.12, 14:53
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

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

pablo Подменю пользователя
сообщение 31.08.12, 15:18
Сообщение #9

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

А чего там писать? Передавать в прогресс Окр(100*ТекущееЗначение/МаксимальноеЗначение)


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: Fabri,

pumbaE Подменю пользователя
сообщение 31.08.12, 15:23
Сообщение #10

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 113
Из: Запоріжжя
Спасибо сказали: 63 раз
Рейтинг: 0

Цитата(pablo @ 31.08.12, 16:18) *
А чего там писать? Передавать в прогресс Окр(100*ТекущееЗначение/МаксимальноеЗначение)

И главное не забыть все 10000 операций гонять с сервера на клиент форму.

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


Signature
Эт я почему раньше злой был? Потому, что у меня снегопата не было!

logist Подменю пользователя
сообщение 31.08.12, 15:29
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Может кому пригодится, приведу пример как это реализовано у меня (используется для загрузки больших файлов):
В модуле формы:
        Индикатор = РаботаСЭлектроннымиДокументамиКлиент.ПолучитьИндикаторПроцессаЗагрузки(НомерПервойСтрокиФайла,НомерПоследнейСтрокиФайла,Порция);
        Пока Индикатор.КонСтрока < НомерПоследнейСтрокиФайла Цикл
            РаботаСЭлектроннымиДокументамиКлиент.ПоказатьСостояниеЗаугркзи(Индикатор);
            ПрочитатьПорциюИзФайла(Индикатор.НачСтрока, Индикатор.КонСтрока);
        КонецЦикла;


Общий модуль:
Функция ПолучитьИндикаторПроцессаЗагрузки(НомерПервойСтроки, НомерПоследнейСтроки, Порция, ВыводитьВремя = Истина) Экспорт

    КоличествоЦиклов = ?((НомерПоследнейСтроки-НомерПервойСтроки-1) <= Порция,1,Цел((НомерПоследнейСтроки-НомерПервойСтроки-1)/Порция)+1);
    
    Индикатор = Новый Структура;
    Индикатор.Вставить("ВыводитьВремя", ВыводитьВремя);
    Индикатор.Вставить("РазрешитьПрерывание", Истина);
    Индикатор.Вставить("ДатаНачала", ТекущаяДата());
    Индикатор.Вставить("НачальнаяСтрока", НомерПервойСтроки);
    Индикатор.Вставить("ПоследняяСтрока", НомерПоследнейСтроки);
    Индикатор.Вставить("Порция", Порция);
    Индикатор.Вставить("КоличествоЦиклов", КоличествоЦиклов);

    Индикатор.Вставить("НачСтрока", НомерПервойСтроки);
    Индикатор.Вставить("КонСтрока", НомерПервойСтроки);
    Индикатор.Вставить("Счетчик", 0);
    Возврат Индикатор;

КонецФункции

Процедура ПоказатьСостояниеЗаугркзи(Индикатор) Экспорт
    
    Индикатор.НачСтрока = ?(Индикатор.Счетчик = 0,Индикатор.НачСтрока,Индикатор.КонСтрока+1);
    Индикатор.КонСтрока = ?((Индикатор.НачСтрока + (Индикатор.Порция-1)) < Индикатор.ПоследняяСтрока,Индикатор.НачСтрока + (Индикатор.Порция-1),Индикатор.ПоследняяСтрока);
    
    Если Индикатор.РазрешитьПрерывание Тогда
        ОбработкаПрерыванияПользователя();
    КонецЕсли;
    
    Индикатор.Счетчик = Индикатор.Счетчик + 1;
    
    Если Индикатор.ВыводитьВремя Тогда
        ТекущаяДата = ТекущаяДата();
        ПрошлоВремени = ТекущаяДата - Индикатор.ДатаНачала;
        Осталось = ПрошлоВремени * (Индикатор.КоличествоЦиклов / Индикатор.Счетчик - 1);
        Часов = Цел(Осталось / 3600);
        Осталось = Осталось - (Часов * 3600);
        Минут = Цел(Осталось / 60);
        Секунд = Цел(Цел(Осталось - (Минут * 60)));
        ОсталосьВремени = Формат(Часов, "ЧЦ=2; ЧН=00; ЧВН=") + ":"
        + Формат(Минут, "ЧЦ=2; ЧН=00; ЧВН=") + ":"
        + Формат(Секунд, "ЧЦ=2; ЧН=00; ЧВН=");
        Если Индикатор.КоличествоЦиклов = 1 Тогда
            ТекстОсталось = "Осталось: Немного";
        ИначеЕсли Индикатор.Счетчик <= 1 Тогда
            ТекстОсталось = "Осталось: Неизвестно";
        Иначе
            ТекстОсталось = "Осталось: ~" + ОсталосьВремени;
        КонецЕсли;
    Иначе
        ТекстОсталось = "";
    КонецЕсли;
    
    Если Индикатор.Счетчик > Индикатор.КоличествоЦиклов Тогда
        Состояние("Выполнено",100,"Загрузка окончена. Подождите немного.");
    Иначе
        Состояние("Выполняется загрузка из файла...    "+ТекстОсталось,Цел(Индикатор.Счетчик / Индикатор.КоличествоЦиклов * 100),"Обрабатываются строки с "+Индикатор.НачСтрока+" по "+Индикатор.КонСтрока+", из "+Индикатор.ПоследняяСтрока);
    КонецЕсли;

КонецПроцедуры


Signature
Личные бесплатные консультации не даю, для этого есть форум!

pumbaE Подменю пользователя
сообщение 31.08.12, 15:45
Сообщение #12

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 113
Из: Запоріжжя
Спасибо сказали: 63 раз
Рейтинг: 0

Прошу прощения за язвительный тон, не прочитал предисторию "Окр(100*ТекущееЗначение/МаксимальноеЗначение)" 05071.gif


Signature
Эт я почему раньше злой был? Потому, что у меня снегопата не было!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 8:47
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!