Запись данных в регистр накопления

1. A1nur1ch 20.03.24 10:36 Сейчас в теме
Короче говоря, каждый день в одном и том же документе меняются данные, которые надо каждый день учитывать, там приход и расход. Всё работает, но так как отбор делается по регистратору, он делает не добавление, а просто изменение данных, а мне нужно, чтобы он каждый день добавлял и сохранял данные для отчета. Вид регистра = Остатки. Код находится в модуле и запускается с регламентного задания. 1С 8.3.22.
Где косякнул? подскажите пожалуйста.

НаборЗаписей = РегистрыНакопления.ГАФ_АнализПродажПоставщиков.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Регистратор.Установить(СсылкаДокумента);
	Для каждого строка из СсылкаДокумента.Товары Цикл 
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ГАФ_ХраненияОстатковПредыдущегоДняТоваров.Номенклатура КАК Номенклатура,
		|	ГАФ_ХраненияОстатковПредыдущегоДняТоваров.Характеристика КАК Характеристика,
		|	ГАФ_ХраненияОстатковПредыдущегоДняТоваров.Количество КАК Количество,
		|	ГАФ_ХраненияОстатковПредыдущегоДняТоваров.Цена КАК Цена,
		|	ГАФ_ХраненияОстатковПредыдущегоДняТоваров.Сумма КАК Сумма,
		|	ГАФ_ХраненияОстатковПредыдущегоДняТоваров.ЕдИз КАК ЕдИз
		|ИЗ
		|	РегистрСведений.ГАФ_ХраненияОстатковПредыдущегоДняТоваров КАК ГАФ_ХраненияОстатковПредыдущегоДняТоваров
		|ГДЕ
		|	ГАФ_ХраненияОстатковПредыдущегоДняТоваров.Номенклатура = &Номенклатура
		|	И ГАФ_ХраненияОстатковПредыдущегоДняТоваров.Характеристика = &Характеристика
		|	И ГАФ_ХраненияОстатковПредыдущегоДняТоваров.СсылкаНаДокумент = &Регистратор";
	
	Запрос.УстановитьПараметр("Номенклатура",строка.Номенклатура); 
	Запрос.УстановитьПараметр("Характеристика",строка.Характеристика);
	Запрос.УстановитьПараметр("Регистратор",СсылкаДокумента);

	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если строка.Количество > ВыборкаДетальныеЗаписи.Количество Тогда
			Запись = НаборЗаписей.Добавить();
			Запись.ВидДвижения = ВидДвиженияНакопления.Приход;
			Запись.Период = ТекущаяДата();
			Запись.Номенклатура = строка.Номенклатура;
			Запись.Характеристика = строка.Характеристика;   
			Запись.Количество = строка.Количество - ВыборкаДетальныеЗаписи.Количество;
			Запись.Цена = строка.Цена;
			Запись.Сумма = строка.Сумма;
			Запись.ЕдИз = строка.Номенклатура.ЕдиницаИзмерения; 
			Запись.Склад = СсылкаДокумента.Склад;
			Запись.Регистратор = СсылкаДокумента; 			
		КонецЕсли;                                	
		Если строка.Количество < ВыборкаДетальныеЗаписи.Количество Тогда   			
			Запись = НаборЗаписей.Добавить();
			Запись.ВидДвижения = ВидДвиженияНакопления.Расход;
			Запись.Период = ТекущаяДата();
			Запись.Номенклатура = строка.Номенклатура;
			Запись.Характеристика = строка.Характеристика;
			Запись.Количество = ВыборкаДетальныеЗаписи.Количество - строка.Количество;
			Запись.Цена = строка.Цена;
			Запись.Сумма = строка.Сумма;
			Запись.ЕдИз = строка.Номенклатура.ЕдиницаИзмерения; 
			Запись.Склад = СсылкаДокумента.Склад;
			Запись.Регистратор = СсылкаДокумента; 				
		КонецЕсли;		
	КонецЦикла;			
	КонецЦикла; 
	НаборЗаписей.Записать();
    КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 20.03.24 11:03 Сейчас в теме
(1)
НаборЗаписей.Записать(Ложь)
4. A1nur1ch 20.03.24 12:48 Сейчас в теме
3. Sashares 34 20.03.24 12:40 Сейчас в теме
(1) Я бы предложил запрос вынести перед циклом, и один раз получить данные для всей ТЧ документа.
5. user1880116 20.03.24 12:53 Сейчас в теме
(1)
в одном и том же документе меняются данные, которые надо каждый день учитывать, там приход и расход
Это очень дурацкий подход. Делай каждый день документы с приходом и расходом, собирай итоги.
Оставьте свое сообщение

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