Собственно мне нужно перенести один периодический РС в другой почти такой же тоже периодический. Создал ПКО РС->РС, но приезжает только одна запись. Понимаю, что каждый раз делается отбор по регистратору и перезаписывается набор, но не понимаю как этого избежать и правильно все выгрузить.

Читал похожие запросы но ни тут ни на мисте не нашел работающего варианта. Пишут сделай как для контактной информации вот тут: https://forum.infostart.ru/forum15/topic253333/ но это же точно так же и не работает. Сдала так же и он точно так же выгружает наборами, перезаписывая старыми.

Заполнить и провести документ регистратор - идея клевая, только в базе-источнике данные в него не писались, данные писались напрямую в регистр. В базе приёмнике сделано все норм, там есть табличная часть по которой делаются движения, но в базе источнике по одному документу больше 200к записей, а в документ можно впихать только 100к, а разбивать их нельзя иначе они не сойдутся по УИДу.

Еще был вариант - сделать ПВД. Ну я делаю, но все то же самое, точно так же все перезаписывается очевидно, потому что я по одному и тому же правилу выгружаю, а это правило для записи, а не для набора.

В общем очень много букв, но вопрос простой - как правильно перенести РС, подчиненный регистратору?
---
В общем, если по теме. У РС, подчиненного регистратору в наборе нет никаких отборов, кроме регистратора, а при загрузке данных загрузка происходит построчно. Отсюда я для себя нашел два варианта.
Первый простой, но не оптимальный - после загрузки в ПКО написать вот такой код:

```1c
    НаборЗаписей.Отбор.Регистратор.Установить(Объект.Регистратор);
    НаборЗаписей.Прочитать();
    Запись = НаборЗаписей.Добавить();
    ЗаполнитьЗначенияСвойств(Запись, Объект);
    НаборЗаписей.Записать();
    Отказ = Истина;
```

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

Второй вариант, который я для себя нашел - это сделать таблицу в глобальном обработчике, заполнить ее при выгрузке записями, а при после загрузки всех данных единоразово загрузить:
Получается вот такой код:
Глобалный обработчик "Перед загрузкой данных"

```1c
    ИР_ТаблицаНаценок = Новый ТаблицаЗначений;
    ИР_ТаблицаНаценок.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя)));
    ИР_ТаблицаНаценок.Колонки.Добавить("ПолучательСкидки", Новый ОписаниеТипов("СправочникСсылка.ИР_СтатусыПокупателей,СправочникСсылка.Контрагенты", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ОбъектСкидки", Новый ОписаниеТипов("СправочникСсылка.Номенклатура,СправочникСсылка.ЦеновыеГруппы", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.КлассификаторЕдиницИзмерения,СправочникСсылка.ЕдиницыИзмерения", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ПрямаяПоставка", Новый ОписаниеТипов("Булево", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ПроцентСкидкиНаценки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой), , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("Регистратор", Новый ОписаниеТипов("ДокументСсылка.ИР_РегистрацияСкидкиНаценки", , , ));

    Параметры.Вставить("ИР_ТаблицаНаценок", ИР_ТаблицаНаценок);
```

Обработчик ПКО "После загрузки"

```1c
    СтрокаНаценки = Параметры.ИР_ТаблицаНаценок.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаНаценки, Объект);
    Отказ = Истина;
```

Глобальный обработчик "После загрузки данных"

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Таблица.Период КАК Период,
    | Таблица.Регистратор КАК Регистратор,
    | Таблица.ПолучательСкидки КАК ПолучательСкидки,
    | Таблица.ОбъектСкидки КАК ОбъектСкидки,
    | Таблица.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | Таблица.ПрямаяПоставка КАК ПрямаяПоставка,
    | Таблица.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки
    |ПОМЕСТИТЬ ВТДанные
    |ИЗ
    | &Таблица КАК Таблица
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ВТДанные.ПолучательСкидки КАК ПолучательСкидки,
    | ВТДанные.ОбъектСкидки КАК ОбъектСкидки,
    | ВТДанные.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | ВТДанные.ПрямаяПоставка КАК ПрямаяПоставка,
    | МАКСИМУМ(ВТДанные.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
    | ВТДанные.Регистратор КАК Регистратор,
    | ВТДанные.Период КАК Период
    |ИЗ
    | ВТДанные КАК ВТДанные
    |
    |СГРУППИРОВАТЬ ПО
    | ВТДанные.ПолучательСкидки,
    | ВТДанные.ОбъектСкидки,
    | ВТДанные.ЕдиницаИзмерения,
    | ВТДанные.ПрямаяПоставка,
    | ВТДанные.Регистратор,
    | ВТДанные.Период
    |ИТОГИ ПО
    | Регистратор";

    Запрос.УстановитьПараметр("Таблица", Параметры.ИР_ТаблицаНаценок);
    Результат = Запрос.Выполнить();
    ВыборкаРегистратор = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаРегистратор.Следующий() Цикл

    НаборЗаписей = РегистрыСведений.ИР_СкидкиНаценки.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор);
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();

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

    НаборЗаписей.Записать();

    КонецЦикла;
