Глобальный контекст.ПолучитьРазмерДанныхБазыДанных

Методы · GetDatabaseDataSize

Метод возвращает размер данных в таблицах в информационной базе для переданных объектов (в байтах). Будут получены все данные, которые доступны пользователю для чтения. Метод не учитывает размер истории данных, а также расширений конфигурации. Если необходимо получить размер только данных, участвующих в разделении, следует установить значения для набора разделителей (тем самым "перейдя" в нужную область) и установить в <ОбластьПоиска> текущий набор разделителей.

Синтаксис

ПолучитьРазмерДанныхБазыДанных(<ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>)

Примеры платформы

МассивИменМетаданных = Новый Массив();
МассивИменМетаданных.Добавить("Справочник.Номенклатура");
МассивИменМетаданных.Добавить("Документ.РасходнаяНакладная");
РазмерДанных=
    ПолучитьРазмерДанныхБазыДанных(Новый Массив(),МассивИменМетаданных);
Полное описание, параметры и ограничения

Глобальный контекст.ПолучитьРазмерДанныхБазыДанных (Global context.GetDatabaseDataSize)

Глобальный контекст (Global context)

ПолучитьРазмерДанныхБазыДанных (GetDatabaseDataSize)

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

Синтаксис:
ПолучитьРазмерДанныхБазыДанных(<ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>)
Параметры:

<ОбластьПоиска> (необязательный)
Тип: Неопределено, Массив.
Определяет область поиска объектов путем задания комбинации разделителей, в состав которых включены объекты метаданных, по которым нужно посчитать размер данных. В данном параметре указываются не значения, а сами разделители (общий реквизит, разделяющий данные).
Элемент массива имеет тип Массив.
Элемент вложенного массива имеет тип:
Объект метаданных – Общий реквизит, разделяющий данные.

Строка – имя общего реквизита, разделяющего данные. Не полное, а короткое имя.
Допустимые значения:
Неопределено - выбирает все объекты метаданных, если параметр <ВключитьОбъекты> также имеет значение Неопределено. Иначе равносильно передаче пустого массива.

Массив с массивами разделителей - массив комбинаций разделителей, определяющий область учета данных:
Если массив пуст, то никакие объекты не выбираются и перечень объектов определяется другими параметрами.

Если массив содержит несколько комбинаций разделителей, то выбираются все объекты метаданных, состав разделителей которых полностью равен одной из заданных комбинаций.

Значение по умолчанию: Неопределено.

<ВключитьОбъекты> (необязательный)
Тип: Неопределено, Массив.
Позволяет явно указать объекты метаданных, которые должны присутствовать при подсчете размера данных.
Элементом массива могут быть:
Объект метаданных.

Строка – полное имя объекта метаданных.
Допустимые значения:
Неопределено или пустой массив - нет объектов, которые необходимо дополнительно включить в область подсчета.

Массив объектов метаданных.

Значение по умолчанию: Неопределено.

<ИсключитьОбъекты> (необязательный)
Тип: Неопределено, Массив.
Позволяет явно указать объекты метаданных, которые следует исключить из подсчета данных.
Тип: Массив
Элементом массива могут быть:
Объект метаданных.

Строка – полное имя объекта метаданных.
Допустимые значения:
Неопределено или пустой массив - нет объектов, которые необходимо дополнительно исключить.

Массив объектов метаданных.

Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: Число.
Возвращает размер в байтах.
Описание:

Метод возвращает размер данных в таблицах в информационной базе для переданных объектов (в байтах). Будут получены все данные, которые доступны пользователю для чтения.
Метод не учитывает размер истории данных, а также расширений конфигурации.
Если необходимо получить размер только данных, участвующих в разделении, следует установить значения для набора разделителей (тем самым "перейдя" в нужную область) и установить в <ОбластьПоиска> текущий набор разделителей.

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

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

Примечание:
Выполнение метода может занять длительное время при большом объеме данных.
Пример:

