РегистрРасчетаНаборЗаписей.<Имя регистра расчета>.Выгрузить

Методы · Unload

Создает таблицу значений и копирует в нее набор записей регистра расчета.

Синтаксис

Выгрузить(<Строки>, <Колонки>)

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

Регистр = РегистрыРасчета.ОсновныеНачисленияСотрудниковОрганизаций;
НаборЗаписей = Регистр.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Документ.Регистратор;
ОсновныеДанные = НаборЗаписей.Выгрузить();
Полное описание, параметры и ограничения

РегистрРасчетаНаборЗаписей.<Имя регистра расчета>.Выгрузить (CalculationRegisterRecordSet.<Calculation register name>.Unload)

РегистрРасчетаНаборЗаписей.<Имя регистра расчета> (CalculationRegisterRecordSet.<Calculation register name>)

Выгрузить (Unload)

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

Синтаксис:
Выгрузить(<Строки>, <Колонки>)
Параметры:

<Строки> (необязательный)
Тип: Массив.
Массив строк для выгрузки. Если не указан, выгружаются все строки набора записей.

<Колонки> (необязательный)
Тип: Строка.
Список колонок для выгрузки в формате: "Колонка1, Колонка2...". Если список не задан, то будут выгружены все колонки.
Возвращаемое значение:
Тип: ТаблицаЗначений.

Описание:

Создает таблицу значений и копирует в нее набор записей регистра расчета.

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

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

Пример:

Регистр = РегистрыРасчета.ОсновныеНачисленияСотрудниковОрганизаций;
НаборЗаписей = Регистр.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Документ.Регистратор;
ОсновныеДанные = НаборЗаписей.Выгрузить();

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

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

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

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

Загрузить суммы по порядку и восстановить свой набор из таблицы

ЗагрузитьКолонку обновляет поле по индексам; Загрузить заменяет все прежние записи набора данными таблицы. Обе операции здесь меняют только память.

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

Полный серверный общий модуль собственной учебной конфигурации. Набор в памяти и собственная плановая ссылка; объект документа не создаётся. Без расчёта зарплаты; запуск в 1С не проверен.

Подготовка

  1. Создайте новую пустую файловую базу с именем корня УчебныеНаборыРасчета85. Это отдельный учебный стенд, не ЗУП, КА2, УНФ, УТ или БП. Других документов, регистров и справочников в нём не должно быть.

  2. Создайте план видов расчёта УчебныеВиды85: тип кода Строка, длина кода 10, наименования 100; использование периода действия выключено, зависимость от видов расчёта Не использовать. Реквизиты и табличные части не добавляйте.

  3. В предопределённых видах плана создайте УчебноеНачисление с кодом DEMO и наименованием Учебная сумма. Не задавайте зависимости или вытесняющие виды. Это вид учебного расчёта, не формула зарплаты.

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

  5. Добавьте в регистр измерение МеткаОперации: Строка(80), Проверка заполнения — Выдавать ошибку; единственный ресурс Сумма: Число(15,2). Других измерений, ресурсов и реквизитов не добавляйте. Обновите конфигурацию учебной базы, чтобы создать предопределённый вид.

  6. Оставьте модули документа и набора пустыми, без подписок на события. Создайте серверный общий модуль УчебныеЗаписиРасчета с флагом Сервер, без Привилегированный. Вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из своей серверной команды учебной обработки.

  7. ПолучитьСсылку своего менеджера с новым UUID формирует непустое ссылочное значение собственного типа. Объект документа не создаётся и не записывается; непустая ссылка не доказывает существование документа. Наборы меняются только в памяти; вызовов Записать нет. Отдельный урок чтения ограничен своими новыми плановыми ссылками.

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

Процедура ВыполнитьПример() Экспорт
    Набор = СоздатьСвойНабор();
    СохраненнаяКопия = Набор.Выгрузить();
    НовыеСуммы = Новый Массив;
    НовыеСуммы.Добавить(1000);
    НовыеСуммы.Добавить(100);
    Если НовыеСуммы.Количество() <> Набор.Количество() Тогда
        ВызватьИсключение "Для урока нужно одно числовое значение на каждую запись";
    КонецЕсли;
    Набор.ЗагрузитьКолонку(НовыеСуммы, "Сумма");
    Сообщить(Набор.Получить(0).МеткаОперации = "Книга" И Набор.Получить(0).Сумма = 1000);
    Сообщить(Набор.Получить(1).МеткаОперации = "Ручка" И Набор.Получить(1).Сумма = 100);
    Сообщить(Набор.Итог("Сумма") = 1100);
    Сообщить(СохраненнаяКопия.Итог("Сумма") = 800);
    Набор.Загрузить(СохраненнаяКопия);
    Сообщить(Набор.Количество() = 2 И Набор.Итог("Сумма") = 800);
    Сообщить(Набор.Получить(0).Сумма = 750 И Набор.Получить(1).Сумма = 50);
    Сообщить(Набор.Получить(0).ПериодРегистрации = Дата(2026, 10, 1));
КонецПроцедуры

Процедура ПроверитьУчебнуюСхему()
    Если Метаданные.Документы.Количество() <> 1 ИЛИ Метаданные.ПланыВидовРасчета.Количество() <> 1 ИЛИ Метаданные.РегистрыРасчета.Количество() <> 1 ИЛИ Метаданные.Справочники.Количество() <> 0 ИЛИ Метаданные.РегистрыСведений.Количество() <> 0 ИЛИ Метаданные.РегистрыНакопления.Количество() <> 0 ИЛИ Метаданные.РегистрыБухгалтерии.Количество() <> 0 Тогда
        ВызватьИсключение "Нужна отдельная пустая учебная конфигурация УчебныеНаборыРасчета85";
    КонецЕсли;
    План = Метаданные.ПланыВидовРасчета.Найти("УчебныеВиды85");
    Регистр = Метаданные.РегистрыРасчета.Найти("УчебныеСуммы85");
    Документ = Метаданные.Документы.Найти("УчебныйРегистратор85");
    Если План = Неопределено ИЛИ Регистр = Неопределено ИЛИ Документ = Неопределено Тогда
        ВызватьИсключение "Не найдены три собственных объекта учебной схемы";
    КонецЕсли;
    Если План.ТипКода <> Метаданные.СвойстваОбъектов.ТипКодаПланаВидовРасчета.Строка
        ИЛИ План.ДлинаКода <> 10 ИЛИ План.ДлинаНаименования <> 100
        ИЛИ План.ИспользованиеПериодаДействия
        ИЛИ План.ЗависимостьОтВидовРасчета <> Метаданные.СвойстваОбъектов.ИспользованиеБазыПланаВидовРасчета.НеИспользовать
        ИЛИ План.Реквизиты.Количество() <> 0 ИЛИ План.ТабличныеЧасти.Количество() <> 0
        ИЛИ Документ.Реквизиты.Количество() <> 0 ИЛИ Документ.ТабличныеЧасти.Количество() <> 0 Тогда
        ВызватьИсключение "План видов или документ отличаются от подготовки";
    КонецЕсли;
    Если Регистр.Периодичность <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц
        ИЛИ Регистр.ПериодДействия ИЛИ Регистр.БазовыйПериод
        ИЛИ Регистр.ПланВидовРасчета <> План
        ИЛИ Регистр.Измерения.Количество() <> 1 ИЛИ Регистр.Ресурсы.Количество() <> 1
        ИЛИ Регистр.Реквизиты.Количество() <> 0 ИЛИ Регистр.Перерасчеты.Количество() <> 0 Тогда
        ВызватьИсключение "Регистр должен быть помесячным, без периодов действия, базы и перерасчетов";
    КонецЕсли;
    Метка = Регистр.Измерения.Найти("МеткаОперации");
    Сумма = Регистр.Ресурсы.Найти("Сумма");
    Если Метка = Неопределено ИЛИ Сумма = Неопределено Тогда
        ВызватьИсключение "Нужны собственные поля МеткаОперации и Сумма";
    КонецЕсли;
    Если Метка.Тип.Типы().Количество() <> 1 ИЛИ НЕ Метка.Тип.СодержитТип(Тип("Строка"))
        ИЛИ Метка.Тип.КвалификаторыСтроки.Длина <> 80
        ИЛИ Метка.ПроверкаЗаполнения <> ПроверкаЗаполнения.ВыдаватьОшибку
        ИЛИ Сумма.Тип.Типы().Количество() <> 1 ИЛИ НЕ Сумма.Тип.СодержитТип(Тип("Число"))
        ИЛИ Сумма.Тип.КвалификаторыЧисла.Разрядность <> 15
        ИЛИ Сумма.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти <> 2 Тогда
        ВызватьИсключение "Типы полей и проверка заполнения отличаются от подготовки";
    КонецЕсли;