```
---
Заполнить и провести документ регистратор - идея клевая, только в базе-источнике данные в него не писались, данные писались напрямую в регистр

Я не понял в базе Источнике РС подчинён регистратору или нет ?

Как можно записать данные в подчиненный регистр без регистратора ?
---
Регистратор есть, но в самом документе нет реквизитов, документ - это просто как ссылка, как корректировка регистров, а записи записаны через движения в базе источнике. Так вот там 200к строк. А в базе приемнике есть документ, у которого есть табличная часть по которой делаются движения. И я хотел сначала перенести движения в табличную часть в приемнике и даже сделал это, но приехали только первые 100к, о чем я и пишу. Мне нужно либо перенести записи просто через конвертацию регистров либо как то в конвертации обратиться к движениям документа и дописать ему движения. Все никак не пойму как это сделать.
---
Как можно записать данные в подчиненный регистр без регистратора ?
Да, такое возможно, но я так не "извращался". Регистратор там есть, но движения в регистр делает не он, а что-то другое.
---
В общем, если по теме. У РС, подчиненного регистратору в наборе нет никаких отборов, кроме регистратора, а при загрузке данных загрузка происходит построчно. Отсюда я для себя нашел два варианта.
Первый простой, но не оптимальный - после загрузки в ПКО написать вот такой код:

```1c
    НаборЗаписей.Отбор.Регистратор.Установить(Объект.Регистратор);
    НаборЗаписей.Прочитать();
    Запись = НаборЗаписей.Добавить();
    ЗаполнитьЗначенияСвойств(Запись, Объект);
    НаборЗаписей.Записать();
    Отказ = Истина;
```

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

Второй вариант, который я для себя нашел - это сделать таблицу в глобальном обработчике, заполнить ее при выгрузке записями, а при после загрузки всех данных единоразово загрузить:
Получается вот такой код:
Глобалный обработчик "Перед загрузкой данных"

```1c
    ИР_ТаблицаНаценок = Новый ТаблицаЗначений;
    ИР_ТаблицаНаценок.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя)));
    ИР_ТаблицаНаценок.Колонки.Добавить("ПолучательСкидки", Новый ОписаниеТипов("СправочникСсылка.ИР_СтатусыПокупателей,СправочникСсылка.Контрагенты", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ОбъектСкидки", Новый ОписаниеТипов("СправочникСсылка.Номенклатура,СправочникСсылка.ЦеновыеГруппы", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.КлассификаторЕдиницИзмерения,СправочникСсылка.ЕдиницыИзмерения", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ПрямаяПоставка", Новый ОписаниеТипов("Булево", , , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("ПроцентСкидкиНаценки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой), , ));
    ИР_ТаблицаНаценок.Колонки.Добавить("Регистратор", Новый ОписаниеТипов("ДокументСсылка.ИР_РегистрацияСкидкиНаценки", , , ));

    Параметры.Вставить("ИР_ТаблицаНаценок", ИР_ТаблицаНаценок);
```

Обработчик ПКО "После загрузки"

```1c
    СтрокаНаценки = Параметры.ИР_ТаблицаНаценок.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаНаценки, Объект);
    Отказ = Истина;
```

Глобальный обработчик "После загрузки данных"

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Таблица.Период КАК Период,
    | Таблица.Регистратор КАК Регистратор,
    | Таблица.ПолучательСкидки КАК ПолучательСкидки,
    | Таблица.ОбъектСкидки КАК ОбъектСкидки,
    | Таблица.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | Таблица.ПрямаяПоставка КАК ПрямаяПоставка,
    | Таблица.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки
    |ПОМЕСТИТЬ ВТДанные
    |ИЗ
    | &Таблица КАК Таблица
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ВТДанные.ПолучательСкидки КАК ПолучательСкидки,
    | ВТДанные.ОбъектСкидки КАК ОбъектСкидки,
    | ВТДанные.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | ВТДанные.ПрямаяПоставка КАК ПрямаяПоставка,
    | МАКСИМУМ(ВТДанные.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
    | ВТДанные.Регистратор КАК Регистратор,
    | ВТДанные.Период КАК Период
    |ИЗ
    | ВТДанные КАК ВТДанные
    |
    |СГРУППИРОВАТЬ ПО
    | ВТДанные.ПолучательСкидки,
    | ВТДанные.ОбъектСкидки,
    | ВТДанные.ЕдиницаИзмерения,
    | ВТДанные.ПрямаяПоставка,
    | ВТДанные.Регистратор,
    | ВТДанные.Период
    |ИТОГИ ПО
    | Регистратор";

    Запрос.УстановитьПараметр("Таблица", Параметры.ИР_ТаблицаНаценок);
    Результат = Запрос.Выполнить();
    ВыборкаРегистратор = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаРегистратор.Следующий() Цикл

    НаборЗаписей = РегистрыСведений.ИР_СкидкиНаценки.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор);
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();

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

    НаборЗаписей.Записать();

    КонецЦикла;
```