Получает элемент коллекции по индексу. Работает аналогично оператору [].
Синтаксис
Получить(<Индекс>)Полное описание, параметры и ограничения
ГруппировкиДиаграммыМакетаКомпоновкиДанных.Получить (DataCompositionTemplateChartGroups.Get)
ГруппировкиДиаграммыМакетаКомпоновкиДанных (DataCompositionTemplateChartGroups)
Получить (Get)
Доступен, начиная с версии 8.1.
Синтаксис:
Получить(<Индекс>)
Параметры:
<Индекс> (обязательный)
Тип: Число.
Расположение элемента в коллекции.
Возвращаемое значение:
Тип: ГруппировкаДиаграммыМакетаКомпоновкиДанных.
Описание:
Получает элемент коллекции по индексу. Работает аналогично оператору [].
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Редактор магазинной оси диаграммы СКД: отдельные группы и полный возврат
В копии скомпилированной диаграммы добавляем и переставляем настоящие каркасы группировок серий. Оригинал защищен; исполняется лишь восстановленный полный макет.
Где и как запускать
Полный серверный общий модуль УчебныеКаталогиГрупп85; отдельный полный модуль своей формы ниже.
Подготовка
НОВАЯ пустая файловая база 8.5.1.1343: Имя=УчебныеКаталогиГрупп85, совместимость НеИспользовать, управляемое приложение. Без бизнес-метаданных, расширений и фоновых заданий. Не рабочая КА2/УНФ/УТ/БП. Здесь не запускалось: runtimeVerifiedScenarios=0.
Общий модуль УчебныеКаталогиГрупп85: Сервер=Да, Клиент=Нет, Вызов сервера=Нет, Глобальный=Нет, Привилегированный=Нет. Вставьте весь код одного урока целиком. Все источники и объекты создаются внутри; внешнего ИсходногоОбъекта нет.
Обработка УчебныйРедакторГрупп85 → управляемая форма Пульт → команда Выполнить с одноименным действием и кнопкой. Полный отдельный модуль формы приведен ниже. F7 и обновление только нового учебного стенда перед будущим отдельно разрешенным запуском.
Три собственные строки запроса: Север/Книга/3/750, Север/Ручка/1/50, Юг/Книга/2/500. Серии по Магазин, точки по Наименование, ресурс Сумма. Нет продажи Юг/Ручка. Исходных строк три, единиц шесть, сумма 1300.
Настройки компонуются в настоящий полный МакетКомпоновкиДанных. Независимый черновик получается XDTO-сериализацией всего своего макета в строку памяти; файлов и резервных копий нет. Исходные элементы копии и оригинала не должны быть общими объектами.
Временные дубли поля или каркасы группировки нужны для освоения каталога, а не для исполнения. Пустой/неполный черновик никогда не передается процессору. Для настоящего повторного вывода восстанавливается весь макет, включая области и ресурсные связи.
Процедура ВыполнитьПример() Экспорт
ПроверитьСвойПустойСтенд();
Если ПривилегированныйРежим() Тогда
ВызватьИсключение "Привилегированный режим не нужен";
КонецЕсли;
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныеПродажи";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "СвоиТриСтроки";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
| ""Север"" КАК Магазин,
| ""Книга"" КАК Наименование,
| 3 КАК Количество,
| 750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Север"", ""Ручка"", 1, 50
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Юг"", ""Книга"", 2, 500";
Для Каждого ИмяРесурса Из СтрРазделить("Сумма,Количество", ",") Цикл
Ресурс = Схема.ПоляИтога.Добавить();
Ресурс.ПутьКДанным = ИмяРесурса;
Ресурс.Выражение = "Сумма(" + ИмяРесурса + ")";
КонецЦикла;
Настройки = Схема.НастройкиПоУмолчанию;
Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));
Диаграмма.Имя = "УчебныеПродажиПоМагазинам";
Диаграмма.Использование = Истина;
Выбранное = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных("Сумма");
Выбранное.Использование = Истина;
Серия = Диаграмма.Серии.Добавить();
Серия.Имя = "Магазины";
Серия.Использование = Истина;
ПолеСерии = Серия.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеСерии.Поле = Новый ПолеКомпоновкиДанных("Магазин");
ПолеСерии.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
ПолеСерии.Использование = Истина;
Точка = Диаграмма.Точки.Добавить();
Точка.Имя = "Товары";
Точка.Использование = Истина;
ПолеТочки = Точка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеТочки.Поле = Новый ПолеКомпоновкиДанных("Наименование");
ПолеТочки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
ПолеТочки.Использование = Истина;
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("ТипДиаграммы", ТипДиаграммы.Гистограмма);
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("Заголовок", "Свои продажи: магазины и товары");
КонтрольныйЗапрос = Новый Запрос;
КонтрольныйЗапрос.Текст = Набор.Запрос;
ИсходныеСтроки = КонтрольныйЗапрос.Выполнить().Выгрузить();
Если ИсходныеСтроки.Количество() <> 3 Или ИсходныеСтроки.Итог("Сумма") <> 1300 Тогда
ВызватьИсключение "Изменились собственные учебные данные";
КонецЕсли;
Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = Компоновщик.Выполнить(Схема, Настройки);
ПроверитьСвоюДиаграммуПродаж(Макет);
ИсходнаяДиаграмма = ПолучитьСвоюДиаграммуМакета(Макет);
ИсходнаяГруппа = ПолучитьСвоюГруппуМагазинов(ИсходнаяДиаграмма);
ТекстМакета = СвойМакетВСтроку(Макет);
Черновик = СвойМакетИзСтроки(ТекстМакета);
ДиаграммаКопии = ПолучитьСвоюДиаграммуМакета(Черновик);
ГруппаКопии = ПолучитьСвоюГруппуМагазинов(ДиаграммаКопии);
Если ГруппаКопии.Группировка.Количество() <> 1 Тогда
ВызватьИсключение "В этой простой оси ожидается одно поле Магазин";
КонецЕсли;
ИсходноеПоле = ГруппаКопии.Группировка.Получить(0);
Если ИсходноеПоле.ИмяПоля <> "Магазин" Тогда
ВызватьИсключение "Нельзя редактировать случайную другую группировку";
КонецЕсли;
Каталог = ДиаграммаКопии.Серии;
ИсходноеКоличество = Каталог.Количество();
Если ИсходноеКоличество < 1 Тогда
ВызватьИсключение "Ожидается непустой настоящий каталог собственного макета";
КонецЕсли;
Первичные = Новый Массив;
Для Каждого Элемент Из Каталог Цикл
Первичные.Добавить(Элемент);
КонецЦикла;
ПроверитьСвоиПервичныеЭлементы(Каталог, Первичные, 0);
Первый = Каталог.Добавить();
ЗаполнитьСвойЧерновойЭлемент(Первый, ИсходноеПоле);
Второй = Каталог.Вставить(0);
ЗаполнитьСвойЧерновойЭлемент(Второй, ИсходноеПоле);
Первый.Имя = "ЧерноваяГруппаА";
Первый.Идентификатор = "ЧерноваяГруппаА";
Второй.Имя = "ЧерноваяГруппаБ";
Второй.Идентификатор = "ЧерноваяГруппаБ";
Если Каталог.Количество() <> ИсходноеКоличество + 2
Или Каталог.Индекс(Второй) <> 0 Или Каталог.Индекс(Первый) <> ИсходноеКоличество + 1
Или Каталог.Получить(0) <> Второй Тогда
ВызватьИсключение "Не совпали размер, индексы и фабричные элементы черновика";
КонецЕсли;
ПроверитьСвоиПервичныеЭлементы(Каталог, Первичные, 1);
Каталог.Сдвинуть(Первый, -(ИсходноеКоличество + 1));
Если Каталог.Получить(0) <> Первый Или Каталог.Индекс(Второй) <> 1 Тогда
ВызватьИсключение "Не переместился тот же собственный элемент";
КонецЕсли;
ПроверитьСвоиПервичныеЭлементы(Каталог, Первичные, 2);
Каталог.Удалить(Второй);
Если Каталог.Количество() <> ИсходноеКоличество + 1 Или Каталог.Получить(0) <> Первый Тогда
ВызватьИсключение "Удалить должен затронуть лишь второй собственный элемент";
КонецЕсли;
ПроверитьСвоиПервичныеЭлементы(Каталог, Первичные, 1);
Каталог.Очистить();
Если Каталог.Количество() <> 0 Тогда
ВызватьИсключение "Каталог черновика не очищен";
КонецЕсли;
Если ПолучитьСвоюДиаграммуМакета(Макет) <> ИсходнаяДиаграмма
Или ПолучитьСвоюГруппуМагазинов(ИсходнаяДиаграмма) <> ИсходнаяГруппа
Или СвойМакетВСтроку(Макет) <> ТекстМакета Тогда
ВызватьИсключение "Редактирование копии изменило исходный полный макет";
КонецЕсли;
Восстановленный = СвойМакетИзСтроки(ТекстМакета);
ВосстановленнаяДиаграмма = ПолучитьСвоюДиаграммуМакета(Восстановленный);
ВосстановленнаяГруппа = ПолучитьСвоюГруппуМагазинов(ВосстановленнаяДиаграмма);
Если ВосстановленнаяДиаграмма.Серии.Количество() <> ИсходноеКоличество Тогда
ВызватьИсключение "Не восстановлен полный каталог магазинной оси";
КонецЕсли;
ПроверитьСвоюДиаграммуПродаж(Восстановленный);
ПроверитьСвоюДиаграммуПродаж(Макет);
Сообщить("Черновик очищен без вывода; полные диаграммы сохранили 750, 50, 500 и сумму 1300.");
КонецПроцедуры
Функция ПолучитьСвоюДиаграммуМакета(Макет)
Найденные = Новый Массив;
СобратьСвоиДиаграммы(Макет.Тело, Найденные);
Если Найденные.Количество() <> 1 Тогда
ВызватьИсключение "В своем макете нужна ровно одна диаграмма";
КонецЕсли;
Возврат Найденные[0];
КонецФункции
Процедура СобратьСвоиДиаграммы(Тело, Найденные)
Для Каждого Часть Из Тело Цикл
Если ТипЗнч(Часть) = Тип("ДиаграммаМакетаКомпоновкиДанных") Тогда
Найденные.Добавить(Часть);
ИначеЕсли ТипЗнч(Часть) = Тип("ГруппировкаМакетаКомпоновкиДанных") Тогда
СобратьСвоиДиаграммы(Часть.Тело, Найденные);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ПолучитьСвоюГруппуМагазинов(ЧастьДиаграммы)
Найденные = Новый Массив;
СобратьСвоиМагазинныеГруппы(ЧастьДиаграммы.Серии, Найденные);
Если Найденные.Количество() <> 1 Тогда
ВызватьИсключение "Нужна одна настоящая группировка серий по Магазин";
КонецЕсли;
Возврат Найденные[0];
КонецФункции
Процедура СобратьСвоиМагазинныеГруппы(ТелоОси, Найденные)
Для Каждого Группа Из ТелоОси Цикл
Если ТипЗнч(Группа) = Тип("ГруппировкаДиаграммыМакетаКомпоновкиДанных") Тогда
Для Каждого Поле Из Группа.Группировка Цикл
Если Поле.ИмяПоля = "Магазин" Тогда
Найденные.Добавить(Группа);
Прервать;
КонецЕсли;
КонецЦикла;
СобратьСвоиМагазинныеГруппы(Группа.Тело, Найденные);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьСвоиПервичныеЭлементы(Каталог, Первичные, Смещение)
Для Номер = 0 По Первичные.Количество() - 1 Цикл
Если Каталог.Получить(Номер + Смещение) <> Первичные[Номер] Тогда
ВызватьИсключение "Изменились объекты или взаимный порядок исходных элементов копии";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьСвойЧерновойЭлемент(Элемент, ИсходноеПоле)
Если ТипЗнч(Элемент) <> Тип("ГруппировкаДиаграммыМакетаКомпоновкиДанных") Тогда
ВызватьИсключение "Фабрика оси вернула не группировку диаграммы макета";
КонецЕсли;
Элемент.Имя = "ЧерноваяМагазиннаяГруппа";
Элемент.Идентификатор = "ЧерноваяМагазиннаяГруппа";
Элемент.КоличествоЗаписей = -1;
Элемент.ПроцентЗаписей = 100;
Поле = Элемент.Группировка.Добавить();
Поле.ИмяПоля = ИсходноеПоле.ИмяПоля;
Поле.Выражение = ИсходноеПоле.Выражение;
КонецПроцедуры
Функция СвойМакетВСтроку(Макет)
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(Запись, Макет);
Возврат Запись.Закрыть();
КонецФункции
Функция СвойМакетИзСтроки(СтрокаXML)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(СтрокаXML);
Попытка
Макет = СериализаторXDTO.ПрочитатьXML(Чтение, Тип("МакетКомпоновкиДанных"));
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если ТипЗнч(Макет) <> Тип("МакетКомпоновкиДанных") Тогда
ВызватьИсключение "XDTO должен вернуть полный настоящий макет, не текст или Неопределено";
КонецЕсли;
Возврат Макет;
КонецФункции
Функция СформироватьСвойДокумент(СвойМакет)
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(СвойМакет);
Документ = Новый ТабличныйДокумент;
Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Вывод.ОтображатьПроцентВывода = Ложь;
Вывод.УстановитьДокумент(Документ);
РезультатВывода = Вывод.Вывести(Процессор, Ложь);
Если ТипЗнч(РезультатВывода) <> Тип("ТабличныйДокумент") Тогда
ВызватьИсключение "Не получен собственный табличный документ";
КонецЕсли;
Возврат РезультатВывода;
КонецФункции
Процедура ПроверитьСвоюДиаграммуПродаж(Макет)
Документ = СформироватьСвойДокумент(Макет);
Найденные = Новый Массив;
Для Каждого Рисунок Из Документ.Рисунки Цикл
Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Диаграмма Тогда
ГотоваяДиаграмма = Рисунок.Объект;
Если ТипЗнч(ГотоваяДиаграмма) <> Тип("Диаграмма") Тогда
ВызватьИсключение "Рисунок не содержит обычную готовую диаграмму";
КонецЕсли;
Найденные.Добавить(ГотоваяДиаграмма);
КонецЕсли;
КонецЦикла;
Если Найденные.Количество() <> 1 Тогда
ВызватьИсключение "Нужен один фактически выведенный рисунок диаграммы";
КонецЕсли;
ГотоваяДиаграмма = Найденные[0];
Если ГотоваяДиаграмма.Серии.Количество() <> 2 Или ГотоваяДиаграмма.Точки.Количество() <> 2 Тогда
ВызватьИсключение "Не получены две магазинные серии и две товарные точки";
КонецЕсли;
Север = Неопределено;
Юг = Неопределено;
Для Каждого Серия Из ГотоваяДиаграмма.Серии Цикл
Если Серия.Текст = "Север" Тогда
Север = Серия;
ИначеЕсли Серия.Текст = "Юг" Тогда
Юг = Серия;
КонецЕсли;
КонецЦикла;
Книга = Неопределено;
Ручка = Неопределено;
Для Каждого Точка Из ГотоваяДиаграмма.Точки Цикл
Если Точка.Текст = "Книга" Тогда
Книга = Точка;
ИначеЕсли Точка.Текст = "Ручка" Тогда
Ручка = Точка;
КонецЕсли;
КонецЦикла;
Если Север = Неопределено Или Юг = Неопределено Или Книга = Неопределено Или Ручка = Неопределено Тогда
ВызватьИсключение "Проверьте реальные подписи осей своей простой диаграммы";
КонецЕсли;
СеверКнига = ГотоваяДиаграмма.ПолучитьЗначение(Книга, Север).Значение;
СеверРучка = ГотоваяДиаграмма.ПолучитьЗначение(Ручка, Север).Значение;
ЮгКнига = ГотоваяДиаграмма.ПолучитьЗначение(Книга, Юг).Значение;
Если ТипЗнч(СеверКнига) <> Тип("Число") Или ТипЗнч(СеверРучка) <> Тип("Число")
Или ТипЗнч(ЮгКнига) <> Тип("Число") Тогда
ВызватьИсключение "Три настоящие продажи должны быть числовыми значениями рисунка";
КонецЕсли;
Если СеверКнига <> 750 Или СеверРучка <> 50 Или ЮгКнига <> 500
Или СеверКнига + СеверРучка + ЮгКнига <> 1300 Тогда
ВызватьИсключение "Изменились настоящие значения выведенной диаграммы";
КонецЕсли;
ЮгРучка = ГотоваяДиаграмма.ПолучитьЗначение(Ручка, Юг).Значение;
Если ЗначениеЗаполнено(ЮгРучка) Тогда
ВызватьИсключение "В исходном запросе нет продажи Юг/Ручка";
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыУчебныйРедакторГрупп85.Пульт
УчебныеКаталогиГрупп85 → Обработки → УчебныйРедакторГрупп85 → Формы → Пульт → Модуль
Полный модуль собственной управляемой формы; здесь не выполнялся.
&НаКлиенте
Процедура Выполнить(Команда)
ВыполнитьНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ВыполнитьНаСервере()
УчебныеКаталогиГрупп85.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
Полная схема содержит только свой Local-запрос с константами. Проверяется источник и компонуется обычный макет для ТабличногоДокумента, не генератор коллекции значений.
До правок новый процессор выводит диаграмму. В документе ищется реальный рисунок правильного типа; лишь затем читается его Объект. Проверяются две серии, две точки, подписи и три числовых пересечения.
По настоящим типам обходится тело своего макета. Магазинная группа определяется ее действительным полем Магазин, а не случайным индексом или придуманных конструктором.
Каталог = ДиаграммаКопии.Серии имеет тип ГруппировкиДиаграммыМакетаКомпоновкиДанных. Фабрика возвращает ГруппировкаДиаграммыМакетаКомпоновкиДанных: у нее собственные имя/идентификатор и вложенный каталог полей. Два каркаса имеют разные свои имена; скопированное реальное поле не создает отсутствующие области тела.
Получить(0) допустим после проверки непустой коллекции. Отдельный Массив хранит каждый исходный объект каталога копии; он нужен для проверки идентичности и взаимного порядка после вставок.
Добавить() возвращает первый собственный элемент в конце. Вставить(0) возвращает второй в начале. У обеих фабрик НЕТ аргумента Тип, в отличие от разнородного тела макета.
Индекс получает реальный фабричный элемент. Проверяются N+2 элементов, второй на позиции 0, первый на N+1; старые элементы идут с прежним относительным порядком начиная с позиции 1.
Сдвинуть(Первый,-(N+1)) переносит тот же элемент в начало. Старые элементы теперь начинаются с позиции 2. Удалить(Второй) принимает объект, не его имя; остается N+1 элементов, прежний порядок с позиции 1.
Очистить меняет лишь коллекцию копии. Исходные настоящая диаграмма и группа остаются теми же объектами, а весь оригинал сериализуется в неизмененную строку.
Восстановленный создается из полной первоначальной строки; прежние ссылки копии не используются. Сам оригинал и восстановленный макет независимо выводятся новыми процессорами. Проверки смотрят реальные 750/50/500, не одну высоту документа.
Как проверить результат
В черновике размеры N → N+2 → N+2 → N+1 → 0. Каждая проверка индексов и объектов должна пройти; исходный макет остается неизменным.
Три независимо сформированные диаграммы: исходная до редактирования, полностью восстановленная и исходная после редактирования копии. Каждая имеет две серии Север/Юг и две точки Книга/Ручка.
ПолучитьЗначение принимает сначала фактическую точку, затем фактическую серию; его результат — объект ЗначениеДиаграммы. Читается его .Значение: Север/Книга=750, Север/Ручка=50, Юг/Книга=500, сумма=1300.
Юг/Ручка не заполнено: допускается пустое представление или ноль, но не выдуманная четвертая продажа. Проверка не записывает значения в готовый рисунок ради правильного результата.
Ожидаемый результат
Черновой каталог очищен, но настоящий вывод оригинала и полного восстановления сохраняет три значения продаж и сумму 1300. В 1С здесь не запускалось.
На что обратить внимание
Коллекция полей группировки, коллекция группировок диаграммы макета, серии готового рисунка и настройки диаграммы — четыре разных уровня. Фабричные типы и сигнатуры нельзя переносить между ними.
Группировка и Серии владельца — readonly-ссылки на изменяемые коллекции. Присваивание нового Массив вместо них запрещено; методы вызваны на полученном настоящем каталоге копии.
Неполная копия содержит временные дубли/каркасы без согласованных областей. Ее нельзя исполнять и нельзя восстанавливать лишь добавлением одного поля: восстанавливается весь собственный макет.
После Очистить старые ссылки удаленных элементов не используются. Фабрика каталога не заменяется Новый ЭлементГруппировкиМакетаКомпоновкиДанных или Новый ГруппировкаДиаграммыМакетаКомпоновкиДанных.
Обход и проверки подписи рассчитаны только на эту простую собственную гистограмму, без иерархических группировок, вложенных схем и переоформления подписей. Порядок серий/точек не предполагается; их ищем по фактическому Текст.
Здесь выполнены статические проверки по справке 8.5.1.1343, не запуск в 1С. Работа с базами, сеть, печать и запись файлов не выполняются; эксперимент запускайте только на новом своем стенде.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.