|
Помогите сделать запрос для ут 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
|
а в десятке в движениях корректировкиРеализации по регистрам - нет нигде ссылки на исходную реализацию?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |