Опубликовано: 02.03.2024

Диаграммы в «1С:Предприятие 7.7»

Основные принципы и понятия

Диаграмма представляет собой определённую фигуру, которая строится на основе матрицы данных размером [M, N], где N — количество серий значений (далее серий), М — количество точек, замерами в которых получены значения серий.

Для количественной ориентации в диаграмме используются координатные оси. Каждому значению, отмеченному на оси, соответствует поясняющее имя (метка). В зависимости от типа координатной оси, метка может быть рассчитанной, или определяться при заполнении данными.

С точки зрения настройки, диаграмма состоит из четырёх областей:

  • область диаграммы — совокупность всех областей образующих диаграмму;
  • область построения диаграммы — содержит координатное пространство и изображенную на нём фигуру;
  • легенда — вспомогательная область, содержащая список меток, соответствующих сериям;
  • заголовок диаграммы.

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

Создание объекта «Диаграмма»

Для использования в отчёте диаграмм необходимо в табличный документ внедрить объект типа "Диаграмма". Для внедрения данного объекта следует последовательно выбрать в главном меню Конфигуратора пункты «Таблица -> Вставить рисунок — > Диаграмма» (см. рис. ниже) или же воспользоваться кнопкой «Диаграмма» на инструментальной панели редактирования таблиц.

Главное меню Конфигуратора
Панель инструментов

После этого с помощью мыши в табличном документе необходимо начертить прямоугольник желаемого размера в том месте, где предполагается поместить диаграмму. Для этого следует провести указателем мыши по диагонали: из угла в угол, как это показано на рисунке ниже.

Создание объекта 'Диаграмма'

После отпускания клавиши мыши на листе появится макет будущей диаграммы.

Макет диаграммы

Примечание: Объект "Диаграмма" предназначен для применения только в табличных документах системы «1С:Предприятие» и не может использоваться самостоятельно.

Возможные проблемы при внедрении объекта «Диаграмма»

В операционной системе Windows’7 при попытке внедрения в табличный документ объекта типа "Диаграмма" разработчик может столкнуться со следующей ошибкой:

Ошибка создания объекта

Проблема заключается в том, что в операционных системах Windows Vista/7/8 все DLL-файлы, используемые программами, должны иметь глобальные идентификаторы класса (class identifiers, CLSID) и быть зарегистрированными в ветке HKEY_CLASSES_ROOT\CLSID реестра операционной системы.

За работу с диаграммами в «1С:Предприятие 7.7» отвечает файл v7chart.dll. Произвести регистрацию данной библиотеки можно с помощью системной утилиты regsvr32.exe, вызвав её, например, через командную строку (см. рис. ниже). Запуск командной строки следует произвести от имени администратора! Программа «1С:Предприятие» должна быть предварительно выгружена.

Регистрация библиотеки из командной строки

Строка вызова утилиты имеет следующий вид:

regsvr32 "<ПолноеИмяФайла>"

где <ПолноеИмяФайла> — имя файла библиотеки с указанием пути к ней. Если в названиях каталогов содержатся пробелы, полное имя файла должно быть заключено в кавычки (см. рис. выше).

В случае успешного завершения регистрации библиотеки на экран должно быть выведено следующее сообщение:

Сообщение об успешной регистрации библиотеки

После завершения регистрации v7chart.dll запускаем «1С:Предприятие» и снова пробуем создать объект "Диаграмма".

Настройка объекта «Диаграмма»

После внедрения в табличный документ объекта "Диаграмма" необходимо по очереди настроить размеры и формат каждой из его областей: области диаграммы (то есть всего объекта "Диаграмма"), области построения и области легенды.

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

Вызов диалоговых окон для определения формата областей

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

Диалог для определения формата области диаграммы

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

Диалог для определения формата области построения

В диалоге для определения формата области легенды (если таковая будет использоваться) можно задать её внешний вид: шрифт текста, цвет фона, параметры рамки и тени.

Диалог для определения формата области легенды

Если в диалоге для определения формата области диаграммы был задан вывод заголовка, то для области заголовка необходимо будет также настроить формат по аналогии с тем, как настраивался формат для других областей объекта "Диаграмма" (см. рис. ниже).

Вызов диалогового окна для определения формата заголовка

Для настройки размера любой из внутренних областей объекта надо просто щёлкнуть мышью по нужной области. При этом на её границах должны появиться маркеры выделения, представляющие собой квадратики чёрного цвета (см. рис. ниже). При наведении указателя мыши на такой маркер указатель принимает вид двунаправленной стрелки. Для смещения границы области следует нажать клавишу мыши над маркером и, не отпуская клавиши, перетащить границу в нужном направлении.

Настройка размера области построения

Для настройки размера области диаграммы (то есть размера всего объекта "Диаграмма") необходимо щёлкнуть мышью в любом месте таблицы вне объекта, а затем по объекту. При этом на границах объекта должны появиться маркеры выделения (см. рис. ниже).

Настройка размера области диаграммы

Чтобы объект "Диаграмма" после установки его размера снова «распался» на области, необходимо дважды щёлкнуть по нему мышью или воспользоваться контекстным меню объекта, появляющемся при щелчке правой кнопкой мыши. В данном контекстном меню следует последовательно выбрать пункты «Объект 1С.V7Диаграмма -> Изменить» (см. рис. ниже).

Контекстное меню объекта

Контекст работы с диаграммами

Чтобы увязать процедуру, управляющую объектом "Диаграмма", с самим объектом, необходимо выделить объект, как это было описано выше, и вызвать его контекстное меню. В контекстном меню следует выбрать пункт «Свойства…» (см. рис. ниже).

Контекстное меню объекта

В открывшемся окне свойств объекта на вкладке «Текст» необходимо записать вызов процедуры, управляющей объектом "Диаграмма" (см. рис. ниже).

Окно свойств объекта

Запись вызова процедуры в свойствах объекта может выглядеть, например, так:

ПостроитьДиаграмму(Таб.ТекущийОбъект);

Объект "Диаграмма" в момент вызова указанной процедуры является текущим объектом таблицы и передаётся в процедуру как параметр (см. описание атрибута ТекущийОбъект объекта "Таблица"). Наполнение диаграммы данными осуществляется в теле вызываемой процедуры с помощью атрибутов и методов объекта "Диаграмма".

Таким образом, во всех программных модулях доступ к атрибутам и вызов методов деловой графики может выполняться только при помощи переменной со ссылкой на объект типа "Диаграмма". При инициировании построения диаграммы значение этого объекта в качестве фактического параметра передаётся в обрабатывающую процедуру, где ссылка на объект становится доступна через идентификатор фиктивного параметра. Чтобы вызвать метод деловой графики, имя метода с указанием необходимых параметров пишется через точку после идентификатора переменной.

Атрибуты объекта «Диаграмма»

Атрибут Заголовок (англоязычный синоним — TitleText) содержит текст заголовка диаграммы. По умолчанию данный атрибут имеет значение «Диаграмма».

Пример использования:

Диаграмма.Заголовок = "Продажи за год";

Методы объекта «Диаграмма»

Явно установить количество серий диаграммы позволяет метод КоличествоСерий() (англоязычный синоним — SeriesCount()). Альтернативой использования этого метода является неявное изменение количества серий: в случае если в метод, одним из параметров использующий номер серии, передаётся значение превышающее количество серий, количество серий будет неявно увеличено.

Возвращаемым значением метода КоличествоСерий() является число, указывающее текущее значение количества серий (до исполнения метода).

Синтаксис метода:

КоличествоСерий(<Количество>)

где <Количество> — числовое выражение, которое задаёт количество серий диаграммы.

Пример использования:

Диаграмма.КоличествоСерий(4);

Явно установить количество точек диаграммы позволяет метод КоличествоТочек() (англоязычный синоним — PointsCount()). Альтернативой использования этого метода является неявное изменение количества точек: в случае если в метод, одним из параметров использующий номер точек, передаётся значение превышающее количество точек, количество точек будет неявно увеличено.

Возвращаемым значением метода КоличествоТочек() является число, указывающее текущее значение количества точек (до исполнения метода).

Синтаксис метода:

КоличествоТочек(<Количество>)

где <Количество> — числовое выражение, которое задаёт количество точек диаграммы.

Пример использования:

Диаграмма.КоличествоТочек(6);

Явно установить имя серии для указанного номера серии позволяет метод УстановитьИмяСерии() (англоязычный синоним — SetSeriesLabel()).

Синтаксис метода:

УстановитьИмяСерии(<НомерСерии>, <Имя>)

где

  • <НомерСерии> — числовое выражение, которое задаёт номер серии, для которой устанавливается имя;
  • <Имя> — строка, используемая для обозначения серии в легенде и подписях к координатным осям.

Пример использования:

Диаграмма.УстановитьИмяСерии(СчетчикСерий, Запрос.Товар.Наименование);

Установить режим автогенерации имён серий диаграммы позволяет метод АвтоУстановкаИменСерий() (англоязычный синоним — AutoSeriesLabels()). В случае, если автогенерация имён разрешена, сериям диаграммы будут автоматически присваиваться имена «Серия1», «Серия2», …, «СерияN». По умолчанию автогенерация запрещена.

Синтаксис:

АвтоУстановкаИменСерий(<Флаг>)

где <Флаг> — числовое значение: 1 — автогенерация имён серий разрешена; 0 — автогенерация имён серий запрещена.

Пример использования:

Диаграмма.АвтоУстановкаИменСерий(1);

Явно установить имя точки для указанного номера точки позволяет метод УстановитьИмяТочки() (англоязычный синоним — SetPointLabel()).

Синтаксис метода:

УстановитьИмяТочки(<НомерТочки>, <Имя>)