МассивИменМетаданных = Новый Массив();
МассивИменМетаданных.Добавить("Справочник.Номенклатура");
МассивИменМетаданных.Добавить("Документ.РасходнаяНакладная");
РазмерДанных=
ПолучитьРазмерДанныхБазыДанных(Новый Массив(),МассивИменМетаданных);

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

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

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

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

Размер данных своих справочников: реальные байты, записи и исключение

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

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

Сервер; свой неглобальный непривилегированный общий модуль УчебныйОтчетРазмеров85. Настоящие менеджеры и выборки не передаются клиенту; возвращается только Строка.

Подготовка

  1. Опыт только в своей НОВОЙ пустой файловой базе платформы 8.5.1.1343, не в рабочей УТ, КА, УНФ или БП и не в их копии. Вручную создайте базу C:\1c-labs\OwnDatabaseSize85_78a948e2-ee27-4ccf-91fb-84aa3cc61ff2\IB. Имя конфигурации УчебныйРазмерДанных85, версия 78a948e2-ee27-4ccf-91fb-84aa3cc61ff2; режим совместимости Не использовать. Эти отличительные метки защищают от случайного выбора, но не доказывают владение базой.

  2. Конфигурация → Справочники: создать только УчебныеТоварыРазмер85 и УчебныеЗаметкиРазмер85. Оба неиерархические, без владельцев, табличных частей, предопределённых элементов и обработчиков. Длина кода 10, тип кода Строка; длина наименования 100. Не добавляйте другие справочники, разделители данных, расширения, обмены, историю данных или фоновые задания.

  3. В своём учебном интерфейсе вручную ввести ровно три товара: код T0001 / Монитор, T0002 / Клавиатура, T0003 / Мышь. В заметках ровно две записи: N0001 / Короткая заметка, N0002 / Длинная учебная заметка без специальных данных. Это свои вымышленные данные, не клиентские файлы. Проверьте точные коды и наименования, без пробелов по краям.

  4. Самостоятельно дать своему учебному пользователю чтение обоих справочников и доступ к собственной форме и командам; для ручного ввода пяти записей нужны соответствующие права в своей лаборатории. Метод размера считает только данные, доступные текущему пользователю для чтения. Не требуется придумывать администратора SQL или монопольный режим. Во время отчёта никакие другие сеансы или задания не меняют эти данные.

  5. Общие → Общие модули: УчебныйОтчетРазмеров85. Сервер=Да; Глобальный=Нет; Привилегированный=Нет; Вызов сервера=Нет; оба свойства Клиент=Нет; Внешнее соединение=Нет; Повторное использование возвращаемых значений=Не использовать. Основной блок вставьте ЦЕЛИКОМ в пустой модуль. Его внутренняя функция проверяет записи обоих собственных справочников.

  6. Общие → Общие формы: управляемая форма РазмерДанных85. Добавить Согласен85: Булево, вывести флажком; Остановлен85: Булево, вывести только для чтения; Результат85: Строка неограниченной длины, вывести многострочным полем только для чтения. В новом экземпляре реально проверить Остановлен85=Ложь и пустое согласие; код не исправляет эти признаки за вас.

  7. В свойствах формы: АвтоматическоеСохранениеДанныхВНастройках=АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать и СохранениеДанныхВНастройках=СохранениеДанныхФормыВНастройках.НеИспользовать. Это два разных перечисления, не Булево. Создать команду формы Измерить85, Действие=Измерить85, вывести кнопку. Второй блок вставьте ЦЕЛИКОМ в пустой модуль формы.

  8. Общие → Общие команды: ОткрытьРазмерДанных85, без параметра, включить в свою учебную подсистему. Третий блок вставьте ЦЕЛИКОМ в пустой модуль команды. При нажатии платформа сама передаёт настоящие параметры ОбработкаКоманды; не вызывайте обработчики вручную.

  9. Обновить конфигурацию своей учебной базы и проверить модули F7. Запустить толстый управляемый клиент, открыть форму общей командой. Проверить подготовленные пять записей, отметить согласие и нажать Измерить85. На сервер передаётся только захваченное Булево; клиент получает только строковый отчёт. Всё создание базы, ввод записей, компиляция и запуск — будущая ручная подготовка: здесь 1С не запускалась.

