helpf.pro
Регистрация
 +2 
Распечатать

Индикатор выполнения

Код 1C v 8.х
 // Индикатор выполнения обработки результата запроса
Выборка = РезультатЗапроса.Выбрать();
Индикатор = ЭлементыФормы.ИндикаторПеребора;
Индикатор.МаксимальноеЗначение = Выборка.Количество();
Индикатор.Значение = 0;
Пока Выборка.Следующий() Цикл
Индикатор.Значение = Индикатор.Значение + 1;
КонецЦикла;

Код 1C v 8.х
 // Индикатор выполнения вывода результата запроса с расширенной настройкой
Выборка = РезультатЗапроса.Выбрать();
Индикатор = ЭлементыФормы.ИндикаторПеребора;
Индикатор.МаксимальноеЗначение = Выборка.Количество();
Индикатор.Значение = 0;
Индикатор.ОтображатьПроценты = Истина;
Индикатор.СтильОтображения = РежимСглаживанияИндикатора.Прерывистый;
Индикатор.Ориентация = Ориентация.Вертикально;
Индикатор.Шаг = 0.1;
Пока Выборка.Следующий() Цикл
Индикатор.Значение = Индикатор.Значение + 1;
КонецЦикла;



Индикатор в строке состояния с помощью СКД
Иногда хочется видеть подобие индикатора, но в строке состояния. Это можно сделать только с помощью СКД, и то есть небольшой минус: невозможно убрать или изменить надпись «Вывод отчета». Сделать это можно примерно следующим образом:
Код 1C v 8.х
 ПроцессорКомпоновки = Новый ПроцессорВыводаРезультатаКомпоновкиДанных
ВТабличныйДокумент;
ПроцессорКомпоновки.ОтображатьПроцентВывода = Истина ;
ЭлементКомпоновки = Новый ЭлементРезультатаКомпоновкиДанных;

ПроцессорКомпоновки.НачатьВывод();
//Считаем проценты по своему алгоритму, для примера:
Для Сч = 1 По 100 Цикл
ЭлементКомпоновки.ПроцентВывода = Сч;
ПроцессорКомпоновки.ВывестиЭлемент(ЭлементКомпоновки);
КонецЦикла;
ПроцессорКомпоновки.ЗакончитьВывод();



Для 1С 7.7 посмотрите v7: Прогресс бар в строке состояния
Разместил:   Версии: | 7.x | 8.x | 8.2 УП |  Дата:   Прочитано: 74948
 +2 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 0
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через...
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже...
Excel файл как Внешний источник данных 6
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . ...
ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать...
Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура...
Посмотреть все результаты поиска похожих
Комментарии
all4cf
27.11.2017 17:52Комментарий: 1
all4cf

Пример для 8.3 на клиенте:

Код 1C v 8.3
 Всего=Результат.clients.Количество();
Если Всего>0 Тогда
ШагИндикатора = 100/Результат.clients.Количество();
Индикатор = ШагИндикатора;
для Каждого стр из Результат.clients Цикл
новСтрок=КонтрагнетыТЧ.Добавить();
ЗаполнитьЗначенияСвойств(новСтрок,стр);
новСтрок.inn=Формат(стр.inn,"ЧГ=0");

Состояние("Выполняется загрузка контрагентов...", Индикатор,,БиблиотекаКартинок.ДлительнаяОперация48);  
новСтрок.КонтрагнетВБазе=ПолучитьКонтрагнетовНаСервере(новСтрок.inn,новСтрок.inn);
Индикатор = Индикатор + ШагИндикатора;
КонецЦикла;
Иначе
ПоказатьОповещениеПользователя("Получение контрагнетов из CRM", ,"НЕТ данных за период",БиблиотекаКартинок.ВажностьНовостиВажная);
КонецЕсли;

Серверный вариант:

Код 1C v 8.3
 &НаСервере
Функция ИнициализацияОбработкиСервер()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Спр.Ссылка
    |ИЗ
    |   Справочник.Банки КАК Спр";

    Данные      = Запрос.Выполнить().Выгрузить();
    АдресДанных = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
    // Обработка
    // В справочнике ~ 4000 элементов
    Возврат Данные.Количество();
КонецФункции

&НаСервереБезКонтекста
Функция ОбработатьЭлемент(ДанныеЭлемента)
    СпрОбъект = ДанныеЭлемента.Ссылка.ПолучитьОбъект();
    // Обработка
    СпрОбъект.ОбменДанными.Загрузка = Истина;
  СпрОбъект.Записать();
КонецФункции

&НаСервереБезКонтекста
Функция ОбработатьПорциюНаСервере(Начало, Конец, АдресДанных)
    Данные = ПолучитьИзВременногоХранилища(АдресДанных);
    Для Счетчик = Начало - 1 По Конец - 1 Цикл
        ОбработатьЭлемент(Данные[Счетчик]);
    КонецЦикла;
КонецФункции

&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
    Количество      = ИнициализацияОбработкиСервер();
    РазмерШага      = 10;
    КоличествоШагов = Цел(Количество / РазмерШага);
    КоличествоЦел   = КоличествоШагов * РазмерШага;

    Если КоличествоЦел < Количество Тогда
        Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов + 1;
    Иначе
        Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов;
    КонецЕсли;

    Для Счетчик = 1 По КоличествоШагов Цикл
      ОбработатьПорциюНаСервере(РазмерШага * (Счетчик - 1) + 1, РазмерШага * Счетчик, АдресДанных);
        Индикатор = Счетчик;
        ОбработкаПрерыванияПользователя();
        ОбновитьОтображениеДанных();
  КонецЦикла;
  Если КоличествоЦел < Количество Тогда
        ОбработатьПорциюНаСервере(КоличествоШагов * РазмерШага + 1, Количество, АдресДанных);
        Индикатор = Индикатор + 1;
    КонецЕсли;
КонецПроцедуры
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.