16. Представление результатов отчетов - табличный документ, диаграмма, географическая схема

Табличный документ, текстовый документ

Диаграммы

Географическая схема

Табличный документ, текстовый документ

Как вывести результат запроса в табличный документ?

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК СкладКомпанииСсылка, | ОстаткиТоваровКомпанииОстатки.Номенклатура КАК НоменклатураСсылка, | СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) КАК Остаток, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Представление КАК Номенклатура, | ОстаткиТоваровКомпанииОстатки.СкладКомпании.Представление КАК Склад |ИЗ | РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&Момент) КАК ОстаткиТоваровКомпанииОстатки |СГРУППИРОВАТЬ ПО | ОстаткиТоваровКомпанииОстатки.СкладКомпанииСсылка, | ОстаткиТоваровКомпанииОстатки.НоменклатураСсылка |ИТОГИ СУММА(Остаток) ПО | Общие, | Склад"; Запрос.УстановитьПараметр("Момент", Неопределено); Результат = Запрос.Выполнить(); // Получить поле табличного документа, в которое будем выводить результат. ТабДок = ЭлементыФормы.ПолеТабличногоДокумента; // Очистить данные в табличном документе // (возможно данные уже выводились ранее). ТабДок.Очистить(); Макет = ПолучитьМакет("Макет"); // Получить именованные области из макета. ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщийИтог"); ОбластьСклад = Макет.ПолучитьОбласть("Склад"); ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура"); // Получить выборку по первой итоговой группировке (первый уровень). ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // Запись общего итога всегда одна, поэтому можно обойтись без организации цикла. ВыборкаОбщийИтог.Следующий(); // Произвести запись данных из полей выборки в именованные // области с совпадающими именами. ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог); // Включить область с заполненными параметрами в табличный документ. ТабДок.Вывести(ОбластьОбщийИтог); // "От" записи первого уровня получить подчиненную выборку // записей второго уровня (по итоговой группировке "Склад"). ВыборкаПоСкладу = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСкладу.Следующий() Цикл ОбластьСклад.Параметры.Заполнить(ВыборкаПоСкладу); ТабДок.Вывести(ОбластьСклад); // Получить подчиненную выборку, содержащую детальные записи. ВыборкаПоНоменклатуре = ВыборкаПоСкладу.Выбрать(); Пока ВыборкаПоНоменклатуре.Следующий() Цикл ОбластьНоменклатура.Параметры.Заполнить(ВыборкаПоНоменклатуре); ТабДок.Вывести(ОбластьНоменклатура); КонецЦикла; КонецЦикла;

Как вывести данные в табличный документ с возможностью сворачивания и разворачивания данных по группировкам?

// Перед выводом данных в табличный документ используется метод: ТабДок.НачатьАвтогруппировкуСтрок();// Выести область с указанием уровня. ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень()); // В конце работы с табличным документом необходимо выполнить // следующий метод: ТабДок.ЗакончитьАвтогруппировкуСтрок();

Как при выводе данных в табличный документ свернуть все выводимые группировки?

УровеньГруппировки = 1; //содержит индекс, с нуля ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);

Как при выводе данных в табличный документ произвольно определить состав свернутых и развернутых группировок?

ТабДок.Вывести(ОбластьНоменклатура, ВыборкаПоНоменклатуре.Уровень(), , Ложь);

Как выгрузить результат запроса с показом иерархии?

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура, | ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиКомпанииОбороты |ИТОГИ СУММА(КоличествоОборот) ПО | Номенклатура ИЕРАРХИЯ"; Запрос.УстановитьПараметр("НачПериода", НачПериода); Запрос.УстановитьПараметр("КонПериода", КонПериода); Результат = Запрос.Выполнить(); // Осуществить выгрузку с сохранением иерархии. ЭлементыФормы.ТП.Значение = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); ЭлементыФормы.ТП.СоздатьКолонки();

Где и как можно увидеть макет, автоматически генерируемый построителем отчета?

ПостроительОтчета.Макет.Показать()

Как из построителя отчета передать данные в сводную таблицу?

ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ИсточникДанных = ПостроительОтчетаОтчет; ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ОтображатьПоля = Истина;

Отчет формируется построителем отчета. Как убрать одну из колонок, поместив ее данные в расшифровку другой?

Процедура АлфавитныйПереченьКандидатовСРасшифровкой() ПостроительОтчета = Новый ПостроительОтчета; ПостроительОтчета.Текст ="ВЫБРАТЬ | РегистрацияСобеседованияКандидата.ФизЛицо КАК Кандидат, | РегистрацияСобеседованияКандидата.РезультатСобеседования КАК Результат, | РегистрацияСобеседованияКандидата.Ссылка |ИЗ | Документ.РегистрацияСобеседованияКандидата КАК РегистрацияСобеседованияКандидата |УПОРЯДОЧИТЬ ПО | РегистрацияСобеседованияКандидата.ФизЛицо.Наименование"; ПостроительОтчета.Выполнить(); Макет = ПостроительОтчета.Макет; // Очистить области, связанные с ссылкой. ТекущаяОбласть = Неопределено; Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Ссылка", ТекущаяОбласть, Макет.Область()); Если ТекущаяОбласть = Неопределено Тогда Прервать; Иначе ТекущаяОбласть.Очистить(Истина, Истина, Истина); КонецЕсли; КонецЦикла; // Заполнить параметр расшифровки для областей, где параметр = "Результат". ТекущаяОбласть = Неопределено; Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Результат", ТекущаяОбласть, Макет.Область()); Если ТекущаяОбласть = Неопределено Тогда Прервать; Иначе Если ТекущаяОбласть.Параметр = "Результат" Тогда ТекущаяОбласть.ПараметрРасшифровки = "Ссылка"; КонецЕсли; КонецЕсли; КонецЦикла; ПостроительОтчета.Макет = Макет; ПостроительОтчета.Вывести(); КонецПроцедуры

Как сохранить настройки построителя отчета до следующего открытия формы отчета?

СохранитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя, ПостроительОтчета.ПолучитьНастройки()); // До установки настроек они ранее должны были быть заполнены // по тексту запроса. ПостроительОтчета.ЗаполнитьНастройки(); // Установить настройки построителя отчета. Настройка = ВосстановитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя); Если Настройка <> Неопределено Тогда ПостроительОтчета.УстановитьНастройки(Настройка); КонецЕсли;

Как организовать показ примечаний в формируемом табличном документе?

Процедура Отчет(ДатаНач, ДатаКон) Экспорт Запрос = Новый Запрос; // Сбор данных. Запрос.Текст = "ВЫБРАТЬ | Событие.Ответственный КАК Ответственный, | Событие.Дата, | Событие.ВидСобытия, | Событие.Контрагент, | Событие.СодержаниеСобытия, | Событие.ОписаниеСобытия |ИЗ | Документ.Событие КАК Событие |ГДЕ | Событие.Дата МЕЖДУ &ДатаНач И &ДатаКон И (Событие.Проведен) И Событие.СостояниеСобытия = &Завершено |УПОРЯДОЧИТЬ ПО | Ответственный"; Запрос.УстановитьПараметр("ДатаКон", ДатаКон); Запрос.УстановитьПараметр("ДатаНач", ДатаНач); Запрос.УстановитьПараметр("Завершено", Перечисления.СостоянияСобытий.Завершено); Результат = Запрос.Выполнить(); // Сформировать табличный документ. Макет = ПолучитьМакет("Отчет"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок = Новый ТабличныйДокумент; ОбластьЗаголовок.Параметры.ДатаНач = ДатаНач; ОбластьЗаголовок.Параметры.ДатаКон = ДатаКон; ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ВыборкаДетали = Результат.Выбрать(); Пока ВыборкаДетали.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали); ОбластьДетальныхЗаписей.Область("Описание").Примечание.Текст = ВыборкаДетали.СодержаниеСобытия; ТабДок.Вывести(ОбластьДетальныхЗаписей); КонецЦикла; ТабДок.Показать(); КонецПроцедуры

Как обеспечить, чтобы при вводе на печать не печатались первая колонка и первая строка табличного документа "ДокументРезультат"?

ДокументРезультат.ОбластьПечати = ДокументРезультат.Область(2, 2, ДокументРезультат.ВысотаТаблицы, ДокументРезультат.ШиринаТаблицы );

Как обеспечить фиксацию верхней части табличного документа, генерируемого построителем отчета, по срезу шапки таблицы?

ДокументРезультат.ФиксацияСверху = ПостроительОтчета.Макет.Области.ШапкаТаблицы.Низ;

Табличный документ формируется построителем отчета. Как при печати табличного документа обеспечить вывод шапки таблицы на каждой странице?

ОбластьШапки = ПостроительОтчета.Макет.Области.ШапкаТаблицы; ДокументРезультат.ПовторятьПриПечатиСтроки = ДокументРезультат.Область(ОбластьШапки.Верх, , ОбластьШапки.Низ);

Как при выводе на печать "длинного" документа указать в колонтитулах страниц номер документа, дату и номер страницы?

ТабДокумент.ВерхнийКолонтитул.Выводить = Истина; ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2; ТабДокумент.ВерхнийКолонтитул.ТекстСлева = Метаданные().Представление() + " № " + Номер; ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "[&НомерСтраницы]";

Табличный документ формируется по макету, автоматически генерируемому построителем отчета. Как задать ориентацию страницы при печати?

ПостроительОтчета.Вывести(ДокументРезультат); ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

Табличный документ формируется построителем отчета. Как для всех выводимых числовых показателей установить вывод без дробной части?

// Получить макет построителя отчета. Макет = ПостроительОтчета.Макет; // Сформатировать все области, где встречается слово "Стоимость". ТекущаяОбласть = Неопределено; Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Стоимость", ТекущаяОбласть, Макет.Область()); Если ТекущаяОбласть = Неопределено Тогда Прервать; Иначе Если ТекущаяОбласть.Параметр <> "" Тогда ТекущаяОбласть.Формат = "ЧДЦ=0"; КонецЕсли; КонецЕсли; КонецЦикла; // Сформатировать все области, где встречается слово "Количество". ТекущаяОбласть = Неопределено; Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Количество", ТекущаяОбласть, Макет.Область()); Если ТекущаяОбласть = Неопределено Тогда Прервать; Иначе Если ТекущаяОбласть.Параметр <> "" Тогда ТекущаяОбласть.Формат = "ЧДЦ=0"; КонецЕсли; КонецЕсли; КонецЦикла; // Назначить построителю измененный макет. ПостроительОтчета.Макет = Макет; // Вывести результат работы построителя отчета в табличный документ.

Как для построителя отчета совместить назначение своего макета и применение одного из стандартных макетов оформления?

ПостроительОтчета.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Апельсин); ПостроительОтчета.Макет = ПолучитьМакет("МакетЭтогоОтчета"); ПостроительОтчета.ОформитьМакет();

Как при получении данных из запроса обойти только итоговые записи?

ТабДок = ЭлементыФормы.ПолеТабличногоДокумента; ТабДок.Очистить(); Макет = ПолучитьМакет("Отчет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура, | ПродажиКомпанииОбороты.Номенклатура.Представление, | ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот, | ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода,&КонПериода) КАК ПродажиКомпанииОбороты |ИТОГИ СУММА(КоличествоОборот), СУММА(СуммаПродажиОборот) ПО | ОБЩИЕ, | Номенклатура Иерархия"; Запрос.УстановитьПараметр("&НачПериода", НачПериода); Запрос.УстановитьПараметр("&КонПериода", КонецДня(КонПериода)); Результат = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги"); ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); // Обход по определенным в запросе итоговым группировкам. ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // Запись общих итогов одна, поэтому нет необходимости в цикле. ВыборкаОбщийИтог.Следующий(); ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог); ТабДок.Вывести(ОбластьОбщийИтог); // Получить подчиненную выборку по итоговой группировке "номенклатура". ВыборкаНоменклатура = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНоменклатура.Следующий() Цикл ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура); ТабДок.Вывести(ОбластьНоменклатура); // Несмотря на то, что можем получить еще одну подчиненную // выборку (по детальным записям) мы это не делаем, т.е. фактически // при обходе пропускаем детальные записи. КонецЦикла; ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал);

Как при получении данных из запроса обойти только иерархические итоговые записи?

ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ВыборкаОбщийИтог.Следующий(); ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог); ТабДок.Вывести(ОбластьОбщийИтог); ВыборкаНоменклатура = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаНоменклатура.Следующий() Цикл ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура); ТабДок.Вывести(ОбластьНоменклатура); КонецЦикла;

Как вывести картинку в табличный документ?

ТабДок = Новый ТабличныйДокумент; Макет = ОбработкаОбъект.ПолучитьМакет("Макет"); ОбластьКартинки = Макет.ПолучитьОбласть("ОбластьСКартинкой"); Картинка = Новый Картинка(ПутьККартинке); // Элемент управления "Логотип" входит в коллекцию картинок области. ОбластьКартинки.Рисунки.Логотип.Картинка = Картинка; ТабДок.Вывести(ОбластьКартинки); ТабДок.Показать();

Как вывести картинку в табличный документ без изменения макета?

Область = Макет.ПолучитьОбласть("Шапка"); Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок.Верх = 5; Рисунок.Высота = 10; Рисунок.Ширина = 10; Рисунок.Лево = 5; Рисунок.Картинка = Новый Картинка(ПутьККартинке); Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер; ТабДок.Вывести(Область);

Как работать со сводной таблицей?

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец КАК ДоговорВзаиморасчетовПокупателяВладелец, | ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура, | ПродажиКомпанииОбороты.ПодразделениеКомпании КАК ПодразделениеКомпании, | СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот, | СУММА(ПродажиКомпанииОбороты.СуммаПродажиОборот) КАК СуммаПродажиОборот |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода,&КонПериода) КАК ПродажиКомпанииОбороты |СГРУППИРОВАТЬ ПО | ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец, | ПродажиКомпанииОбороты.Номенклатура, | ПродажиКомпанииОбороты.ПодразделениеКомпании |ИТОГИ СУММА(КоличествоОборот), СУММА(СуммаПродажиОборот) ПО | ДоговорВзаиморасчетовПокупателяВладелец, | Номенклатура, | ПодразделениеКомпании"; // На состав полей, которые могут быть размещены в измерениях, // данных сводной таблицы влияет раздел "Итоги". Запрос.УстановитьПараметр("НачПериода", НачПериода); Запрос.УстановитьПараметр("КонПериода", КонПериода); Результат = Запрос.Выполнить(); Сводная = ЭлементыФормы.ПолеДокумента.ВстроенныеТаблицы.СводнаяТаблица1; Сводная.ИсточникДанных = Результат;

Как программно разместить данные в сводной таблице и оформить ее?

Построитель = Новый ПостроительОтчета(); Построитель.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад, | ТоварыНаСкладахОстаткиИОбороты.Склад.Представление, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот) КАК КоличествоОборот, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Склад, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Склад.Представление, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление |ИТОГИ СУММА(КоличествоПриход), СУММА(КоличествоОборот), СУММА(КоличествоРасход) ПО | ОБЩИЕ, | Номенклатура ИЕРАРХИЯ, | Склад ИЕРАРХИЯ "; Построитель.ЗаполнитьНастройки(); Таблица = ЭлементыФормы.ПолеТабличногоДокумента1.ВстроенныеТаблицы.СводнаяТаблица1; Таблица.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Лед); Таблица.ИсточникДанных = Построитель; Таблица.Строки.Добавить("Номенклатура"); Таблица.Колонки.Добавить("Склад"); Таблица.Данные.Добавить("КоличествоПриход"); Таблица.ОтображатьЛинии = ТипОтображенияЛинийСводнойТаблицы.Всегда;

Как создать печатную форму посредством текстового шаблона?

// Создать текстовый документ, в который будет выполняться вывод. ТекстДок = Новый ТекстовыйДокумент; // Получить макет. Макет = ПолучитьМакет("ЗаявкаНаПропуск"); // Заголовок. Область = Макет.ПолучитьОбласть("Заголовок"); Область.Параметры.Дата = Дата; Область.Параметры.ВремяНач = НачалоСобытия; Область.Параметры.ВремяОконч = ОкончаниеСобытия; ТекстДок.Вывести(Область); // Состав. Область = Макет.ПолучитьОбласть("Состав"); Для Каждого ТекСтрокаСторонниеЛица Из СторонниеЛица Цикл Область.Параметры.ФИО = Строка(ТекСтрокаСторонниеЛица.Лицо); ТекстДок.Вывести(Область); КонецЦикла; // Подвал. Область = Макет.ПолучитьОбласть("Подвал"); Область.Параметры.Ответственный = Ответственный.Наименование; ТекстДок.Вывести(Область); // Открыть сформированный документ. ТекстДок.Показать("Заявка на пропуска для События №" + Номер);

Диаграммы

Как заполнить диаграмму данными?

Диаграмма = ЭлементыФормы.Диаграмма; // Очистить диаграмму, возможно ранее в нее уже выводились данные. Диаграмма.КоличествоСерий = 0; Диаграмма.КоличествоТочек = 0; // Количество серий будет ограничиваться (не все значения будут показываться). Диаграмма.МаксимумСерий = МаксимумСерий.Ограничено; Диаграмма.МаксимумСерийКоличество = 7; Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Процент; Диаграмма.ОбластьЗаголовка.Текст = "Обороты номенклатуры"; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.Номенклатура, | СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот |ИЗ | РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиКомпанииОбороты |СГРУППИРОВАТЬ ПО | ПродажиКомпанииОбороты.Номенклатура"; Результат = Запрос.Выполнить(); // Запретить обновление диаграммы на время вывода данных. Диаграмма.Обновление = Ложь; // Установить единственную точку. Диаграмма.КоличествоТочек = 1; Диаграмма.Точки[0].Текст = "Количество"; Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // Количество серий, если бы не ограничивали зависело бы от результата запроса. КоличествоСерий = Диаграмма.Серии.Количество(); Диаграмма.КоличествоСерий = КоличествоСерий + 1; Диаграмма.Серии[КоличествоСерий].Текст = Выборка.Номенклатура; // Установить значение "на пересечении" точки и серии. // Первый параметр - 0 , так как в диаграмме только одна точка. Диаграмма.УстановитьЗначение(0, КоличествоСерий, Выборка.КоличествоОборот); КонецЦикла; // Обновить диаграмму. Диаграмма.Обновление = Истина;

Как заполнить данными измерительную диаграмму?

// Настроить свойства диаграммы. Диаграмма = ЭлементыФормы.ДиаграммаПродажи; Диаграмма.ТипДиаграммы = ТипДиаграммы.Измерительная; Диаграмма.АвтоМаксимальноеЗначение = Ложь; Диаграмма.МаксимальноеЗначение = 20000; Диаграмма.АвтоМинимальноеЗначение = Ложь; Диаграмма.МинимальноеЗначение = 0; // Создать три полосы. Полосы = Диаграмма.ПолосыИзмерительнойДиаграммы; НоваяПолоса = Полосы.Добавить(); НоваяПолоса.Начало = 0; НоваяПолоса.Конец = 1000; НоваяПолоса.ЦветФона = WebЦвета.Красный; НоваяПолоса = Полосы.Добавить(); НоваяПолоса.Начало = 1000; НоваяПолоса.Конец = 5000; НоваяПолоса.ЦветФона = WebЦвета.Желтый; НоваяПолоса = Полосы.Добавить(); НоваяПолоса.Начало = 5000; НоваяПолоса.Конец = 20000; НоваяПолоса.ЦветФона = WebЦвета.Зеленый; Запрос = Новый Запрос(" |ВЫБРАТЬ | ПродажиОбороты.Период, | ПродажиОбороты.СтоимостьОборот |ИЗ | РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиОбороты"); Запрос.УстановитьПараметр("ДатаНачала", '2004.08.10 00:00:00'); Запрос.УстановитьПараметр("ДатаОкончания", '2004.08.30 23:59:59'); ЭлементыФормы.ДиаграммаПродажи.ИсточникДанных = Запрос.Выполнить().Выгрузить();

Как вывести результат запроса в сводную диаграмму?

Запрос = Новый Запрос( "ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад, | ТоварыНаСкладахОстаткиИОбороты.Склад.Представление, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот) КАК КоличествоОборот, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Склад, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Склад.Представление, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление |ИТОГИ СУММА(КоличествоПриход), СУММА(КоличествоОборот), СУММА(КоличествоРасход) ПО | ОБЩИЕ, | Номенклатура ИЕРАРХИЯ, | Склад ИЕРАРХИЯ"); Диаграмма = ЭлементыФормы.СводнаяДиаграмма1; Диаграмма.ОбластьЗаголовка.Текст = "Приход товаров"; Диаграмма.ИсточникДанных = Запрос.Выполнить(); Диаграмма.Серии.Добавить("Номенклатура"); Диаграмма.Точки.Добавить("Склад"); Диаграмма.Ресурсы.Добавить("КоличествоПриход");

Как заполнить диаграмму Ганта данными?

ДГ = ЭлементыФормы.ДГ; // Установить заголовок диаграммы. ДГ.ОбластьЗаголовка.Текст = "График дежурств"; // Интервал будем определять самостоятельно. ДГ.АвтоОпределениеПолногоИнтервала = Ложь; // Установить интервал. ДГ.УстановитьПолныйИнтервал(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())); // В диаграмме будет две точки - сотрудники Петров и Сидоров... ТочкаП = ДГ.УстановитьТочку("Петров"); ТочкаС = ДГ.УстановитьТочку("Сидоров"); // и две серии - дежурство на вахте и дежурство в центральном офисе. СерияНаВахте = ДГ.УстановитьСерию("На вахте"); СерияВЦентре = ДГ.УстановитьСерию("В центральном офисе"); // Задать цвета серий, отличные от цвета по умолчанию. СерияНаВахте.Цвет = WebЦвета.Синий; СерияВЦентре.Цвет = WebЦвета.СветлоЖелтый; ПервыйДень = НачалоМесяца(ТекущаяДата()); // Получить значение диаграммы - дежурство Петрова на вахте. Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте); // В значении определить новый интервал. Интервал = Значение.Добавить(); Интервал.Текст = "Работает на вахте"; // Определить границы интервала. Интервал.Начало = ПервыйДень; Интервал.Конец = ПервыйДень + 10 * 24 * 60 * 60; // Получить значение диаграммы - дежурство Петрова в центральном офисе. Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре); Интервал = Значение.Добавить(); Интервал.Текст = "Работает в центральном офисе"; Интервал.Начало = ПервыйДень + 14 * 24 * 60 * 60; Интервал.Конец = ПервыйДень + 24 * 24 * 60 * 60; // Получить значение диаграммы - дежурство Сидорова на вахте. Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте); Интервал = Значение.Добавить(); Интервал.Текст = "Работает на вахте"; Интервал.Начало = ПервыйДень + 5 * 24 * 60 * 60; Интервал.Конец = ПервыйДень + 15 * 24 * 60 * 60; // Получить значение диаграммы - дежурство Сидорова в центральном офисе. Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре); Интервал = Значение.Добавить(); Интервал.Текст = "Работает в центральном офисе"; Интервал.Начало = ПервыйДень + 21 * 24 * 60 * 60; Интервал.Конец = ПервыйДень + 25 * 24 * 60 * 60;

Как связать интервалы диаграммы Ганта?

// Получить значение диаграммы - дежурство Петрова на вахте. Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте); // В значении определить новый интервал. Интервал = Значение.Добавить(); // Запомнить интервал начала связи. СвязьИнтервалНачало = Интервал; // Получить значение диаграммы - дежурство Петрова в центральном офисе. Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре); Интервал = Значение.Добавить(); // Запомнить интервал окончания связи. СвязьИнтервалКонец = Интервал; // Связать два интервала. Связь = СвязьИнтервалНачало.Добавить(СвязьИнтервалКонец); Связь.Цвет = WebЦвета.Синий; // Получить значение диаграммы - дежурство Сидорова на вахте. Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте); Интервал = Значение.Добавить(); СвязьИнтервалНачало = Интервал; // Получить значение диаграммы - дежурство Сидорова в центральном офисе. Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре); Интервал = Значение.Добавить(); СвязьИнтервалКонец = Интервал; // Связать два интервала. Связь = СвязьИнтервалНачало.Добавить(СвязьИнтервалКонец); Связь.Цвет = WebЦвета.Синий;