Функция ПолучитьОтчетРазмеров85() Экспорт
    Среда = Новый СистемнаяИнформация();
    Соединение = СтрокаСоединенияИнформационнойБазы();
    Если ТипЗнч(Среда) <> Тип("СистемнаяИнформация")
        Или ТипЗнч(Соединение) <> Тип("Строка") Тогда
        ВызватьИсключение "Не подтверждены среда и строка собственного соединения";
    КонецЕсли;
    Если Соединение <> "File=""C:\1c-labs\OwnDatabaseSize85_78a948e2-ee27-4ccf-91fb-84aa3cc61ff2\IB"";" Или Метаданные.Справочники.Количество() <> 2 Тогда
        ВызватьИсключение "Нужна точно подготовленная новая собственная учебная база";
    КонецЕсли;
    Товары = Метаданные.Справочники.УчебныеТоварыРазмер85;
    Заметки = Метаданные.Справочники.УчебныеЗаметкиРазмер85;
    ИмяТоваров = Товары.ПолноеИмя();
    ИмяЗаметок = Заметки.ПолноеИмя();
    Если ТипЗнч(ИмяТоваров) <> Тип("Строка") Или ТипЗнч(ИмяЗаметок) <> Тип("Строка") Тогда
        ВызватьИсключение "Не получены настоящие полные имена своих справочников";
    КонецЕсли;
    Если ИмяТоваров <> "Справочник.УчебныеТоварыРазмер85"
        Или ИмяЗаметок <> "Справочник.УчебныеЗаметкиРазмер85" Тогда
        ВызватьИсключение "Имена справочников не соответствуют своей подготовке";
    КонецЕсли;
    СтрокТоваров = ПроверитьЗаписи85(Истина);
    СтрокЗаметок = ПроверитьЗаписи85(Ложь);
    Если ТипЗнч(СтрокТоваров) <> Тип("Число") Или СтрокТоваров <> 3
        Или ТипЗнч(СтрокЗаметок) <> Тип("Число") Или СтрокЗаметок <> 2 Тогда
        ВызватьИсключение "Не подтверждены фактические три и две свои записи";
    КонецЕсли;
    Область = Новый Массив();
    ВключитьТовары = Новый Массив();
    ВключитьЗаметки = Новый Массив();
    ВключитьОба = Новый Массив();
    ИсключитьЗаметки = Новый Массив();
    НеИсключать = Новый Массив();
    ВключитьТовары.Добавить(Товары);
    ВключитьЗаметки.Добавить(Заметки);
    ВключитьОба.Добавить(Товары);
    ВключитьОба.Добавить(Заметки);
    ИсключитьЗаметки.Добавить(Заметки);
    Если Область.Количество() <> 0 Или ВключитьТовары.Количество() <> 1
        Или ВключитьЗаметки.Количество() <> 1 Или ВключитьОба.Количество() <> 2
        Или ИсключитьЗаметки.Количество() <> 1 Или НеИсключать.Количество() <> 0 Тогда
        ВызватьИсключение "Неправильно собраны собственные области измерения";
    КонецЕсли;
    БайтТоваров = ПолучитьРазмерДанныхБазыДанных(Область, ВключитьТовары, НеИсключать);
    БайтЗаметок = ПолучитьРазмерДанныхБазыДанных(Область, ВключитьЗаметки, НеИсключать);
    БайтОба = ПолучитьРазмерДанныхБазыДанных(Область, ВключитьОба, НеИсключать);
    БайтБезЗаметок = ПолучитьРазмерДанныхБазыДанных(Область, ВключитьОба, ИсключитьЗаметки);
    Если ТипЗнч(БайтТоваров) <> Тип("Число") Или ТипЗнч(БайтЗаметок) <> Тип("Число")
        Или ТипЗнч(БайтОба) <> Тип("Число") Или ТипЗнч(БайтБезЗаметок) <> Тип("Число") Тогда
        ВызватьИсключение "Метод не вернул четыре настоящих числовых размера";
    КонецЕсли;
    Если БайтТоваров < 0 Или БайтЗаметок < 0 Или БайтОба < 0 Или БайтБезЗаметок < 0 Тогда
        ВызватьИсключение "Отрицательный размер нельзя показывать как успешный результат";
    КонецЕсли;
    ПовторТоваров = ПроверитьЗаписи85(Истина);
    ПовторЗаметок = ПроверитьЗаписи85(Ложь);
    Если ТипЗнч(ПовторТоваров) <> Тип("Число") Или ПовторТоваров <> СтрокТоваров
        Или ТипЗнч(ПовторЗаметок) <> Тип("Число") Или ПовторЗаметок <> СтрокЗаметок Тогда
        ВызватьИсключение "Подготовленные свои записи изменились во время чтения";
    КонецЕсли;
    МиБТоваров = БайтТоваров / 1048576;
    МиБЗаметок = БайтЗаметок / 1048576;
    СреднееТоваров = БайтТоваров / СтрокТоваров;
    СреднееЗаметок = БайтЗаметок / СтрокЗаметок;
    Разность = БайтБезЗаметок - БайтТоваров;
    Если БайтТоваров > БайтЗаметок Тогда
        Сравнение = "Первый замер больше: " + ИмяТоваров;
    ИначеЕсли БайтТоваров < БайтЗаметок Тогда
        Сравнение = "Второй замер больше: " + ИмяЗаметок;
    Иначе
        Сравнение = "Отдельные замеры равны";
    КонецЕсли;
    Отчет = ИмяТоваров + ": записей " + Строка(СтрокТоваров)
        + "; байтов " + Строка(БайтТоваров) + "; МиБ " + Строка(МиБТоваров)
        + "; среднее байт/запись " + Строка(СреднееТоваров) + Символы.ПС
        + ИмяЗаметок + ": записей " + Строка(СтрокЗаметок)
        + "; байтов " + Строка(БайтЗаметок) + "; МиБ " + Строка(МиБЗаметок)
        + "; среднее байт/запись " + Строка(СреднееЗаметок) + Символы.ПС
        + "Оба справочника: байтов " + Строка(БайтОба) + Символы.ПС
        + "Оба, исключая заметки: байтов " + Строка(БайтБезЗаметок) + Символы.ПС
        + "Разность с отдельным замером товаров: " + Строка(Разность) + Символы.ПС
        + Сравнение;
    Возврат Отчет;
