ГруппировкиМакетаКомпоновкиДанных.Очистить

Методы · Clear

Очищает коллекцию.

Синтаксис

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

ГруппировкиМакетаКомпоновкиДанных.Очистить (DataCompositionTemplateGrouping.Clear)

ГруппировкиМакетаКомпоновкиДанных (DataCompositionTemplateGrouping)

Очистить (Clear)

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

Синтаксис:
Очистить()
Описание:

Очищает коллекцию.

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

Сервер, толстый клиент, внешнее соединение.

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

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

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

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

Редактор полей группировки настоящего макета: позиции, порядок и восстановление

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

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

Полный серверный общий модуль УчебныеКаталогиГрупп85; отдельный полный модуль своей формы ниже.

Подготовка

  1. НОВАЯ пустая файловая база 8.5.1.1343: Имя=УчебныеКаталогиГрупп85, совместимость НеИспользовать, управляемое приложение. Без бизнес-метаданных, расширений и фоновых заданий. Не рабочая КА2/УНФ/УТ/БП. Здесь не запускалось: runtimeVerifiedScenarios=0.

  2. Общий модуль УчебныеКаталогиГрупп85: Сервер=Да, Клиент=Нет, Вызов сервера=Нет, Глобальный=Нет, Привилегированный=Нет. Вставьте весь код одного урока целиком. Все источники и объекты создаются внутри; внешнего ИсходногоОбъекта нет.

  3. Обработка УчебныйРедакторГрупп85 → управляемая форма Пульт → команда Выполнить с одноименным действием и кнопкой. Полный отдельный модуль формы приведен ниже. F7 и обновление только нового учебного стенда перед будущим отдельно разрешенным запуском.

  4. Три собственные строки запроса: Север/Книга/3/750, Север/Ручка/1/50, Юг/Книга/2/500. Серии по Магазин, точки по Наименование, ресурс Сумма. Нет продажи Юг/Ручка. Исходных строк три, единиц шесть, сумма 1300.

  5. Настройки компонуются в настоящий полный МакетКомпоновкиДанных. Независимый черновик получается XDTO-сериализацией всего своего макета в строку памяти; файлов и резервных копий нет. Исходные элементы копии и оригинала не должны быть общими объектами.

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

Процедура ВыполнитьПример() Экспорт
    ПроверитьСвойПустойСтенд();
    Если ПривилегированныйРежим() Тогда
        ВызватьИсключение "Привилегированный режим не нужен";
    КонецЕсли;
    Схема = Новый СхемаКомпоновкиДанных;
    Источник = Схема.ИсточникиДанных.Добавить();
    Источник.Имя = "УчебныеПродажи";
    Источник.ТипИсточникаДанных = "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 Цикл
        Если Каталог.Получить(Номер + Смещение) <> Первичные[Номер] Тогда
            ВызватьИсключение "Изменились объекты или взаимный порядок исходных элементов копии";
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

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

Функция СвойМакетВСтроку(Макет)
    Запись = Новый Запись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.ВыполнитьПример();
КонецПроцедуры

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

  1. Полная схема содержит только свой Local-запрос с константами. Проверяется источник и компонуется обычный макет для ТабличногоДокумента, не генератор коллекции значений.

  2. До правок новый процессор выводит диаграмму. В документе ищется реальный рисунок правильного типа; лишь затем читается его Объект. Проверяются две серии, две точки, подписи и три числовых пересечения.

  3. По настоящим типам обходится тело своего макета. Магазинная группа определяется ее действительным полем Магазин, а не случайным индексом или придуманных конструктором.

  4. Каталог = ГруппаКопии.Группировка имеет тип ГруппировкиМакетаКомпоновкиДанных. Добавить/Вставить возвращают ЭлементГруппировкиМакетаКомпоновкиДанных: копируем действительные ИмяПоля и Выражение своего поля, не придумываем имя ресурса или выражение. Это черновые дубли, не готовая новая группировка.

  5. Получить(0) допустим после проверки непустой коллекции. Отдельный Массив хранит каждый исходный объект каталога копии; он нужен для проверки идентичности и взаимного порядка после вставок.

  6. Добавить() возвращает первый собственный элемент в конце. Вставить(0) возвращает второй в начале. У обеих фабрик НЕТ аргумента Тип, в отличие от разнородного тела макета.

  7. Индекс получает реальный фабричный элемент. Проверяются N+2 элементов, второй на позиции 0, первый на N+1; старые элементы идут с прежним относительным порядком начиная с позиции 1.

  8. Сдвинуть(Первый,-(N+1)) переносит тот же элемент в начало. Старые элементы теперь начинаются с позиции 2. Удалить(Второй) принимает объект, не его имя; остается N+1 элементов, прежний порядок с позиции 1.

  9. Очистить меняет лишь коллекцию копии. Исходные настоящая диаграмма и группа остаются теми же объектами, а весь оригинал сериализуется в неизмененную строку.

  10. Восстановленный создается из полной первоначальной строки; прежние ссылки копии не используются. Сам оригинал и восстановленный макет независимо выводятся новыми процессорами. Проверки смотрят реальные 750/50/500, не одну высоту документа.

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

  1. В черновике размеры N → N+2 → N+2 → N+1 → 0. Каждая проверка индексов и объектов должна пройти; исходный макет остается неизменным.

  2. Три независимо сформированные диаграммы: исходная до редактирования, полностью восстановленная и исходная после редактирования копии. Каждая имеет две серии Север/Юг и две точки Книга/Ручка.

  3. ПолучитьЗначение принимает сначала фактическую точку, затем фактическую серию; его результат — объект ЗначениеДиаграммы. Читается его .Значение: Север/Книга=750, Север/Ручка=50, Юг/Книга=500, сумма=1300.

  4. Юг/Ручка не заполнено: допускается пустое представление или ноль, но не выдуманная четвертая продажа. Проверка не записывает значения в готовый рисунок ради правильного результата.

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

Черновой каталог очищен, но настоящий вывод оригинала и полного восстановления сохраняет три значения продаж и сумму 1300. В 1С здесь не запускалось.

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

  1. Коллекция полей группировки, коллекция группировок диаграммы макета, серии готового рисунка и настройки диаграммы — четыре разных уровня. Фабричные типы и сигнатуры нельзя переносить между ними.

  2. Группировка и Серии владельца — readonly-ссылки на изменяемые коллекции. Присваивание нового Массив вместо них запрещено; методы вызваны на полученном настоящем каталоге копии.

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

  4. После Очистить старые ссылки удаленных элементов не используются. Фабрика каталога не заменяется Новый ЭлементГруппировкиМакетаКомпоновкиДанных или Новый ГруппировкаДиаграммыМакетаКомпоновкиДанных.

  5. Обход и проверки подписи рассчитаны только на эту простую собственную гистограмму, без иерархических группировок, вложенных схем и переоформления подписей. Порядок серий/точек не предполагается; их ищем по фактическому Текст.

  6. Здесь выполнены статические проверки по справке 8.5.1.1343, не запуск в 1С. Работа с базами, сеть, печать и запись файлов не выполняются; эксперимент запускайте только на новом своем стенде.

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

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

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

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

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