При выполнении в цикле примерно 1000 раз очень много времени уходит на чтение и запись регистра, код такой:

```1c
    ЦеныIT.Прочитать(); //21,47% времени
    НовЗапись = ЦеныIT.Добавить();
    НовЗапись.ВидЦеныЗ = Справочники.ВидыЦен.НайтиПоНаименованию("Закупка");
    НовЗапись.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
    НовЗапись.ЦенаЗ = ВыборкаДетальныеЗаписи.Номенклатура.ЗакупIT;
    НовЗапись.Период = ДатаПоступления;
    ЦеныIT.Записать(); //60,20% времени
```

Можно как-нибудь в ТЗ загружать значения, а потом одним махом закинуть в регистр?
---
```1c
    КонтролируемыеСделкиНаборЗаписей = РегистрыНакопления.КонтролируемыеСделкиОрганизаций.СоздатьНаборЗаписей();
    КонтролируемыеСделкиНаборЗаписей.Отбор.Регистратор.Значение = Уведомление;
    КонтролируемыеСделкиНаборЗаписей.Загрузить(ТаблицаСделок);
    КонтролируемыеСделкиНаборЗаписей.Записать();
```

Это не то что вам нужно?
---
сделал так:

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

примерно 50 000 позиций за 17 минут грузит! раньше грузило ночь!!!!
---
Нужно было больше кода предоставить. Не совсем понятна логика выше этого кода. ЦеныIT что это? Зачем каждый раз ее читать и записывать в цикле?
Теперь по коду:
1. "Справочники.ВидыЦен.НайтиПоНаименованию("Закупка");" зачем в цикле каждый раз это делать?
2. Раз используется выборка запросом, то и ВидЦен там же получать.
3. "ВыборкаДетальныеЗаписи.Номенклатура.ЗакупIT;" это тоже нужно сразу запросом получать, а не объектной выборкой.
Если создаются именно новые записи в регистр сведений, то проще всего использовать набор записей в РС. И в запросе выбрать все нужные данные.
Читать и записывать каждый раз при добавлении записи не нужно.
---
```1c
    КонтролируемыеСделкиНаборЗаписей = РегистрыНакопления.КонтролируемыеСделкиОрганизаций.СоздатьНаборЗаписей();
    КонтролируемыеСделкиНаборЗаписей.Отбор.Регистратор.Значение = Уведомление;
    КонтролируемыеСделкиНаборЗаписей.Загрузить(ТаблицаСделок);
    КонтролируемыеСделкиНаборЗаписей.Записать();
```

Это не то что вам нужно?
---
Кто ж его знает,
```1c
    КонтролируемыеСделкиНаборЗаписей.Отбор.Регистратор.Значение = Уведомление;
```
 - это что?
в таблицу сделок грузить
```1c
    НовЗапись.ВидЦеныЗ = Справочники.ВидыЦен.НайтиПоНаименованию("Закупка");
    НовЗапись.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
    НовЗапись.ЦенаЗ = ВыборкаДетальныеЗаписи.Номенклатура.ЗакупIT;
    НовЗапись.Период = ДатаПоступления;
```
 а потом махом записать?
---
- это что?
пример был для регистра накопления, там без регистратора никак

Кто ж его знает,
ну так узнает тот кто проверит, может найдутся заинтересованные лица, подождем? :)
---
в таблицу сделок грузить

НовЗапись.ВидЦеныЗ = Справочники.ВидыЦен.НайтиПоНаименованию("Закупка");
НовЗапись.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
НовЗапись.ЦенаЗ = ВыборкаДетальныеЗаписи.Номенклатура.ЗакупIT;
НовЗапись.Период = ДатаПоступления;

а потом махом записать?

Таблицу значений вы можете получить из результатов запроса одним махом:
ТЗ=ЗапросЗакупок.Выполнить().Выгрузить();
Период и ДатаПоступления при этом можно передать в параметры запроса и вернуть их из запроса