Как обработать интерактивное изменение интервалов диаграммы Ганта?

// Получить значение диаграммы - дежурство Петрова на вахте. Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте); // Разрешить интерактивное редактирование интервалов. Значение.Редактирование = Истина; // Получить значение диаграммы - дежурство Петрова в центральном офисе. Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре); Значение.Редактирование = Истина; // Получить значение диаграммы - дежурство Сидорова на вахте. Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте); Значение.Редактирование = Истина; // Получить значение диаграммы - дежурство Сидорова в центральном офисе. Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре); Значение.Редактирование = Истина; Процедура ДГПриОкончанииРедактированияИнтервала(Элемент, Интервал, Отмена) // Сгладить погрешности интерактивного перетаскивания - // округлить интервал по границе дня. Интервал.Начало = Интервал.Начало + 3600 * 12; Интервал.Начало = НачалоДня(Интервал.Начало); Интервал.Конец = Интервал.Конец + 3600 * 12; Интервал.Конец = НачалоДня(Интервал.Конец); // Скорректировать цвета связей. Для Каждого Связь Из Интервал Цикл Если Связь.Начало.Конец <= Связь.Конец.Начало Тогда Связь.Цвет = WebЦвета.Синий; Иначе // есть пересечение интервалов - выделить красным Связь.Цвет = WebЦвета.Красный; КонецЕсли; КонецЦикла; КонецПроцедуры

Как разместить непериодические метки в диаграмме Ганта?

// Установить непериодические метки - контроль дежурства. // Создать отдельный элемент шкалы времени (для более наглядного отображения) ЭлементМеток = ДГ.ОбластьПостроения.ШкалаВремени.Элементы.Добавить(); ЭлементМеток.Единица = ТипЕдиницыШкалыВремени.День; // Скрыть периодические метки добавленного элемента. ЭлементМеток.ОтображатьПериодическиеМетки = Ложь; // Установить метку - первая проверка - 10 часов утра 9 числа. ПерваяПроверка = ПервыйДень + 8 * 24 * 60 * 60 + 10 * 60 * 60; Метка = ЭлементМеток.Метки.Добавить(ПерваяПроверка); Метка.Текст = "Проверка"; Метка.ЦветТекста = WebЦвета.Красный; Метка.ЦветЛинии = Метка.ЦветТекста; // Установить метку - вторая проверка - 8 часов вечера 23 числа. ВтораяПроверка = ПервыйДень + 22 * 24 * 60 * 60 + 20 * 60 * 60; Метка = ЭлементМеток.Метки.Добавить(ВтораяПроверка); Метка.Текст = "Проверка"; Метка.ЦветТекста = WebЦвета.Красный; Метка.ЦветЛинии = Метка.ЦветТекста;

Как выделить некоторые интервалы фона диаграммы Ганта?

// Выделить выходные дни другим цветом фона. Неделя = 3600 * 24 * 7; Выходные = 3600 * 48; МаксимальнаяДата = ПервыйДень + Неделя * 4; ТекущаяДата = ПервыйДень; Пока ТекущаяДата <= МаксимальнаяДата Цикл Конец = НачалоНедели(ТекущаяДата); Начало = Конец - Выходные; ДГ.ИнтервалыФона.Добавить(Начало, Конец); ТекущаяДата = ТекущаяДата + Неделя; КонецЦикла;

Географическая схема

Как отобразить в форме файл географической схемы?

Схема = ЭлементыФормы.ГеоСхема; Схема.Прочитать("D:/MyGeo.geo");

Как отобразить в форме макет географической схемы?

Схема = ЭлементыФормы.ГеоСхема; Схема.Вывести(ПолучитьОбщийМакет("ГеографическаяСхемаРоссии"));

Как изменить масштаб географической схемы?

Масштаб = 100000; Если ВвестиЗначение(Масштаб) Тогда ЭлементыФормы.ГеоСхема.ПоддержкаМасштаба = РежимОтображенияГеографическойСхемы.ЗадаетсяМасштабом; ЭлементыФормы.ГеоСхема.Масштаб = Масштаб; КонецЕсли;

Как отобразить на географической схеме выбранный город?

Схема = ЭлементыФормы.ГеоСхема; СписокГородов = Новый СписокЗначений; // Запретить перерисовку схемы на время обновления. Схема.Обновление = Ложь; // Отобразить слой Регионы. Схема.Слои.Регионы.Видимость = Истина; // Задать тип отображения названий городов. СлойГорода = Схема.Слои.Города; СлойГорода.Серии.Название.ТипОтображения = ТипОтображенияСерииСлояГеографическойСхемы.Текст; // Сформировать список городов и скрыть все города. Для Счетчик = 0 По СлойГорода.Объекты.Количество() - 1 Цикл Город = СлойГорода.Объекты.Получить(Счетчик); Город.Видимость = Ложь; НазваниеГорода = СлойГорода.ПолучитьЗначение(Город, СлойГорода.Серии.Название); НазваниеРегиона = СлойГорода.ПолучитьЗначение(Город, СлойГорода.Серии.Регион); СписокГородов.Добавить(Счетчик, НазваниеГорода.Значение + " (" + НазваниеРегиона.Значение + ")"); КонецЦикла; СлойГорода.Видимость = Истина; // Отобразить слой Города. СписокГородов.СортироватьПоПредставлению(); ВыбранныйГород = СписокГородов.ВыбратьЭлемент(); Если ВыбранныйГород <> Неопределено Тогда ГородСхемы = СлойГорода.Объекты.Получить(ВыбранныйГород.Значение); ГородСхемы.Видимость = Истина; // отобразить выбранный город КонецЕсли; Схема.Обновление = Истина; // Обновить схему.

Как использовать таблицу значений в качестве источника данных географической схемы?

Схема = ЭлементыФормы.ГеоСхема; Схема.Обновление = Ложь; // Запретить обновление схемы. // Отобразить слои Регионы и Города. Схема.Слои.Регионы.Видимость = Истина; СлойГорода = Схема.Слои.Города; СлойГорода.Видимость = Истина; // Добавить новую серию для отображения данных источника. СерияИнформация = Схема.Слои.Города.Серии.Добавить("Информация"); СерияИнформация.Значение = "Информация"; // Сформировать таблицу значений источника данных. ИсточникДанныхГеоСхемы.Колонки.Добавить("ЗначениеГорода"); ИсточникДанныхГеоСхемы.Колонки.Добавить("СерияИнформация", Новый ОписаниеТипов("Строка")); // Добавить "справочную" колонку в истоник данных // (нужна только для "наглядности" работы с источником). ИсточникДанныхГеоСхемы.Колонки.Добавить("НазваниеГорода"); // Заполнить в первой строке источника данных значение серии, // для которой будут выводиться данные. ИсточникДанныхГеоСхемы.Добавить().СерияИнформация = "Информация"; // Задать тип источника данных Схема.Слои.Города.ТипОрганизацииИсточникаДанных = ТипОрганизацииИсточникаДанныхГеографическойСхемы.НаПересечении; // Задать тип отображения значений серии источника данных. СлойГорода.Серии.Информация.ТипОтображения = ТипОтображенияСерииСлояГеографическойСхемы.Текст; // Заполнить источник данных значениями всех объектов. Для Каждого Город Из СлойГорода.Объекты Цикл Город.Видимость = Истина; СтрокаИсточникаДанных = ИсточникДанныхГеоСхемы.Добавить(); СтрокаИсточникаДанных.ЗначениеГорода = Город.Значение; СтрокаИсточникаДанных.НазваниеГорода = СлойГорода.ПолучитьЗначение(Город, СлойГорода.Серии.Название).Значение; КонецЦикла; ЭлементыФормы.ИсточникДанныхГеоСхемы.СоздатьКолонки(); Схема.Обновление = Истина; // Обновить поле географической схемы. // Назначить источник данных. СлойГорода.ИсточникДанных = ИсточникДанныхГеоСхемы;