КоллекцияРисунковТабличногоДокумента.Количество

Методы · Count

Получает количество рисунков в коллекции.

Синтаксис

Количество()
Полное описание, параметры и ограничения

КоллекцияРисунковТабличногоДокумента.Количество (SpreadsheetDocumentDrawingCollection.Count)

КоллекцияРисунковТабличногоДокумента (SpreadsheetDocumentDrawingCollection)

Количество (Count)

Доступен, начиная с версии 8.0.

Синтаксис:
Количество()
Возвращаемое значение:
Тип: Число.

Описание:

Получает количество рисунков в коллекции.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Сформировать учебную диаграмму в табличный документ

Продолжаем путь от своей схемы до результата: настройки → макет → процессор → вывод. Дополнительно выполняем исходный константный запрос для проверки трёх строк и суммы 1300.

Где и как запускать

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

Подготовка

  1. Работайте в отдельной учебной базе на платформе 8.5.1.1343. Справочники, документы, регистры и готовые макеты не нужны.

  2. Создайте общий модуль УчебныеДиаграммы85: Сервер — Да, Клиент — Нет, Привилегированный — Нет. Полностью вставьте код одного урока, а не оборачивайте его второй процедурой.

  3. В своей учебной обработке добавьте команду. Из её серверного обработчика вызовите УчебныеДиаграммы85.ВыполнитьПример();. Не вызывайте серверные объекты СКД непосредственно из тонкого клиента.

  4. Запрос содержит только три собственные константные строки: Север/Книга — 750, Север/Ручка — 50, Юг/Книга — 500. Продажи Севера — 800, Юга — 500, общая сумма — 1300.

  5. Серии будут магазинами, точки — товарами, ресурс — суммой продаж. Значение Книга складывается до 1250, Ручка — до 50. Количество единиц по всем строкам — 6, а число строк источника — 3.

  6. Каждый урок запускайте отдельно: он заново создаёт схему и настройки в памяти. Упражнения с настройками не формируют отчёт; отдельный урок показывает компоновку и вывод.

  7. Для просмотра объектов поставьте точку останова перед последними Сообщить. ТабличныйДокумент результата урока вывода находится в серверной переменной Результат; код не печатает, не сохраняет файл и не открывает окно клиента.

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

Процедура ВыполнитьПример() Экспорт
    Схема = Новый СхемаКомпоновкиДанных;
    Источник = Схема.ИсточникиДанных.Добавить();
    Источник.Имя = "УчебныеПродажи";
    Источник.ТипИсточникаДанных = "Local";
    Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    Набор.Имя = "СвоиТриСтроки";
    Набор.ИсточникДанных = Источник.Имя;
    Набор.АвтоЗаполнениеДоступныхПолей = Истина;
    Набор.Запрос = "ВЫБРАТЬ
    |    ""Север"" КАК Магазин,
    |    ""Книга"" КАК Наименование,
    |    3 КАК Количество,
    |    750 КАК Сумма
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ ""Север"", ""Ручка"", 1, 50
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ ""Юг"", ""Книга"", 2, 500";
    Для Каждого ИмяРесурса Из СтрРазделить("Сумма,Количество", ",") Цикл
        Ресурс = Схема.ПоляИтога.Добавить();
        Ресурс.ПутьКДанным = ИмяРесурса;
        Ресурс.Выражение = "Сумма(" + ИмяРесурса + ")";
    КонецЦикла;
    Настройки = Схема.НастройкиПоУмолчанию;
    Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));
    Диаграмма.Имя = "УчебныеПродажиПоМагазинам";
    Диаграмма.Использование = Истина;
    Выбранное = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    Выбранное.Поле = Новый ПолеКомпоновкиДанных("Сумма");
    Выбранное.Использование = Истина;
    Серия = Диаграмма.Серии.Добавить();
    Серия.Имя = "Магазины";
    Серия.Использование = Истина;
    ПолеСерии = Серия.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеСерии.Поле = Новый ПолеКомпоновкиДанных("Магазин");
    ПолеСерии.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
    ПолеСерии.Использование = Истина;
    Точка = Диаграмма.Точки.Добавить();
    Точка.Имя = "Товары";
    Точка.Использование = Истина;
    ПолеТочки = Точка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеТочки.Поле = Новый ПолеКомпоновкиДанных("Наименование");
    ПолеТочки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
    ПолеТочки.Использование = Истина;
    Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("ТипДиаграммы", ТипДиаграммы.Гистограмма);
    Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("Заголовок", "Учебные продажи: Север и Юг");
    КонтрольныйЗапрос = Новый Запрос;
    КонтрольныйЗапрос.Текст = Набор.Запрос;
    СвоиСтроки = КонтрольныйЗапрос.Выполнить().Выгрузить();
    Сообщить(СвоиСтроки.Количество() = 3);
    Сообщить(СвоиСтроки.Итог("Сумма") = 1300 И СвоиСтроки.Итог("Количество") = 6);
    Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = Компоновщик.Выполнить(Схема, Настройки);
    Процессор = Новый ПроцессорКомпоновкиДанных;
    Процессор.Инициализировать(Макет);
    ДокументВывода = Новый ТабличныйДокумент;
    Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    Вывод.ОтображатьПроцентВывода = Ложь;
    Вывод.УстановитьДокумент(ДокументВывода);
    Результат = Вывод.Вывести(Процессор, Ложь);
    Сообщить(ТипЗнч(Макет) = Тип("МакетКомпоновкиДанных"));
    Сообщить(Результат = ДокументВывода);
    Сообщить("Строк табличного документа: " + Строка(Результат.ВысотаТаблицы));
    Сообщить("Колонок табличного документа: " + Строка(Результат.ШиринаТаблицы));
    Сообщить("Рисунков в результате: " + Строка(Результат.Рисунки.Количество()));