КонецФункции

Функция ПроверитьЗаписи85(ЭтоТовары)
    Если ТипЗнч(ЭтоТовары) <> Тип("Булево") Тогда
        ВызватьИсключение "Внутренний выбор справочника должен быть Булево";
    КонецЕсли;
    Коды = Новый Массив();
    Имена = Новый Массив();
    Если ЭтоТовары Тогда
        Менеджер = Справочники.УчебныеТоварыРазмер85;
        ТипСсылки = Тип("СправочникСсылка.УчебныеТоварыРазмер85");
        Коды.Добавить("T0001");
        Коды.Добавить("T0002");
        Коды.Добавить("T0003");
        Имена.Добавить("Монитор");
        Имена.Добавить("Клавиатура");
        Имена.Добавить("Мышь");
    Иначе
        Менеджер = Справочники.УчебныеЗаметкиРазмер85;
        ТипСсылки = Тип("СправочникСсылка.УчебныеЗаметкиРазмер85");
        Коды.Добавить("N0001");
        Коды.Добавить("N0002");
        Имена.Добавить("Короткая заметка");
        Имена.Добавить("Длинная учебная заметка без специальных данных");
    КонецЕсли;
    Ожидается = Коды.Количество();
    Если Ожидается <> Имена.Количество() Или Ожидается < 2 Или Ожидается > 3 Тогда
        ВызватьИсключение "Не составлен полный собственный список ожидаемых записей";
    КонецЕсли;
    Найдены = Новый Массив();
    Для Индекс = 0 По Ожидается - 1 Цикл
        Найдены.Добавить(Ложь);
    КонецЦикла;
    Выборка = Менеджер.Выбрать();
    Количество = 0;
    Пока Истина Цикл
        ЕстьСтрока = Выборка.Следующий();
        Если ТипЗнч(ЕстьСтрока) <> Тип("Булево") Тогда
            ВызватьИсключение "Выборка не вернула настоящий признак следующей записи";
        КонецЕсли;
        Если Не ЕстьСтрока Тогда
            Прервать;
        КонецЕсли;
        Ссылка = Выборка.Ссылка;
        Код = Выборка.Код;
        Имя = Выборка.Наименование;
        Если ТипЗнч(Ссылка) <> ТипСсылки Или ТипЗнч(Код) <> Тип("Строка")
            Или ТипЗнч(Имя) <> Тип("Строка") Тогда
            ВызватьИсключение "Нужны настоящие ссылки и строковые поля своего справочника";
        КонецЕсли;
        Совпадение = -1;
        Для Индекс = 0 По Ожидается - 1 Цикл
            Если Код = Коды[Индекс] И Имя = Имена[Индекс] Тогда
                Совпадение = Индекс;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        Если Совпадение < 0 Тогда
            ВызватьИсключение "Найдена не подготовленная собственная пара кода и наименования";
        КонецЕсли;
        УжеНайдена = Найдены[Совпадение];
        Если ТипЗнч(УжеНайдена) <> Тип("Булево") Или УжеНайдена <> Ложь Тогда
            ВызватьИсключение "Одна ожидаемая запись встретилась повторно";
        КонецЕсли;
        Найдены[Совпадение] = Истина;
        Количество = Количество + 1;
    КонецЦикла;
    Если Количество <> Ожидается Или Найдены.Количество() <> Ожидается Тогда
        ВызватьИсключение "Число настоящих записей не совпало с подготовкой";
    КонецЕсли;
    Для Индекс = 0 По Ожидается - 1 Цикл
        Найдена = Найдены[Индекс];
        Если ТипЗнч(Найдена) <> Тип("Булево") Или Найдена <> Истина Тогда
            ВызватьИсключение "Не найдена одна из собственных ожидаемых записей";
        КонецЕсли;
    КонецЦикла;
    Возврат Количество;
