УТ11.4.13.103 УФ РегистрыСведений ЦеныНоменклатуры

1. Самоделкин 2 12.08.21 12:22 Сейчас в теме
Здравствуйте!

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

				Сообщить ("Номенклатура   "+Запись.Номенклатура);
				Сообщить ("Период         "+Запись.Период);
				Сообщить ("ВидЦены        "+Запись.ВидЦены);
				Сообщить ("Цена           "+Запись.Цена);
				Сообщить ("Валюта         "+Запись.Валюта);
				
			КонецЦикла;
			НаборЗаписей.Записать();
        КонецЦикла;

	КонецЦикла;
Показать


при нажатии выдает ошибку:
Запись не верна! Значение поля "Номенклатура" не может быть пустым!: ЦеныНоменклатуры: 01.01.0001 0:00:00, , , (Регистр сведений:Цены номенклатуры; Номер строки: 6)


Но Сообщить выводит все как надо:
Номенклатура 1111111111111111111111111111
Период 12.08.2021 12:16:30
ВидЦены Заказ
Цена 1 100
Валюта руб.


Как это исправить?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. stein13 10 12.08.21 12:26 Сейчас в теме
какой стоит тип у реквизита Номенклатура регистра сведений?
3. Самоделкин 2 12.08.21 12:39 Сейчас в теме
(2)СправочникСсылка.Номенклатура
4. Kolesonik 14 12.08.21 12:42 Сейчас в теме
(3)метод добавить должен быть в цикле, если не ошибаюсь
5. Kolesonik 14 12.08.21 12:44 Сейчас в теме
(3)новая Запись = набор Записей. Добавить ()
FatPanzer; +1 Ответить
6. Kolesonik 14 12.08.21 12:48 Сейчас в теме
(3)поставьте точку остановка на записи, и посмотрите что пытаетесь записать
7. Andrekaa 12.08.21 12:49 Сейчас в теме
НаборЗаписей.Прочитать();
НаборЗаписей.Добавить();
а если запись уже есть?
Самоделкин; +1 Ответить
9. Самоделкин 2 12.08.21 13:40 Сейчас в теме
(7)Да, надо бы почистить.
8. FatPanzer 12.08.21 13:11 Сейчас в теме
НаборЗаписей.Добавить();
Для Каждого Запись Из НаборЗаписей Цикл
    // бла-бла-бла    
    НаборЗаписей.Записать();
КонецЦикла;
Добавляется пустая строка в конец существующего набора, а потом в первой же итерации на первой же строке идет попытка записи (вместе с последней пустой строкой), чего непонятного-то???

Для Каждого Строка Из Объект.ПроцЦ_ТабличнаяЧасть Цикл
А вот эта хрень зачем? У вас все равно всегда запись заполняется последней строкой из этой табличной части...
Самоделкин; +1 Ответить
13. Самоделкин 2 12.08.21 14:04 Сейчас в теме
(8)
Для Каждого Строка Из Объект.ПроцЦ_ТабличнаяЧасть Цикл
А вот эта хрень зачем? У вас все равно всегда запись заполняется последней строкой из этой табличной части...

Из таблицы выдергиваются виды, цены и т.д.
16. FatPanzer 12.08.21 14:08 Сейчас в теме
(13) Так посмотри на свой первый код! Что с ними происходило? Ты их всегда в цикле записывал в одну и ту же запись набора! В итоге реальные данные в наборе записывались только на последнем цикле итерации (данные последней записи ТЧ).
Самоделкин; +1 Ответить
10. Самоделкин 2 12.08.21 13:57 Сейчас в теме
Спасибо за помощь.
Поправил:
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
		НаборЗаписей.Прочитать();
		НаборЗаписей.Записать();
		
			Для Каждого Строка Из Объект.ПроцЦ_ТабличнаяЧасть Цикл
				
			       Запись = НаборЗаписей.Добавить();
				
				Запись.Номенклатура = НоменклатураТовар;
				Запись.Период = ТекущаяДата();				
				Запись.ВидЦены = Строка.ВидЦены;
				Запись.Цена = Строка.Цена;
				Запись.Валюта = Строка.ВидЦены.ВалютаЦены;

				
			КонецЦикла;
       НаборЗаписей.Записать();	
Показать
11. user925427 126 12.08.21 14:01 Сейчас в теме
(10) Регистратор ещё нужно заполнить и упаковку - в запросе 7 полей, в записи - 5.
12. Самоделкин 2 12.08.21 14:03 Сейчас в теме
(11)Упаковок нет, характеристик тоже.
14. FatPanzer 12.08.21 14:04 Сейчас в теме
(10)
НаборЗаписей.Прочитать();
        НаборЗаписей.Записать();
        
ШТОА????
15. Самоделкин 2 12.08.21 14:05 Сейчас в теме
17. FatPanzer 12.08.21 14:08 Сейчас в теме
18. Самоделкин 2 12.08.21 14:12 Сейчас в теме
Оставьте свое сообщение

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