Косяк при записи в регистр сведений

1. user1302499 16.04.21 08:38 Сейчас в теме
Добрый день. Сказали что я накосячил при записи в регистр сведений. Может кто подскажет в чем ошибка? Не могу разобраться Мой код комментами выделен.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	Для каждого строкаДО Из ДокументыОснования Цикл 
		       Запись =РегистрыСведений.ДокументЗарегистрированКОтгрузке.СоздатьМенеджерЗаписи();
			   Запись.РасходнаяНакладная = строкаДО.ДокументОснование;
			   Запись.Записать();
			   
			   //+++++++++++++++++++++++
			   НаборЗаписей = РегистрыСведений.ДокументКОтгрузке.СоздатьНаборЗаписей();
			   НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);
			   НоваяЗапись = НаборЗаписей.Добавить();
			   
			   НоваяЗапись.Период = ЭтотОбъект.Ссылка.Дата;
			   НоваяЗапись.РасходнаяНакладная = строкаДО.ДокументОснование;
			  			   
			   НаборЗаписей.Записать();   
			   
			   //-----------------------------
			   
	КонецЦикла;	
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
2. SlavaKron 16.04.21 08:42 Сейчас в теме
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	НаборЗаписей = Движения.ДокументКОтгрузке;
	НаборЗаписей.Записывать = Истина;
	Для каждого строкаДО Из ДокументыОснования Цикл 
		Запись = РегистрыСведений.ДокументЗарегистрированКОтгрузке.СоздатьМенеджерЗаписи();
		Запись.РасходнаяНакладная = строкаДО.ДокументОснование;
		Запись.Записать();
		
		//+++++++++++++++++++++++
		НоваяЗапись = НаборЗаписей.Добавить();
		
		НоваяЗапись.Период = Дата;
		НоваяЗапись.РасходнаяНакладная = строкаДО.ДокументОснование;
		
		//-----------------------------
		
	КонецЦикла;
КонецПроцедуры
Показать
FatPanzer; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 16.04.21 08:42 Сейчас в теме
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	НаборЗаписей = Движения.ДокументКОтгрузке;
	НаборЗаписей.Записывать = Истина;
	Для каждого строкаДО Из ДокументыОснования Цикл 
		Запись = РегистрыСведений.ДокументЗарегистрированКОтгрузке.СоздатьМенеджерЗаписи();
		Запись.РасходнаяНакладная = строкаДО.ДокументОснование;
		Запись.Записать();
		
		//+++++++++++++++++++++++
		НоваяЗапись = НаборЗаписей.Добавить();
		
		НоваяЗапись.Период = Дата;
		НоваяЗапись.РасходнаяНакладная = строкаДО.ДокументОснование;
		
		//-----------------------------
		
	КонецЦикла;
КонецПроцедуры
Показать
FatPanzer; +1 Ответить
4. user1302499 16.04.21 09:24 Сейчас в теме
(2) А чем Ваш вариант лучше моего?)
8. SlavaKron 16.04.21 09:40 Сейчас в теме
(4) Ваша основная ошибка в том, что набор вы записываете для каждой строки ТЧ, в итоге в регистр сведений будет записана только одна запись для последней строки, так как предыдущие будут затираться.
ЭтотОбъект.Ссылка.Дата – не повлияет на логику кода, но может существенно снизить быстродействие. В контексте процедуры ОбработкаПроведения достаточно просто Дата.
Ну и запись непосредственно набора записей вместо работы с движениями документа – избыточный кодинг. Воспользуйтесь конструктором движений и посмотрите как примерно должен выглядеть стандартный код.
dmbarchenkov; t278; user1302499; FatPanzer; +4 Ответить
9. user1302499 16.04.21 10:04 Сейчас в теме
3. DenisCh 16.04.21 08:48 Сейчас в теме
Я бы добавил явное присвоение регистратора в новой записи
5. user1302499 16.04.21 09:25 Сейчас в теме
(3) Так регистратор сам определяется же
6. DenisCh 16.04.21 09:27 Сейчас в теме
(5) по опыту - не всегда ((
Лучше перестраховаться. Я обычно ещё и активность устанавливаю явно...
7. user1302499 16.04.21 09:27 Сейчас в теме
Оставьте свое сообщение

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