КонецПроцедуры

Разбор по шагам

  1. Устанавливаем тип Гистограмма и заголовок в параметрах самой диаграммы, не её группы серий.

  2. Контрольный запрос повторяет только собственные константы. Его итог 1300 проверяет данные, но не доказывает правильность отображения отчёта.

  3. Компоновщик создаёт исполняемый макет на основании схемы и настроек. Тип генератора специально не подменяем генератором коллекции значений: нужен табличный документ.

  4. Инициализируем процессор макетом, назначаем приёмник вывода и получаем результат Вывести.

  5. Сравниваем возвращённый документ с приёмником. Размеры и число рисунков выводим диагностически: это элементы оформления результата, а не количество продаж.

Как проверить результат

  1. Первые четыре сравнения ожидаются Истина: 3 строки, сумма 1300 и количество 6, тип макета, тот же документ-приёмник.

  2. В отладчике откройте Результат как табличный документ и проверьте магазины Север/Юг, товары Книга/Ручка и три исходные величины 750, 50, 500. Затем измените 500 в запросе на 600: контрольная сумма должна стать 1400 после соответствующей правки проверки.

  3. Если компоновка выдаёт ошибку, сохраните её текст и место остановки. Проверки типов и констант не заменяют запуск и осмотр диаграммы в 1С.

Ожидаемый результат

Получен маршрут формирования результата в памяти без печати, записи и клиентских окон; фактическое отображение проверяется при учебном запуске в 1С.

На что обратить внимание

  1. Не смешивайте настройки СКД с готовым МакетКомпоновкиДанных: это разные этапы обработки.

  2. Серверный вызов Показать не нужен и не добавлен. Для собственной формы передавайте результат в её реквизит ТабличныйДокумент из серверного обработчика.

  3. Результат.ВысотаТаблицы не равна трём строкам источника; диаграмма и заголовок занимают собственные области.

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

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

Коллекция рисунков поддерживает получение, индекс и удаление по объекту. Очистить применяем только к отдельному черновому документу, не к рабочему макету.

Где и как запускать

Полный модуль управляемой формы собственной учебной внешней обработки. Построение выполняется на сервере без контекста; показ — на клиенте. Вставляйте на уровне модуля.

Подготовка

  1. Создайте новую внешнюю обработку с управляемой основной формой в учебной базе. Каждый урок — отдельная копия модуля.

  2. На форме создайте команду УчебныйПример и перетащите её на форму как кнопку. В действии команды выберите процедуру УчебныйПример(Команда).

  3. Вставьте весь модуль из примера: УчебныйПример, ПостроитьУчебныйДокумент и УчебнаяТаблица. Серверный вызов возвращает собственный табличный документ клиенту; директивы не удаляйте.

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

  5. Показ и ручную проверку выполняйте в тонком клиенте Windows 8.5.1.1343. Каждый урок — отдельная копия формы с пустым модулем до вставки.

&НаКлиенте
Процедура УчебныйПример(Команда)
    ТабДок = ПостроитьУчебныйДокумент();

    ТабДок.Показать("Учебный документ — без печати и сохранения");
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПостроитьУчебныйДокумент()
    ТабДок = Новый ТабличныйДокумент;
    Черновик = Новый ТабличныйДокумент;
    Прямоугольник = Черновик.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Прямоугольник);
    Прямоугольник.Имя = "ЧерноваяРамка";
    Эллипс = Черновик.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Эллипс);
    Эллипс.Имя = "ЧерновойКруг";
    Сообщить(Черновик.Рисунки.Количество() = 2);
    ИндексКруга = Черновик.Рисунки.Индекс(Эллипс);
    Сообщить(Черновик.Рисунки.Получить(ИндексКруга).Имя = "ЧерновойКруг");
    Черновик.Рисунки.Удалить(Прямоугольник);
    Сообщить(Черновик.Рисунки.Количество() = 1);
    Черновик.Рисунки.Очистить();
    Сообщить(Черновик.Рисунки.Количество() = 0);
    Надпись = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
    Надпись.Имя = "ПолезнаяПодпись";
    Надпись.Лево = 5;
    Надпись.Верх = 5;
    Надпись.Ширина = 80;
    Надпись.Высота = 15;
    Надпись.Текст = "Подпись только для экрана";
    Надпись.ВыводитьНаПечать = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    Сообщить(ТабДок.Рисунки.Количество() = 1);
    Сообщить(Не Надпись.ВыводитьНаПечать);
    Возврат ТабДок;
КонецФункции

Разбор по шагам

  1. Две черновые фигуры создаются в отдельном новом документе Черновик. Их можно удалять без ущерба для возвращаемого ТабДок.

  2. Индекс ищет позицию объекта; Получить читает по индексу с 0. Удалить принимает сам объект рисунка, не обязательно число.

  3. Очистить удаляет все рисунки черновика. Возвращаемый документ содержит другую полезную надпись.

  4. ВыводитьНаПечать = Ложь оставляет надпись для экрана и исключает из возможной печати. В упражнении принтер не вызывается.

Как проверить результат

  1. Шесть проверок дают Истина.

  2. В показе остаётся только Подпись только для экрана. Черновые фигуры не передаются клиенту.

Ожидаемый результат

Полный цикл собственной коллекции без удаления элементов чужого макета.

На что обратить внимание

  1. Очистить у рисунков не очищает содержимое ячеек, но удалит все рисунки данного документа.

  2. Имена рисунков не заменяют устойчивую проверку наличия объекта; здесь все экземпляры созданы перед использованием.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.