КонецФункции
Целый модуль своей управляемой формы РазмерДанных85

Общие → Общие формы → РазмерДанных85 → пустой модуль формы. Вставить ЦЕЛИКОМ; свои три реквизита и кнопка Измерить85 подготовлены по инструкции.

Настоящая команда выполняется на клиенте; проверка формы и чтение размеров — на сервере. Вход — захваченное Булево, выход — полный строковый отчёт.

&НаКлиенте
Процедура Измерить85(Команда)
    Если ТипЗнч(Команда) <> Тип("КомандаФормы") Или Команда.Имя <> "Измерить85" Тогда
        ВызватьИсключение "Нужна настоящая собственная команда формы Измерить85";
    КонецЕсли;
    Если ТипЗнч(Остановлен85) <> Тип("Булево") Или Остановлен85 <> Ложь Тогда
        ВызватьИсключение "После остановки сначала разберите причину, не повторяйте замер";
    КонецЕсли;
    Если ТипЗнч(Согласен85) <> Тип("Булево") Или Согласен85 <> Истина Тогда
        ВызватьИсключение "Подтвердите чтение только двух своих учебных справочников";
    КонецЕсли;
    ИсходноеСогласие = Согласен85;
    Согласен85 = Ложь;
    Остановлен85 = Истина;
    Результат85 = "Замер выполняется; успешного отчёта ещё нет";
    Попытка
        Получено = ПолучитьРазмерНаСервере85(ИсходноеСогласие);
        Если ТипЗнч(Получено) <> Тип("Строка") Или Получено = "" Тогда
            ВызватьИсключение "Сервер не вернул полный строковый отчёт";
        КонецЕсли;
        Результат85 = Получено;
        Остановлен85 = Ложь;
    Исключение
        Остановлен85 = Истина;
        Результат85 = "Отчёт НЕ получен. Опыт остановлен; не повторяйте замер автоматически.";
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

&НаСервере
Функция ПолучитьРазмерНаСервере85(Знач ИсходноеСогласие)
    Если ТипЗнч(ИсходноеСогласие) <> Тип("Булево") Или ИсходноеСогласие <> Истина
        Или ТипЗнч(Согласен85) <> Тип("Булево") Или Согласен85 <> Ложь
        Или ТипЗнч(Остановлен85) <> Тип("Булево") Или Остановлен85 <> Истина Тогда
        ВызватьИсключение "Не подтверждено однократное согласие на этот замер";
    КонецЕсли;
    Если ИмяФормы <> "ОбщаяФорма.РазмерДанных85"
        Или АвтоматическоеСохранениеДанныхВНастройках <> АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать
        Или СохранениеДанныхВНастройках <> СохранениеДанныхФормыВНастройках.НеИспользовать Тогда
        ВызватьИсключение "Нужна собственная форма без сохранения её полей";
    КонецЕсли;
    Отчет = УчебныйОтчетРазмеров85.ПолучитьОтчетРазмеров85();
    Если ТипЗнч(Отчет) <> Тип("Строка") Или Отчет = "" Тогда
        ВызватьИсключение "Не получен полный отчёт своего серверного модуля";
    КонецЕсли;
    Возврат Отчет;
КонецФункции
Целый модуль своей общей команды ОткрытьРазмерДанных85

Общие → Общие команды → ОткрытьРазмерДанных85 → пустой модуль команды. Вставить ЦЕЛИКОМ; без параметра, включить в интерфейс своей учебной подсистемы.

Толстый управляемый клиент; настоящее событие ОбработкаКоманды получает оба штатных параметра.

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    #Если ТолстыйКлиентУправляемоеПриложение Тогда
        Если ПараметрКоманды <> Неопределено
            Или ТипЗнч(ПараметрыВыполненияКоманды) <> Тип("ПараметрыВыполненияКоманды") Тогда
            ВызватьИсключение "Откройте свою форму настоящей общей командой без параметра";
        КонецЕсли;
        ОткрытьФорму("ОбщаяФорма.РазмерДанных85");
    #Иначе
        ВызватьИсключение "Учебная команда рассчитана на толстый управляемый клиент";
    #КонецЕсли