КонецПроцедуры

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

Процедура ЗаполнитьСвоюЗапись(Запись, СвояСсылка, Метка, Сумма)
    Запись.Регистратор = СвояСсылка;
    Запись.ПериодРегистрации = Дата(2026, 10, 3);
    Запись.ВидРасчета = ПланыВидовРасчета.УчебныеВиды85.УчебноеНачисление;
    Запись.Активность = Истина;
    Запись.Сторно = Ложь;
    Запись.МеткаОперации = Метка;
    Запись.Сумма = Сумма;
КонецПроцедуры

Функция СоздатьСвойНабор()
    ПроверитьУчебнуюСхему();
    СвояСсылка = СоздатьСвоюСсылкуРегистратора();
    Набор = РегистрыРасчета.УчебныеСуммы85.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(СвояСсылка);
    ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Книга", 750);
    ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Ручка", 50);
    Возврат Набор;
КонецФункции

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

  1. Сохранить полную таблицу собственных строк, включая доступные для записи стандартные поля.

  2. Сформировать два числа 1000/100 и явно проверить равенство размеров. Индекс 0 соответствует книге, 1 — ручке.

  3. Загрузить только ресурс Сумма, проверить метки и итог 1100.

  4. Загрузить полную сохранённую таблицу: прежние строки набора удаляются и создаются заново. Получать их после замены заново.

  5. Проверить две строки 750/50 и период. Это восстановление собственного объекта в памяти, не откат базы.

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

  1. Семь сообщений Истина: обновлённые суммы, независимая копия и восстановление 800.

  2. Ни транзакция, ни запись базы не вызываются.

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

Два разных способа загрузки на конкретном ресурсе с защитой от перепутанного количества значений.

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

  1. Загрузить не дописывает таблицу к старым строкам: оно заменяет набор.

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

  3. Колонки сопоставляются по именам; свойства только для чтения не заполняются. Для частичной таблицы незаданные поля не восстановятся сами.

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

Отличить структуру колонок от копии данных расчётного набора

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

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

Полный серверный общий модуль собственной учебной конфигурации. Набор в памяти и собственная плановая ссылка; объект документа не создаётся. Без расчёта зарплаты; запуск в 1С не проверен.