" Таблица.Номенклатура как Номенклатура,
| &Период как Период,
| &ДатаПоступления как ДатаПоступления,
...
"
---
Лучше объясню, что я вообще и зачем делаю:
Есть прайс поставщика, цены меняются ежедневно, Я создал новый регистр сведений с ценами поставщика и ежедневно загружаю эти цены,потом из номенклатуры можно посмотреть график изменения цен. Т.е. цены формируются не документом установка цен, а моей обработкой.
---
т.е. этот новый РС - периодический независимый РС? Измерения: Поставщик, Номенклатура?
Вот тут сами себя загнали в ловушку. Тормоза при записи неизбежны.
И не понятно, зачем в самом справочнике Номенклатура хранить цену?
---
вариант очень быстрый, но единственный глобальный минус - затираются значения старые
---
Чтобы остались старые значения вы их можете подсунуть в свой запрос:
1 вариант: В запросе можно через "ОБЪЕДИНИТЬ ВСЕ" соединить ваш запрос с запросом выбирающим сведения которые уже есть в регистре.
2 вариант: В запрос можно передать любую таблицу значений как параметр и склеить опять же через "ОБЪЕДИНИТЬ ВСЕ" с вашим запросом.
---
сделал так:

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

примерно 50 000 позиций за 17 минут грузит! раньше грузило ночь!!!!
---
НовЗапись.ВидЦеныЗ = Справочники.ВидыЦен.НайтиПоНаименованию("Закупка");

Даже если делать циклом то вам уже намекнули что такой вариант совсем не айс, смотреть больно, прямо серпом по нежности...

до цикла получаете значение

```1c
    ВидыЦенЗакупка= Справочники.ВидыЦен.НайтиПоНаименованию("Закупка");
```

Потом в цикле

```1c
    НовЗапись.ВидЦеныЗ = ВидыЦенЗакупка;
```

И можете написать откуда вы получаете ВыборкаДетальныеЗаписи, это выборка из запроса? Можно его текст, а лучше весь тест того что получилось, большое подозрение что там для оптимизации еще много возможностей...
---
учусь разбираться в чужом коде, пожалуйста объясните - что он сделал?
Из текста запроса - я вижу, что он просто выгрузил весь регистрСведений в таблицуЗначений, потом непонятная для меня функция: ЦеныIT = РегистрыСведений.ЦеныITPartner.СоздатьНаборЗаписей(); - что она делает?

"Есть прайс поставщика, цены меняются ежедневно, Я создал новый регистр сведений с ценами поставщика и ежедневно загружаю эти цены,потом из номенклатуры можно посмотреть график изменения цен. Т.е. цены формируются не документом установка цен, а моей обработкой."

Из его тех.задания ясно - что он загружает в регистр сведений цены каждый день, почему тогда в запросе нет выборки из таблицы регистра СрезПоследних, а на нее уже надо накладывать дату, а я этого в тексте запроса не вижу?

И как это "потом из номенклатуры можно посмотреть график изменения цены"? У него что "Товары" поставщика и его "товары" одинаковые по названию, только в своем справочнике товаров он жестко хранит свои цены, с которыми во втором,наверное,запросе и сверяется?

А почему нельзя товары поставщика (как-то распознать в xls - этого пока не умею) и загрузить в абсолютно отдельную таблицу, которую правым соединением со своим справочником товаров(раз именно в нем есть свои жестко прикрепленные цены) сверить простым запросом???????????...и уже в регистр сведений по результатам этого простого запроса - добавить новые данные на тек.дату в рег.сведений?????
---
Вы читаете .txt файл или .xls?
---
.xls
---
не,c .xls пока не умею загружать данные и разбирать их. Если можно,обработку загрузки с xls покажите?

А для текста все просто, открываете текстовый файл, значения в нем должны быть вот по такому образцу:

Ложка; 100
Поварешка;200
Вилка;150

Т.е.каждая новая строка - это сл.товар, а разделитель ";" - это в одной строке отделяет товар от его цены.
Тогда простой модальной процедурой читаете текстовый файл, записываете его ПОЛНОСТЬЮ в строковую переменную с неограниченным числом символов и потом из этой стоки "СтрокаДанных" - создаете ТаблицуЗначений, которую уже можно подгрузить в СКД-запрос.Вот как-то так...
---
Тут все есть