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

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 28 30.07.19 10:18 Сейчас в теме
(2) Никакого бреда! Вы сами то хоть раз делали несколько корректировок приобретения по одному товару?

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

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

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

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

Показать
13. Desnyanka 07.06.23 01:25 Сейчас в теме
(12) всё супер, только в запросе наоборот:

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

а в условии:

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

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

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