КонецПроцедуры

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

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

  2. Серверный модуль проверяет версию платформы, точные имя, версию и файловый путь своей лаборатории. Он получает два настоящих объекта метаданных, а ПолноеИмя() возвращает реальные подписи будущего отчёта. Строки с ожидаемыми именами — проверки подготовки, не подмена объектов, переданных в замер.

  3. ПроверитьЗаписи85 самостоятельно получает настоящий менеджер нужного справочника. Выбрать() и Следующий() читают реальные записи. Проверяются тип каждой ссылки, строковые код и наименование, весь список ожидаемых пар, отсутствие повторов и пропусков. Порядок обхода не предполагается; числа 3 и 2 действительно получаются счётчиком.

  4. Область — реально пустой массив. Он сам ничего не выбирает; ВключитьОбъекты задаёт конкретные собственные объекты метаданных. Отдельные массивы включают товары, заметки, оба; ещё один исключает заметки. Нельзя опускать аргументы ради замера всей базы по умолчанию.

  5. Четыре вызова возвращают четыре фактических Числа байтов: товары, заметки, оба, оба без заметок. Проверяются типы и неотрицательность; ноль допустим как настоящий результат, но не используется вместо исключения. После замеров весь список пяти записей читается и проверяется снова.

  6. Из реальных байтов вычисляются МиБ делением на 1048576 и собственное среднее байт на фактически сосчитанную запись. Отчёт сохраняет полные числа байтов, показывает обе подписи и количество записей, объединённый и исключённый замеры, наблюдаемую разность и сравнение двух отдельных размеров.

  7. Размеры заранее неизвестны. Код не требует, чтобы заметки занимали больше товаров, чтобы объединение равнялось сумме или чтобы исключённый замер совпал с отдельным. Это четыре последовательных чтения, а не обещанный единый снимок базы. Только полный проверенный отчёт разрешает клиенту снять признак остановки.

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

  1. Без отмеченного согласия нажать кнопку: замер не должен начинаться. Затем в новом исправно подготовленном экземпляре отметить согласие и нажать кнопку. Должны быть реальные полные имена Справочник.УчебныеТоварыРазмер85 и Справочник.УчебныеЗаметкиРазмер85, числа записей 3 и 2 и четыре полученных числа байтов; конкретные значения здесь не обещаны.

  2. В собственном учебном отладчике проследить пустую Область, реальные объекты в пяти массивах и четыре вызова с тремя явными аргументами. Размеры приходят из метода, не из заранее вписанных чисел. Код не измеряет неназванные объекты по умолчанию.

  3. Для каждой строки вручную проверить МиБ = байты / 1048576. Среднее для товаров равно их фактическим байтам / 3, для заметок — байтам / 2. Это оценка выбранных данных на запись, не цена физического хранения отдельного поля.

  4. Прочитать строку оба, исключая заметки и её разность с отдельным замером товаров. Любая наблюдаемая разность выводится как результат этих чтений, не как доказательство ошибки платформы или гарантированной аддитивности. Сравнение выбирает подпись по настоящим числам; все три исхода допустимы.

  5. Только в другой собственной лаборатории вручную изменить одну подготовленную пару или добавить лишнюю запись. Проверка списка должна остановить опыт до замера; код ничего не удаляет и не исправляет. Такие отказы здесь ещё не воспроизводились в 1С.

  6. После успешного чтения согласие снято: для нового осознанного замера его нужно отметить снова. После исключения Остановлен85 остаётся Истина; не снимайте его вручную, не делайте автоматического повтора. Сначала выясните причину и только затем отдельно подготовьте новый собственный опыт.

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

Только после полной проверки своих пяти записей и четырёх настоящих числовых результатов: строковый отчёт с фактическими полными именами, числами записей 3/2, полными байтами, вычисленными МиБ и средними, объединённым и исключённым замерами, наблюдаемой разностью и сравнением. Конкретные размеры заранее неизвестны.

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

  1. ПолучитьРазмерДанныхБазыДанных возвращает одно Число байтов, не коллекцию размеров, объектов метаданных или записей. Массивы — наши входные области, а выборки справочников — отдельное чтение записей.

  2. Это не размер файла 1CD, файлов SQL data/log, резервной копии, свободного диска или полного физического выделения. Локальная справка говорит о данных таблиц, доступных пользователю, и исключает историю данных и расширения; подробный учёт индексов и сжатия здесь не доказан.

  3. МиБ — двоичная единица: 1048576 байтов, не десятичные MB. Среднее байт/запись — наш расчёт, а не документированная стоимость одной строки. Ноль, равенство, различие повторных замеров и любая наблюдаемая разность не заменяют ошибки и не доказывают пустоту, рост или атомарный снимок.

  4. На больших объёмах метод может выполняться долго. Урок намеренно ограничен своей новой маленькой базой и четырьмя областями. Установленная страница не объявляет SQL/CORP, специальную SQL роль или монопольный режим; это не доказательство работоспособности на всех лицензиях и движках. Файловую лабораторию ещё надо реально проверить.

  5. Метод недоступен тонкому и веб-клиенту. Объекты метаданных, менеджеры, выборки, массивы и ссылки остаются на сервере; клиент получает только Строку. Общий модуль не привилегированный и не серверный кэш.

  6. Согласие и признаки формы — протокол учебного интерфейса, не защита от поддельного серверного обращения и не доказательство владения. После закрытия формы признак остановки не сохраняется; новый экземпляр сам по себе не разрешает повтор неисследованной ошибки. Код не записывает данные, не меняет права и настройки, не очищает базу и не выполняет повтор в обработчике ошибки.

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

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

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

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

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

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