Как загрузить таблицу значений в регистр сведений

1. sergqwert15 3 18.12.16 18:15 Сейчас в теме
Есть таблица в которой заполнены данные. Их надо загрузить в регистр сведений, он периодический (период день), не подчиненный регистратору. Не загружаются данные в регистр сведений. Есть обработка, она содержит Таблицу с колонками Номенклатура-ТекущаяЦена-НоваяЦена.
В шапке обработки указывается дата для заполнения текущих цен и кнопка Заполнить. По нажатию кнопки Заполнить в Таблицу загружается вся номенклатура информационной базы (не помеченная на удаление), в колонку Текущая цена - срез последних цен из регистра на дату в шапке. В подвале обработки указываем вторую дату, по нажатию в подвале кнопки Установить - в РС на вторую дату создаются записи по заполненным Новым ценам номенклатуры.

Установка новых цен:

Для каждого Строка Из Объект.ЦеныНоменклатуры Цикл
       МенеджерЗаписи = РегистрыСведений.ЦеныНоменклатуры.СоздатьМенеджерЗаписи();
       МенеджерЗаписи.Номенклатура = Строка.Номенклатура;
       МенеджерЗаписи.Цена = Строка.ЦенаНовая;
       Попытка
         МенеджерЗаписи.Записать();
       Исключение
         Сообщить("Цена для " + Строка.Номенклатура + " не записана");
       КонецПопытки;  
  КонецЦикла;
Показать


Заполнение цен:

запрос = Новый запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЦеныНоменклатурыСрезПоследних.Номенклатура,
		|	ЦеныНоменклатурыСрезПоследних.Цена
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
		|ГДЕ
		|	НЕ ЦеныНоменклатурыСрезПоследних.Номенклатура.ПометкаУдаления";
		Запрос.УстановитьПараметр("Дата", Объект.Дата);
		ЦеныНоменклатуры = Запрос.Выполнить().Выгрузить();
		Для Каждого СтрВыборка из ЦеныНоменклатуры Цикл         
			СтрТЧ = Объект.ЦеныНоменклатуры.Добавить();
		    СтрТЧ.Номенклатура = СтрВыборка.Номенклатура;
			СтрТЧ.ТекущаяЦена  = СтрВыборка.Цена;
		КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YNik 18.12.16 18:56 Сейчас в теме
(1), а где:
МенеджерЗаписи.Период = НоваяДата; 

vadim.semyonov.rzn; reneyr; Dmitri93; echo77; +4 Ответить
3. Anchoret 64 19.12.16 09:51 Сейчас в теме
У регистра сведений есть метод СоздатьНаборЗаписей, у которого, в свою очередь, есть метод Загрузить, в параметр которого передается таблица значений.
Синтаксис:

Загрузить(<ТаблицаЗначений>)
Параметры:

<ТаблицаЗначений> (обязательный)

Тип: ТаблицаЗначений.
Таблица значений, по которой производится заполнение набора записей.
Описание:

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


Пример:

Рег = РегистрыСведений.КурсыВалют;
НаборКурсов = Рег.СоздатьНаборЗаписей();
Таб = Новый ТаблицаЗначений;
// формирование таблицы значений

// ...

НаборКурсов.Загрузить(Таб);
 
Показать
user1027191; ST01; Alexeibv87; reneyr; armeec; Hexed; Xershi; unknow_user; greencactus2013; AlexeyK1; Stivens; SmArtist; djl; proonec; 7fortune; +15 Ответить
4. Xershi 1500 14.04.21 18:45 Сейчас в теме
(3) только записать в конце нужно еще.
Lacoste4life; zadoy; reneyr; Anchoret; +4 Ответить
5. olololeg 01.08.22 11:56 Сейчас в теме
(3)
(4)А у вас не затрутся все ли записи регистра кроме тех что в таблице?
Diks_Soft; sashazae; John_Bel; user640544_maxst22; +4 Ответить
6. MaxMiller 17.08.23 13:10 Сейчас в теме
(5) Так в этом и суть. Затрутся. Вытащить регистр, обработать его, потом загрузить обратно. В ином случае, полагаю, лучше добавлять записи циклически.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот