Корректировки поступления

1. user913097 30.07.19 08:43 Сейчас в теме
Доброго дня. Такой вопрос: есть поступление товаров, на его основании введена корректировка( и КСФ соответственно), на основании корректировки ещё корректировка и так цепочка может продолжаться долго. Как получить все эти корректировки, указав только первый документ поступления? Запрос даёт только 1 документ корректировки(

думал может через ТЗ сделать, но как не выходит придумать.. Помогите кто чем может:)

Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	КорректировкаПоступления.Ссылка КАК Ссылка
	               |ИЗ
	               |	Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
	               |		ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаПоступления КАК КорректировкаПоступления
	               |		ПО (КорректировкаПоступления.ДокументПоступления = ПоступлениеТоваровУслуг.Ссылка)
	               |ГДЕ
	               |	ПоступлениеТоваровУслуг.Ссылка = &Ссылка";
			
	
	Запрос.УстановитьПараметр("Ссылка",Основание);
	
	Результат = Запрос.Выполнить().Выгрузить();
	
	Для каждого Основания из Результат Цикл
		 // обработка ТЗ
		
	КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 30.07.19 09:08 Сейчас в теме
что за бред корректировка корректировки?
сделайте что бы корректировки только по поступлению были!
тогда и проблем со сбором корректировок не будет!

и вообще делайте запрос к Регистру накопления, там все ваши корректировки накапливаются/собираются
3. user913097 30.07.19 09:13 Сейчас в теме
(2) ну бред это или не бред это не важно, важно то, что так ведут документы..

проблема в том, что у последующих документов основание это корректировка поступления, а не само поступление, не получается выцепить сам приход(
9. YannikAlx 43 30.07.19 10:18 Сейчас в теме
(2) Никакого бреда! Вы сами то хоть раз делали несколько корректировок приобретения по одному товару?

Когда первая корректировка уменьшает скажем приобретение с 10 попугаев до 5, а следующая уменьшает эти проданные попугаи скажем до 0, то есть в результате 2 корректировок считаем , что попугаев вообще не покупали...
Цепочка на самом деле хранится в счетфактурах!
В первой корректировочной счф будет указано , что это корректировка исходной счф (из дк приобретения) , а во второй что это корректировочная счф на первую корректировочную...

Это кстати намек - как раскрутить всю цепочку корректировок... А то что последовательные корректировки являются именно связанной цепочкой - это безусловная истина. И увидеть это можно по суммам, которые должны уменьшаться от первой к последней (в случае корректировки на уменьшение)
4. chemezov 47 30.07.19 09:21 Сейчас в теме
Если все эти СФ видно в структуре подчиненности, то взять структуру подчиненности и из неё вытазить. Вроде как СКД там сделана структура подчиненности, соответственно программно берем тот макет скд и выгружаем в коллекцию значений, далее подбираем нужные КСФ.
5. user913097 30.07.19 09:28 Сейчас в теме
(4) я пробовал ещё вот так сделать
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СтруктураПодчиненности.Ссылка КАК Ссылка
ИЗ
КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности

но тут всё равно в результат попадает самая первая корректировка( и её СФ ) + другие доки которые не особо меня волнуют. т.е. по сути результат тот же, я получаю первую корректировку
10. YannikAlx 43 30.07.19 10:21 Сейчас в теме
(5) цепочку формируют не сами документы , а именно Сч-ф, так что смотрите туда... И раскручивая начиная с последней в цикле , пока не получите Сч-ф, которая не имеет коректируемой, то есть является первичной.
11. user913097 30.07.19 10:32 Сейчас в теме
(10) спасибо, буду пробовать через СФ что то получить
6. chemezov 47 30.07.19 09:35 Сейчас в теме
Тогда придется делать рекурсивную функцию, которой получать подчиненные документы и искать среди них КСФ
7. user913097 30.07.19 09:40 Сейчас в теме
(6) в том то и вопрос как получать основания у документов в цикле
8. chemezov 47 30.07.19 09:41 Сейчас в теме
Для этого нужно понять какой реквизит, ДОкументОснования или какой-то другой, связывает один документ с другим, и проверять эту связь в каждой итерации и искать пока этот реквизит не окажется пустым и связи с следующим не окажется.
12. mrx2012 17.01.20 14:16 Сейчас в теме
Функция ПолучитьКрайнийДокументКорректировки(ПТУ)
	Основание = ПТУ;
	ДокументОснование = ПТУ;
	Пока Основание <> Неопределено Цикл
		ДокументОснование = Основание;
		Основание  = КорректировкаПоПоступлению(Основание);
	
		Если Основание = Неопределено ТОгда
			Возврат ДокументОснование;
		КонецЕсли;
	КонецЦикла;
	
КонецФункции

Функция КорректировкаПоПоступлению(ПТУ)
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КорректировкаПоступления.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.КорректировкаПоступления КАК КорректировкаПоступления
		|ГДЕ
		|	КорректировкаПоступления.Проведен
		|	И КорректировкаПоступления.ДокументПоступления = &ПТУ";
	
	Запрос.УстановитьПараметр("ПТУ",ПТУ);
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Возврат ВыборкаДетальныеЗаписи.Ссылка;
	КонецЦикла;
	 Возврат Неопределено;	
 КонецФункции
Показать
Desnyanka; +1 Ответить
13. Desnyanka 07.06.23 01:25 Сейчас в теме
(12) всё супер, только в запросе наоборот:

КорректировкаПоступления.ДокументПоступления КАК Ссылка

а в условии:

И КорректировкаПоступления.Ссылка = &ПТУ";

вдруг кому пригодится ;)
Оставьте свое сообщение

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