Подготовка

  1. Создайте новую пустую файловую базу с именем корня УчебныеНаборыРасчета85. Это отдельный учебный стенд, не ЗУП, КА2, УНФ, УТ или БП. Других документов, регистров и справочников в нём не должно быть.

  2. Создайте план видов расчёта УчебныеВиды85: тип кода Строка, длина кода 10, наименования 100; использование периода действия выключено, зависимость от видов расчёта Не использовать. Реквизиты и табличные части не добавляйте.

  3. В предопределённых видах плана создайте УчебноеНачисление с кодом DEMO и наименованием Учебная сумма. Не задавайте зависимости или вытесняющие виды. Это вид учебного расчёта, не формула зарплаты.

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

  5. Добавьте в регистр измерение МеткаОперации: Строка(80), Проверка заполнения — Выдавать ошибку; единственный ресурс Сумма: Число(15,2). Других измерений, ресурсов и реквизитов не добавляйте. Обновите конфигурацию учебной базы, чтобы создать предопределённый вид.

  6. Оставьте модули документа и набора пустыми, без подписок на события. Создайте серверный общий модуль УчебныеЗаписиРасчета с флагом Сервер, без Привилегированный. Вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из своей серверной команды учебной обработки.

  7. ПолучитьСсылку своего менеджера с новым UUID формирует непустое ссылочное значение собственного типа. Объект документа не создаётся и не записывается; непустая ссылка не доказывает существование документа. Наборы меняются только в памяти; вызовов Записать нет. Отдельный урок чтения ограничен своими новыми плановыми ссылками.

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

Процедура ВыполнитьПример() Экспорт
    Набор = СоздатьСвойНабор();
    СтруктураКолонок = Набор.ВыгрузитьКолонки("МеткаОперации,Сумма,ВидРасчета");
    Сообщить(СтруктураКолонок.Количество() = 0);
    Сообщить(СтруктураКолонок.Колонки.Количество() = 3);
    Копия = Набор.Выгрузить(, "МеткаОперации,Сумма,ВидРасчета");
    Сообщить(Копия.Количество() = 2 И Копия.Итог("Сумма") = 800);
    СвоиСтроки = Новый Массив;
    СвоиСтроки.Добавить(Набор.Получить(0));
    ОднаСтрока = Набор.Выгрузить(СвоиСтроки, "МеткаОперации,Сумма");
    Сообщить(ОднаСтрока.Количество() = 1 И ОднаСтрока.Получить(0).Сумма = 750);
    Суммы = Набор.ВыгрузитьКолонку("Сумма");
    Сообщить(Суммы.Количество() = 2 И Суммы[0] = 750 И Суммы[1] = 50);
    Набор.Получить(0).Сумма = 1000;
    Сообщить(Набор.Итог("Сумма") = 1050);
    Сообщить(Копия.Итог("Сумма") = 800 И ОднаСтрока.Получить(0).Сумма = 750);
    Сообщить(Суммы[0] = 750);
КонецПроцедуры

Процедура ПроверитьУчебнуюСхему()
    Если Метаданные.Документы.Количество() <> 1 ИЛИ Метаданные.ПланыВидовРасчета.Количество() <> 1 ИЛИ Метаданные.РегистрыРасчета.Количество() <> 1 ИЛИ Метаданные.Справочники.Количество() <> 0 ИЛИ Метаданные.РегистрыСведений.Количество() <> 0 ИЛИ Метаданные.РегистрыНакопления.Количество() <> 0 ИЛИ Метаданные.РегистрыБухгалтерии.Количество() <> 0 Тогда
        ВызватьИсключение "Нужна отдельная пустая учебная конфигурация УчебныеНаборыРасчета85";
    КонецЕсли;
    План = Метаданные.ПланыВидовРасчета.Найти("УчебныеВиды85");
    Регистр = Метаданные.РегистрыРасчета.Найти("УчебныеСуммы85");
    Документ = Метаданные.Документы.Найти("УчебныйРегистратор85");
    Если План = Неопределено ИЛИ Регистр = Неопределено ИЛИ Документ = Неопределено Тогда
        ВызватьИсключение "Не найдены три собственных объекта учебной схемы";
    КонецЕсли;
    Если План.ТипКода <> Метаданные.СвойстваОбъектов.ТипКодаПланаВидовРасчета.Строка
        ИЛИ План.ДлинаКода <> 10 ИЛИ План.ДлинаНаименования <> 100
        ИЛИ План.ИспользованиеПериодаДействия
        ИЛИ План.ЗависимостьОтВидовРасчета <> Метаданные.СвойстваОбъектов.ИспользованиеБазыПланаВидовРасчета.НеИспользовать
        ИЛИ План.Реквизиты.Количество() <> 0 ИЛИ План.ТабличныеЧасти.Количество() <> 0
        ИЛИ Документ.Реквизиты.Количество() <> 0 ИЛИ Документ.ТабличныеЧасти.Количество() <> 0 Тогда
        ВызватьИсключение "План видов или документ отличаются от подготовки";
    КонецЕсли;
    Если Регистр.Периодичность <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц
        ИЛИ Регистр.ПериодДействия ИЛИ Регистр.БазовыйПериод
        ИЛИ Регистр.ПланВидовРасчета <> План
        ИЛИ Регистр.Измерения.Количество() <> 1 ИЛИ Регистр.Ресурсы.Количество() <> 1
        ИЛИ Регистр.Реквизиты.Количество() <> 0 ИЛИ Регистр.Перерасчеты.Количество() <> 0 Тогда
        ВызватьИсключение "Регистр должен быть помесячным, без периодов действия, базы и перерасчетов";
    КонецЕсли;
    Метка = Регистр.Измерения.Найти("МеткаОперации");
    Сумма = Регистр.Ресурсы.Найти("Сумма");
    Если Метка = Неопределено ИЛИ Сумма = Неопределено Тогда
        ВызватьИсключение "Нужны собственные поля МеткаОперации и Сумма";
    КонецЕсли;
    Если Метка.Тип.Типы().Количество() <> 1 ИЛИ НЕ Метка.Тип.СодержитТип(Тип("Строка"))
        ИЛИ Метка.Тип.КвалификаторыСтроки.Длина <> 80
        ИЛИ Метка.ПроверкаЗаполнения <> ПроверкаЗаполнения.ВыдаватьОшибку
        ИЛИ Сумма.Тип.Типы().Количество() <> 1 ИЛИ НЕ Сумма.Тип.СодержитТип(Тип("Число"))
        ИЛИ Сумма.Тип.КвалификаторыЧисла.Разрядность <> 15
        ИЛИ Сумма.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти <> 2 Тогда
        ВызватьИсключение "Типы полей и проверка заполнения отличаются от подготовки";
    КонецЕсли;
КонецПроцедуры

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

Процедура ЗаполнитьСвоюЗапись(Запись, СвояСсылка, Метка, Сумма)
    Запись.Регистратор = СвояСсылка;
    Запись.ПериодРегистрации = Дата(2026, 10, 3);
    Запись.ВидРасчета = ПланыВидовРасчета.УчебныеВиды85.УчебноеНачисление;
    Запись.Активность = Истина;
    Запись.Сторно = Ложь;
    Запись.МеткаОперации = Метка;
    Запись.Сумма = Сумма;
КонецПроцедуры

Функция СоздатьСвойНабор()
    ПроверитьУчебнуюСхему();
    СвояСсылка = СоздатьСвоюСсылкуРегистратора();
    Набор = РегистрыРасчета.УчебныеСуммы85.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(СвояСсылка);
    ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Книга", 750);
    ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Ручка", 50);
    Возврат Набор;
КонецФункции

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

  1. Заказать структуру трёх существующих колонок: строк пока нет, но типы колонок сохранены.

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

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

  4. Выгрузить отдельно Сумма: порядок массива совпадает с порядком строк.

  5. Изменить ресурс только в исходном наборе и проверить независимость таблиц и числового массива.

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

  1. Восемь сообщений Истина: структура без строк, полная копия 800, выбранная строка 750, исходный изменённый набор 1050.

  2. В памяти одновременно существуют набор записей, две таблицы и массив; чтения базы нет.

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

Реальная задача подготовки копии для своего отчёта без смешения структуры, данных и ссылок на строки.

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

  1. ВыгрузитьКолонки не выгружает данные: нулевой размер не означает пустой исходный набор.

  2. ВыгрузитьКолонку возвращает массив значений, не записи расчётного регистра.

  3. В собственный массив выборки помещайте записи именно этого набора; не строки другой таблицы.

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

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

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

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

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