ВытесняющиеВидыРасчета.<Имя плана видов расчета>.Выгрузить

Методы · Unload

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

Синтаксис

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

ВытесняющиеВидыРасчета.<Имя плана видов расчета>.Выгрузить (DisplacingCalculationTypes.<Chart of calculation types name>.Unload)

ВытесняющиеВидыРасчета.<Имя плана видов расчета> (DisplacingCalculationTypes.<Chart of calculation types name>)

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

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

Синтаксис:
Выгрузить()
Возвращаемое значение:
Тип: ТаблицаЗначений.

Описание:

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

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

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

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

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

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

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

Выгрузить снимок и заменить свой список: вытесняющие виды

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

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

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

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

  3. В настройке базовых планов видов расчёта выберите только сам УчебныеНачисления85. Это позволяет учебным видам ссылаться на другие виды того же плана. Предопределённые виды, пользовательские реквизиты и табличные части не создавайте.

  4. Модули объекта/менеджера оставьте пустыми, регистры расчёта и бизнес-алгоритмы не добавляйте. Обновите конфигурацию БД и создайте серверный ВыполнитьПример() Экспорт собственной обработки.

  5. Фрагмент вставляется внутрь процедуры. Все виды и строки зависимостей создаются только в памяти; Записать, блокировки, удаления объектов и привилегированный режим не вызываются.

  6. Случайные ссылки зависимостей — ПЛАНОВЫЕ идентификаторы, соответствующих сохранённых видов нет. Они нужны для разбора типизированных списков, а не для запуска расчёта.

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

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

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

  2. Меняем выгруженную таблицу и массив: исходная первая зависимость остаётся ПервыйВид.

  3. Для ЗагрузитьКолонку готовим массив точно той же длины и ссылок того же типа. Значения распределяются по позициям, не по коду вида.

  4. Создаём отдельную таблицу с единственной колонкой ВидРасчета правильного типа и одной строкой.

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

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

  1. Двенадцать логических сообщений дают Истина.

  2. Итог: одна зависимость ВторойВид в новом объекте. Это не объединение списков и не запись видов в базу.

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

Разобраны три способа передачи данных: снимок таблицы, позиционная колонка и полная замена строк.

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

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

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

  3. Не загружайте произвольные строки вместо ссылок и не присваивайте вручную НомерСтроки/Предопределенный.

  4. Выгрузка не вычисляет базу и не запускает вытеснение или перерасчёт.

  5. Зависимости вытеснения периода действия: порядок строк здесь не задаёт приоритет начислений.

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

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

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

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

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