Имя: Пароль:
1C
 
Помогите сделать запрос для ут 10.3
0 101101
 
20.03.24
11:10
Есть документ реализация, по нему сделана корректировка реализации. По ней может еще быть сделана еще одна, и по ней еще и так много раз. Надо по ссылке на реализацию, которая является основанием корректировки первого уровня получить корректировку последнего уровня.
1 Волшебник
 
20.03.24
11:14
используйте СКД
2 101101
 
20.03.24
11:16
Мне не отчет нужен, а результат в обработке
3 Волшебник
 
20.03.24
11:18
(2) Ну так пройдитесь циклом Пока...Цикл
4 SerF_2011
 
20.03.24
11:51
Например, возьмите код, который получает структуру подчиненности документа первого уровня, в его результате выдачи найдите корректировку последнего уровня.
5 101101
 
20.03.24
12:12
Вот я такое придумал, как думаете, правильно или нет

Функция НижняяКорректировка(реализация)
    ЗапросКор=новый запрос;
    ЗапросКор.Текст="ВЫБРАТЬ
    |    КорректировкаРеализации.Ссылка
    |ИЗ
    |    Документ.КорректировкаРеализации КАК КорректировкаРеализации
    |ГДЕ
    |    КорректировкаРеализации.ДокументРеализации.Ссылка = &Ссылка
    |    И КорректировкаРеализации.Проведен = ИСТИНА";  
    ЗапросКор.УстановитьПараметр("Ссылка",реализация);
    итогкор=ЗапросКор.Выполнить().Выгрузить();
    текРеализация=реализация;
    Если итогкор.Количество()>0 тогда
        Пока итогкор.Количество()>0 цикл
            ЗапросКор.УстановитьПараметр("Ссылка",текРеализация);
            итогкор=ЗапросКор.Выполнить().Выгрузить();
            Если итогкор.Количество()>0 тогда
                текРеализация=итогкор[0].Ссылка;
            конецесли;
        Конеццикла;    
        возврат текРеализация;
    Иначе    
        возврат текРеализация;
    Конецесли;    
    
КонецФункции
6 SerF_2011
 
20.03.24
12:25
(5) запрос в цикле - расстрелять))
7 101101
 
20.03.24
12:28
(6)
Покажи, как без цикла это сделать
8 Garykom
 
20.03.24
12:32
(0) Когда подобная задача была для акцизов - пришлось делать виртуальные таблицы с +/- по дате
9 Garykom
 
20.03.24
12:33
(8)+ Ибо может быть реализация, а затем по очереди как возвраты так и корректировки и в + и в -
Причем корректировок бывает два вида
10 101101
 
20.03.24
12:34
(9)
У нас возвраты запретили делать, только корректировки
11 Волшебник
 
20.03.24
12:35
(6) У профессионалов запросы в циклах не тормозят. В данном случае запрос возможен, потому что в нём чёткий отбор по полю (надеюсь, индексированному). Можно запрос чуть упростить и ускорить:

    ВЫБРАТЬ
        К.Ссылка
    ИЗ
        Документ.КорректировкаРеализации КАК К
    ГДЕ
        К.ДокументРеализации = &Ссылка
        И К.Проведен
12 101101
 
20.03.24
12:37
(11)
И на сколько это ускорит?
13 Галахад
 
20.03.24
12:38
(10) Так не покатит?
Выбрать
  Т.Ссылка,
  Т.ДокументРеализации,
  Т.ДокументРеализации.ДокументРеализации,
  Т.ДокументРеализации.ДокументРеализации.ДокументРеализации
ИЗ
  Документ.КорректировкаРеализации КАК Т
ГДЕ
  Т.ДокументРеализации = &Ссылка
14 101101
 
20.03.24
12:40
(13)
Нет, у нас бывает больше 10 корректировок на реализацию
15 Garykom
 
20.03.24
12:41
(0) Посмотри в конфигураторе у корректировки реализации реквизит основание какой тип?
16 Garykom
 
20.03.24
12:42
И перефразируй свое
"Надо по ссылке на реализацию, которая является основанием корректировки первого уровня получить корректировку последнего уровня."

Вероятно все же "получить последнюю корректировку на выбранную дату"
17 101101
 
20.03.24
12:42
(15)
реализация или корректировка реализации
18 Garykom
 
20.03.24
12:43
(17) Не верю
19 Garykom
 
20.03.24
12:45
Разрабы конфы не предусмотрели вариант ввода документов задним числом?
Каким образом они в цепочку вклиниваются?
20 101101
 
20.03.24
12:45
(18)
Ну там около 10 документов по конфигуратору, но у нас в основание 2 попадают
21 Garykom
 
20.03.24
12:46
(20) Имхо должен быть реквизит всегда ссылающийся на первичную реализацию
22 101101
 
20.03.24
12:46
(19)
Суть в том, что если на реализацию сделана корректировка, то следующая корректировка должна быть на корректировку, а не на изначальную реализацию. Моя обработка это решает.
23 Волшебник
 
20.03.24
12:47
(12) На долю секунды. Главное ускорение — это индексация поля "ДокументРеализации"
24 Garykom
 
20.03.24
13:06
(21)+ Хрена се там в УТ 10.3 такого реально нету
Там вот такой изврат рекурсивный
25 Волшебник
 
20.03.24
13:08
(24) Выпендрились. Здесь достаточно цикла Пока...
26 Garykom
 
20.03.24
13:08
(24)+ мДокументРеализацииСсылка = УчетНДС.ПолучитьИсправляемыйДокументРеализации(ДокументРеализации, Истина);
27 Garykom
 
20.03.24
13:09
(5) Зачем тебе свой лисапед когда в конфе уже есть (24)(26)
28 101101
 
20.03.24
13:11
(24)
Интересно, это оказывается типовым методом решается. но у нас если делать корректировку на реализацию, то именно реализация основанием становится, непонятно как эта функция решает проблему.
29 Garykom
 
20.03.24
13:15
(28) Может уже сам поищешь?
30 101101
 
20.03.24
13:18
(29)
Вижу я функцию, но она не срабатывает при создании второй корректировки на реализацию, а моя срабатывает.
31 Garykom
 
20.03.24
13:24
(30) Так ты ее в цикле/рекурсии то вызови начиная от первичной реализации ))
Пока она не вернет тот же самый документ - значит все конец
32 АгентБезопасной Нацио
 
20.03.24
13:47
а в десятке в движениях корректировкиРеализации по регистрам - нет нигде ссылки на исходную реализацию?