Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Себестоимость)

1. user2128470 05.03.25 14:56 Сейчас в теме
&НаСервере
Процедура РассчитатьСебестоимостьНаСервере() 

	
	Для каждого СТР ИЗ  Объект.СписокНакладных Цикл  	
    Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РасходнаяНакладнаяСписокТоваров.Номенклатура КАК Номенклатура,
	|	РасходнаяНакладнаяСписокТоваров.Номенклатура.Вид КАК Вид,
	|	СУММА(РасходнаяНакладнаяСписокТоваров.Количество) КАК Количество,
	|	СУММА(РасходнаяНакладнаяСписокТоваров.Сумма) КАК Сумма,
	|	РасходнаяНакладнаяСписокТоваров.Ссылка КАК Ссылка
	|ПОМЕСТИТЬ Первый
	|ИЗ
	|	Документ.РасходнаяНакладная.СписокТоваров КАК РасходнаяНакладнаяСписокТоваров
	|ГДЕ
	|	РасходнаяНакладнаяСписокТоваров.Ссылка = &Ссылка
	|
	|СГРУППИРОВАТЬ ПО
	|	РасходнаяНакладнаяСписокТоваров.Номенклатура,
	|	РасходнаяНакладнаяСписокТоваров.Номенклатура.Вид,
	|	РасходнаяНакладнаяСписокТоваров.Ссылка
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Номенклатура
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Первый.Номенклатура КАК Номенклатура,
	|	Первый.Вид КАК Вид,
	|	Первый.Количество КАК Количество,
	|	Первый.Сумма КАК Сумма,
	|	СебестоимостьОстатки.Партия КАК Партия,
	|	ЕСТЬNULL(СебестоимостьОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
	|	ЕСТЬNULL(СебестоимостьОстатки.СтоимостьОстаток, 0) КАК СтоимостьОстаток,
	|	Первый.Ссылка КАК Ссылка
	|ИЗ
	|	Первый КАК Первый
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Себестоимость.Остатки(
	|				&Дата,
	|				Номенклатура В
	|					(ВЫБРАТЬ
	|						Первый.Номенклатура
	|					ИЗ
	|						Первый КАК Первый)) КАК СебестоимостьОстатки
	|		ПО Первый.Номенклатура = СебестоимостьОстатки.Номенклатура
	|ГДЕ
	|	Первый.Вид = ЗНАЧЕНИЕ(Перечисление.ВидНоменклатуры.Товар)
	|
	|УПОРЯДОЧИТЬ ПО
	|	СебестоимостьОстатки.Партия.МоментВремени
	|ИТОГИ
	|	МАКСИМУМ(Количество),
	|	МАКСИМУМ(Сумма),
	|	СУММА(КоличествоОстаток),
	|	СУММА(СтоимостьОстаток)
	|ПО
	|	Номенклатура";
	
	Запрос.УстановитьПараметр("Ссылка", Стр.Накладные);
	Запрос.УстановитьПараметр("Дата",ТекущаяДата());
	
	Результат = Запрос.Выполнить();
	
	ВыборкаИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Пока ВыборкаИтог.Следующий() Цикл 
		
		Если ВыборкаИтог.КоличествоОстаток = 0 Тогда 
			Сообщить("Ошибка");
			Возврат;
		Иначе 
			
			СколькоСписать = ВыборкаИтог.Количество;
			ВыборкаПартия = ВыборкаИтог.Выбрать();
			Себестоимость = 0;
			Пока ВыборкаПартия.Следующий() И СколькоСписать <> 0 Цикл 
				СписатьСПартии = МИН(СколькоСписать,ВыборкаПартия.КоличествоОстаток);
				
				Себестоимость = ВыборкаПартия.СтоимостьОстаток/ ВыборкаПартия.КоличествоОстаток * СписатьСПартии;
				
				НаборЗаписей = РегистрыНакопления.Себестоимость.СоздатьНаборЗаписей();
                               
                Движение = НаборЗаписей.ДобавитьРасход();
                Движение.Период = ТекущаяДата();
                Движение.Номенклатура = ВыборкаПартия.Номенклатура;
                Движение.Партия = ВыборкаПартия.Партия;
				Движение.Регистратор = ВыборкаПартия.Ссылка;
                Движение.Количество = СписатьСПартии; // Расход (отрицательное значение)
				Движение.Стоимость = Себестоимость;
				                
                НаборЗаписей.Записывать = Истина;
				НаборЗаписей.Записать();
                СколькоСписать = СколькоСписать - СписатьСПартии;
				
						 
			 КонецЦикла;
		 КонецЕсли;
		 
		 КонецЦикла;
	КонецЦикла;	
	КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 05.03.25 15:10 Сейчас в теме
(1) Установить отбор по регистратору набору записей не предлагать?
3. user2128470 05.03.25 15:15 Сейчас в теме
Так тоже пробовал НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПартия.Ссылка); Все равно ошибку такую выдает
4. Sashares 33 05.03.25 15:25 Сейчас в теме
(3) Документ, по которому ставишь отбор является регистратором регистра?
5. user2128470 05.03.25 15:28 Сейчас в теме
6. user2128470 05.03.25 15:28 Сейчас в теме
7. Sashares 33 05.03.25 15:32 Сейчас в теме
(6) Поставь точку останова, и посмотри что устанавливается.
8. Pavel Rodinchenko 05.03.25 16:09 Сейчас в теме
(3) Так у вас параметр в запросе это ссылка на документ, зачем ее получать из запроса в таком случае? Сделайте просто НаборЗаписей.Отбор.Регистратор.Установить(Стр.Накладные)
9. spacecraft 05.03.25 16:24 Сейчас в теме
(3) НаборЗаписей.Отбор.Регистратор.Значение = ВыборкаПартия.Ссылка;
НаборЗаписей.Прочитать();
Оставьте свое сообщение

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