Прогресс бар Как подключить прогресс бар к процедурам двум, чтобы видить статус выполнения этих процедур??
есть две процедуры и треться является кнопкой, которая выполняет по очереди те две, вот как реализовать это все? чтобы при нажатии третьей процедуры/кнопки я видел в процентах состояние. Код прогресс бара есть.
Процедура КнопкаВыполнитьНажатие()
ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Пр.ОтображатьПроцентВывода=Истина ;
Эл=Новый ЭлементРезультатаКомпоновкиДанных;
ПР.НачатьВывод();
Для А=1 По 100 Цикл
Эл.ПроцентВывода=А;
//задержка, чтобы разглядеть
Для Б=1 По 10000 Цикл КонецЦикла;
ПР.ВывестиЭлемент(Эл);
КонецЦикла;
ПР.ЗакончитьВывод();
КонецПроцедуры
я новичек, что тут куда написать нужно чтобы процесс бар выполнялся при выполнении процедур
Категория:
Внешние компоненты Вертикальная автофиксация для СКД В СКД очень не хватает возможности автофиксации строк. Обусловлено это невозможностью однозначно определить их количество в общем случае. Однако в большинстве случаев это можно сделать
Обращаю ваше внимание, что приведенная процедура работает не всегда корректно. Но в большинстве случаев она сделает свое дело.
Код 1C v 8.х // Выводит результат СКД с установкой вертикальной автофиксации.
// Параметры:
// Таб - ТабличныеДокумент, ПолеТабличногоДокумента - куда выводим отчет;
// ПроцессорКомпоновкиДанных - ПроцессорКомпоновкиДанных;
// ЭлементыРасшировки - ЭлементыРасшифровкиКомпоновкиДанных;
// МассивИгнорируемыхПолей - Массив, *Неопределено - массив имен игнорируемых полей;
// РазрешитьПрерывание - Булево, *Истина.
//
Процедура ЛксВывестиРезультатКомпоновкиСАвтофиксациейСтрок(Таб, ПроцессорКомпоновкиДанных, ЭлементыРасшировки,
Знач МассивИгнорируемыхПолей = Неопределено, РазрешитьПрерывание = Истина) Экспорт
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Таб);
ПроцессорВывода.НачатьВывод();
ФиксацияВыполнена = Ложь;
Если МассивИгнорируемыхПолей = Неопределено Тогда
МассивИгнорируемыхПолей = Новый Массив;
КонецЕсли;
Пока Истина Цикл
ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда
Прервать;
КонецЕсли;
// Автофиксация
Если Не ФиксацияВыполнена Тогда
Для Каждого ЗначениеПараметра Из ЭлементРезультатаКомпоновкиДанных.ЗначенияПараметров Цикл
Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ЗначенияПолейРасшифровки = ЭлементыРасшировки[ЗначениеПараметра.Значение].ПолучитьПоля();
Для Каждого ЗначениеПоляРасшифровки Из ЗначенияПолейРасшифровки Цикл
Если МассивИгнорируемыхПолей.Найти(ЗначениеПоляРасшифровки.Поле) = Неопределено Тогда
Таб.ФиксацияСверху = Таб.ВысотаТаблицы;
ФиксацияВыполнена = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ФиксацияВыполнена Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных);
Если РазрешитьПрерывание Тогда
ОбработкаПрерыванияПользователя();
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры // ЛксВывестиРезультатКомпоновкиСАвтофиксациейСтрок
tormozit Категория:
Схема Компоновки Данных Вывод картинки в строках отчета на СКД В этом примере показан метод вывода в строку отчета картинки, вид которой завист от значения другого поля.
Ради примера, в отчет выведем справоник «Банки» - реквизит «Ссылка» и картинку возле этого реквизита. Вид картинки зависит от значения реквизита «ЭтоГруппа»
Создаем новый
отчет - Основная схема компоновки данных:
В
Вычисляемые поля добавлено поле «ПолеКартинка». В выражение добавлено значение «%Картинка%», поэтому выражению будем искать область ячеек куда необходимо вставить нашу картинку:
В это поле будет выводится картинка.
В настройках указываем:
В модуле объекта пишем код:
Код 1C v 8.х Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДокументРезультат.Очистить();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
//ПроцессорВывода.Вывести(ДокументРезультат);
ПолеПоКоторомуНеобходимоПолучитьЗначение = "Ссылка";
ПроцессорВывода.НачатьВывод();
Пока истина Цикл
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата = Неопределено Тогда
прервать;
КонецЕсли;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
ЗначениеВыводимыхДанных = Неопределено;
Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл
Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля();
Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл
Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда
Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
Индекс = ДокументРезультат.Рисунки.Индекс(Рис);
Если ЗначениеВыводимыхДанных.ЭтоГруппа Тогда
ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.ГруппаИЭлемент;
Иначе
ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.Сформировать;
КонецЕсли;
ВысотаТабДок = ДокументРезультат.ВысотаТаблицы;
ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%");
Если ОбластьДляКартинки <> Неопределено Тогда
ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки);
ОбластьДляКартинки.Текст = "%КартинкаДобавлена%"
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
В результате:
Скачать пример этого отчета(Работает в любой конфишурации где есть справочник Банки):
Скачивать файлы может только зарегистрированный пользователь! Категория:
Схема Компоновки Данных Как найти файлы в иерархии заданного каталога? Код 1C v 8.х // Параметры:
// Путь – Строка;
// Маска – Строка.
//
// Возвращаемое значение:
// Массив – элементы типа Файл.
//
Функция НайтиФайлыВИерархии(Путь, Маска) Экспорт
НайденныеКаталоги = НайтиФайлы(Путь, "*.*");
МассивРезультатов = Новый Массив;
Для каждого НайденныйФайл Из НайденныеКаталоги Цикл
Если НайденныйФайл.ЭтоКаталог() Тогда
МассивРезультатов.Добавить(НайтиФайлыВИерархии(НайденныйФайл.ПолноеИмя, Маска));
КонецЕсли;
КонецЦикла;
МассивРезультатов.Добавить(НайтиФайлы(Путь, Маска));
Результат = Новый Массив;
Для Каждого ЭлементРезультат Из МассивРезультатов Цикл
Для Каждого Файл Из ЭлементРезультат Цикл
Результат.Добавить(Файл);
КонецЦикла;
КонецЦикла;
Возврат Результат;
КонецФункции
Категория:
Работа с Файлами и Каталогами Индикатор выполнения Код 1C v 8.х // Индикатор выполнения обработки результата запроса
Выборка = РезультатЗапроса.Выбрать();
Индикатор = ЭлементыФормы.ИндикаторПеребора;
Индикатор.МаксимальноеЗначение = Выборка.Количество();
Индикатор.Значение = 0;
Пока Выборка.Следующий() Цикл
Индикатор.Значение = Индикатор.Значение + 1;
КонецЦикла;
Код 1C v 8.х // Индикатор выполнения вывода результата запроса с расширенной настройкой
Выборка = РезультатЗапроса.Выбрать();
Индикатор = ЭлементыФормы.ИндикаторПеребора;
Индикатор.МаксимальноеЗначение = Выборка.Количество();
Индикатор.Значение = 0;
Индикатор.ОтображатьПроценты = Истина;
Индикатор.СтильОтображения = РежимСглаживанияИндикатора.Прерывистый;
Индикатор.Ориентация = Ориентация.Вертикально;
Индикатор.Шаг = 0.1;
Пока Выборка.Следующий() Цикл
Индикатор.Значение = Индикатор.Значение + 1;
КонецЦикла;
Индикатор в строке состояния с помощью СКД
Иногда хочется видеть подобие индикатора, но в строке состояния. Это можно сделать только с помощью СКД, и то есть небольшой минус: невозможно убрать или изменить надпись «Вывод отчета». Сделать это можно примерно следующим образом:
Код 1C v 8.х ПроцессорКомпоновки = Новый ПроцессорВыводаРезультатаКомпоновкиДанных
ВТабличныйДокумент;
ПроцессорКомпоновки.ОтображатьПроцентВывода = Истина ;
ЭлементКомпоновки = Новый ЭлементРезультатаКомпоновкиДанных;
ПроцессорКомпоновки.НачатьВывод();
//Считаем проценты по своему алгоритму, для примера:
Для Сч = 1 По 100 Цикл
ЭлементКомпоновки.ПроцентВывода = Сч;
ПроцессорКомпоновки.ВывестиЭлемент(ЭлементКомпоновки);
КонецЦикла;
ПроцессорКомпоновки.ЗакончитьВывод();
Для 1С 7.7 посмотрите
v7: Прогресс бар в строке состояния Категория:
Встроенные Функции Как закрепить шапку таблицы отчета? Код 1C v 8.х // Пример от sergeante Фиксирует шапку при любых отборах.
Процедура скдФиксироватьШапкуОтчета(ТабДок, Фиксировать, Строка = "Номенклатура", Поправка = 0) Экспорт
Если Фиксировать Тогда
Область = ТабДок.НайтиТекст(Строка,,,,Истина);
ТабДок.ФиксацияСверху = ?(ЗначениеЗаполнено(Область), Область.Верх + Поправка, 0);
Иначе
ТабДок.ФиксацияСверху = 0;
КонецЕсли;
КонецПроцедуры
Код 1C v 8.х // Пример от i-rek
ПроцессорВывода.НачатьВывод();
ТаблицаЗафиксирована = Ложь;
Пока Истина Цикл
ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
Если ЭлементРезультата= Неопределено Тогда
Прервать;
Иначе
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
Если Не ТаблицаЗафиксирована И ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
ТаблицаЗафиксирована = Истина;
Таб.ФиксацияСверху = Таб.ВысотаТаблицы;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
Код 1C v 8.х // Пример от Kashemir
Процедура глВывестиРезультатКомпоновкиСАвтофиксациейСтрок( Таб,
ПроцессорКомпоновкиДанных,
ЭлементыРасшировки,
Знач МассивИгнорируемыхПолей = Неопределено,
РазрешитьПрерывание = Истина) Экспорт
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Таб);
ПроцессорВывода.НачатьВывод();
ФиксацияВыполнена = Ложь;
Если МассивИгнорируемыхПолей = Неопределено Тогда
МассивИгнорируемыхПолей = Новый Массив;
КонецЕсли;
Пока Истина Цикл
ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда
Прервать;
КонецЕсли;
// Автофиксация
Если Не ФиксацияВыполнена Тогда
Для Каждого ЗначениеПараметра Из ЭлементРезультатаКомпоновкиДанных.ЗначенияПараметров Цикл
Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ЗначенияПолейРасшифровки = ЭлементыРасшировки[ЗначениеПараметра.Значение].ПолучитьПоля();
Для Каждого ЗначениеПоляРасшифровки Из ЗначенияПолейРасшифровки Цикл
Если МассивИгнорируемыхПолей.Найти(ЗначениеПоляРасшифровки.Поле) = Неопределено Тогда
Таб.ФиксацияСверху = Таб.ВысотаТаблицы;
ФиксацияВыполнена = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ФиксацияВыполнена Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных);
Если РазрешитьПрерывание Тогда
#Если Клиент тогда
ОбработкаПрерыванияПользователя();
#КонецЕсли
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
Категория:
Схема Компоновки Данных