где

  • <НомерТочки> — числовое выражение, которое задаёт номер точки, для которой устанавливается имя;
  • <Имя> — строка, используемая для обозначения точки в подписях к координатным осям.

Пример использования:

Диаграмма.УстановитьИмяТочки(1, "Продано на сумму");

Установить режим автогенерации имён точек диаграммы позволяет метод АвтоУстановкаИменТочек() (англоязычный синоним — AutoPointLabels()). В случае, если автогенерация имён разрешена, точкам диаграммы будут автоматически присваиваться имена «1», «2», …, «N». По умолчанию автогенерация запрещена.

Синтаксис метода:

АвтоУстановкаИменТочек(<Флаг>)

где <Флаг> — числовое значение: 1 — автогенерация имён точек разрешена; 0 — автогенерация имён точек запрещена.

Пример использования метода:

Диаграмма.АвтоУстановкаИменТочек(1);

Установить RGB цвет для указанной серии позволяет метод ЦветСерии() (англоязычный синоним — SetSeriesColor()). По умолчанию первые 54 серии имеют уникальный цвет. Серии с большими номерами изображаются в диаграмме повторяя уже использованный цвет, но перестают окрашиваться сплошным цветом, используя более сложный способ заливки.

Синтаксис метода:

ЦветСерии(<НомерСерии>, <Красный>, <Зеленый>, <Синий>)

где

  • <НомерСерии> — числовое выражение, которое задаёт номер серии, для которой устанавливается цвет;
  • <Красный> — число, задающее насыщенность красной компоненты цвета. Возможные значения от 0 до 255;
  • <Зеленый> — число, задающее насыщенность зелёной компоненты цвета. Возможные значения от 0 до 255;
  • <Синий> — число, задающее насыщенность синей компоненты цвета. Возможные значения от 0 до 255.

Пример использования:

Диаграмма.ЦветСерии(1, 35, 67, 89);

Установить заданное значение указанной серии в указанной точке с возможностью последующей расшифровки этого значения позволяет метод УстановитьЗначение() (англоязычный синоним — SetValue()).

Расшифровка значения может быть реализована при помощи предопределённой процедуры ОбработкаЯчейкиТаблицы() (см. описание предопределённой процедуры ОбработкаЯчейкиТаблицы()). Вызов предопределённой процедуры на исполнение производится в системе «1С:Предприятие» по двойному щелчку мыши в табличном документе на выбранной точке диаграммы. При этом значение расшифровки этой точки диаграммы, указанное в параметре метода, автоматически передаётся в качестве первого параметра в вызове предопределённой процедуры.

Синтаксис метода:

УстановитьЗначение(<НомТочки>, <НомСерии>, <Значение>, <Расшифровка>)

где

  • <НомТочки> — числовое выражение, которое задаёт номер точки, для которой устанавливается значение;
  • <НомСерии> — числовое выражение, которое задаёт номер серии, для которой устанавливается значение;
  • <Значение> — числовое значение — задаваемое значение диаграммы;
  • <Расшифровка> — значение любого типа, используемое для расшифровки диаграммы при помощи предопределённой процедуры ОбработкаЯчейкиТаблицы(). Параметр является необязательным.

Пример использования:

Диаграмма.УстановитьЗначение(1, 5, 14);

Установить режим обновления диаграммы позволяет метод Обновление() (англоязычный синоним — RedrawFlag()). Запрет перерисовки диаграммы рекомендуется устанавливать в целях ускорения работы системы на время наполнения данными. По умолчанию перерисовка разрешена.

Синтаксис метода:

Обновление(<Флаг>)

где <Флаг> — числовое значение: 1 — разрешить перерисовку диаграммы; 0 — запретить перерисовку диаграммы.

Пример использования:

Диаграмма.Обновление(0);

Очистить диаграмму позволяет метод Очистить() (англоязычный синоним — Clear()). При очистке диаграммы удаляются все ранее установленные значения, стираются все ранее установленные имена, количество серий и точек устанавливается нулевым. Параметры у данного метода отсутствуют.

Пример использования:

Диаграмма.Очистить();

Пример использования диаграммы

Предположим, что проектируется отчёт о продаже товара. Внешний вид отчёта визуально настроен. Мы предполагаем, что будет построена объёмная гистограмма с одной точкой («Продано на сумму») и количеством серий равным количеству товаров.

Фрагментом модуля отчёта является процедура ПостроитьДиаграмму(). Вызов этой процедуры записан на вкладке «Текст» окна свойств внедрённого в табличный документ объекта "Диаграмма". Выглядит вызов так:

ПостроитьДиаграмму(Таб.ТекущийОбъект, Запрос);

Параметрами процедуры являются:

  • объект "Диаграмма", переданный как текущий объект табличного документа;
  • запрос к базе данных, сформированный и выполненный заранее.

Код процедуры:

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

Другие статьи по схожей тематике