Запрос на регистр накопления

1. Intercititude 08.05.20 16:33 Сейчас в теме
Доброе время суток всем! Обычные формы.
Есть следующий запрос:
ВЫБРАТЬ
                СУММА(ВЫБОР
                                               КОГДА ЗаказПокупателя.СуммаДокумента <= ЕСТЬNULL(РеализацияТоваровУслуг.СуммаДокумента, 0)
                                                               ТОГДА ЕСТЬNULL(РеализацияТоваровУслуг.СуммаДокумента, 0)
                                               ИНАЧЕ ЗаказПокупателя.СуммаДокумента
                               КОНЕЦ) КАК СуммаДокумента
ПОМЕСТИТЬ ВТ_Сумма
ИЗ
                Документ.ЗаказПокупателя КАК ЗаказПокупателя
                               ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                               ПО (РеализацияТоваровУслуг.Сделка = ЗаказПокупателя.Ссылка)
                                               И (РеализацияТоваровУслуг.Проведен)
ГДЕ
                ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                И ЗаказПокупателя.Контрагент = &Контрагент
                И ЗаказПокупателя.Проведен
                И НЕ ЗаказПокупателя.Ссылка = &Ссылка
                И РеализацияТоваровУслуг.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
                СУММА(РеализацияТоваровУслуг.СуммаДокумента)
ИЗ
                Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
                РеализацияТоваровУслуг.Сделка = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                И РеализацияТоваровУслуг.Контрагент = &Контрагент
                И РеализацияТоваровУслуг.Проведен
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
                СУММА(ЗаказПокупателя.СуммаДокумента)
ИЗ
                Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
                ЗаказПокупателя.Контрагент = &Контрагент
                И ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                И ЗаказПокупателя.Проведен
               И НЕ ЗаказПокупателя.Ссылка = &Ссылка
                И НЕ ЗаказПокупателя.Ссылка В
                                                               (ВЫБРАТЬ
                                                                              реа.Сделка
                                                               ИЗ
                                                                              документ.РеализацияТоваровУслуг КАК реа)
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
                ЗаказПокупателя.СуммаДокумента
ИЗ
                Документ.ЗаказПокупателя КАК ЗаказПокупателя
                               ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                               ПО (РеализацияТоваровУслуг.Сделка = ЗаказПокупателя.Ссылка)
ГДЕ
                ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                И ЗаказПокупателя.Контрагент = &Контрагент
                И ЗаказПокупателя.Проведен
                И НЕ ЗаказПокупателя.Ссылка = &Ссылка
                И НЕ РеализацияТоваровУслуг.Проведен
;
 
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
                СУММА(ЕСТЬNULL(ВТ_Сумма.СуммаДокумента, 0)) КАК СуммаЗаПериод
ИЗ
                ВТ_Сумма КАК ВТ_Сумма
Показать


Суть в том, что берутся за период по определенному контрагенту по условию документы и получается общая сумма:

1) Проведенные связки заказов и реализации ( Берётся большая сумма
2) Проведенные реализации без заказов(Сумма реализации).

3) Проведенные заказы без связок с реализацией(Сумма заказов).

4) Связки заказов[проведенные] и реализации[не проведенные] ( Сумма заказов ).

Возможно ли переделать этот же запрос на регистр "Заказы покупателей" с четырями условиями? И достаточно ли этого регистра ?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
23. Intercititude 12.05.20 14:23 Сейчас в теме
(22)
ВЫБРАТЬ

РТУ.Регистратор,

СУММА(РТУ.Стоимость) КАК СуммаРТУ,

РТУ.Регистратор.Сделка КАК Сделка

ПОМЕСТИТЬ ВТ_РТУ

ИЗ

РегистрНакопления.Продажи КАК РТУ

ГДЕ

РТУ.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

И РТУ.Контрагент = &Контрагент

И РТУ.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг



СГРУППИРОВАТЬ ПО

РТУ.Регистратор,

РТУ.Регистратор.Сделка

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

СУММА(Заказы.СуммаВзаиморасчетов) КАК СуммаЗаказов,

Заказы.ЗаказПокупателя

ПОМЕСТИТЬ ВТ_Заказы

ИЗ

РегистрНакопления.ЗаказыПокупателей КАК Заказы

ГДЕ

Заказы.Регистратор ССЫЛКА Документ.ЗаказПокупателя

И Заказы.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

И Заказы.ЗаказПокупателя.Контрагент = &Контрагент



СГРУППИРОВАТЬ ПО

Заказы.ЗаказПокупателя

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

ВЫБОР

КОГДА Заказы.СуммаЗаказов <= ЕСТЬNULL(Реализации.СуммаРТУ, 0)

ТОГДА ЕСТЬNULL(Реализации.СуммаРТУ, 0)

ИНАЧЕ Заказы.СуммаЗаказов

КОНЕЦ КАК СуммаЗаПериод

ПОМЕСТИТЬ ВТ_ИТОГ

ИЗ

ВТ_РТУ КАК Реализации

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Заказы КАК Заказы

ПО Реализации.Регистратор.Сделка = Заказы.ЗаказПокупателя.Ссылка



ОБЪЕДИНИТЬ ВСЕ



ВЫБРАТЬ

Реализации.СуммаРТУ

ИЗ

ВТ_РТУ КАК Реализации

ГДЕ

Реализации.Регистратор.Сделка = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)



ОБЪЕДИНИТЬ ВСЕ



ВЫБРАТЬ

Заказы.СуммаЗаказов

ИЗ

ВТ_Заказы КАК Заказы

ГДЕ

НЕ Заказы.ЗаказПокупателя.Ссылка В

(ВЫБРАТЬ

реализации.Сделка

ИЗ

реализации)

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

СУММА(ВТ_ИТОГ.СуммаЗаПериод) КАК СуммаЗаПериод

ИЗ

ВТ_ИТОГ КАК ВТ_ИТОГ
Показать


Извиняюсь за формат кода, криво копирует с удаленки. На рабочем компе нету 10.3 для форматирования в консоли.

В общем получилось что из шапки моей темы пункт 3 и 4 скрестились.
Сумма получилась итоговая такая же как и в запросе из шапки, но думаю ньюансы есть, пока что не вижу их.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 08.05.20 16:39 Сейчас в теме
(1) нужно взять и написать запрос по регистру под соответствующую задачу
3. Salavat 13 08.05.20 16:42 Сейчас в теме
(2)а для начала (очень неплохо) - научиться излагать.
(автора, имею ввиду. к Вам - присоединяюсь)
4. Intercititude 08.05.20 16:56 Сейчас в теме
6. Salavat 13 08.05.20 17:00 Сейчас в теме
(4)ок. Уже чтото.

Ещё - текст запроса, читаемым сделайте, пожалуйста.

И - конфигурация, какая?
8. Intercititude 08.05.20 17:01 Сейчас в теме
(6) Запихай в конструктор запроса. Где он не читаем ?
10. Salavat 13 08.05.20 17:02 Сейчас в теме
(8)
ок, ты уже похоже - запихал.
(не только текст, и не только в конструктор)
я не буду - и лень, и моральные...
13. Intercititude 08.05.20 17:23 Сейчас в теме
(10) Извиняюсь,настроение нету из-за этого запроса, заказчик мозг вые
11. ZergKRSK 129 08.05.20 17:09 Сейчас в теме
(8)
Запихай в конструктор запроса. Где он не читаем ?

на экране трудночитаем. и не каждый может засунуть в конструктор по причине отсутствия конфы.
5. ZergKRSK 129 08.05.20 16:58 Сейчас в теме
(1)
Возможно ли переделать этот же запрос на регистр "Заказы покупателей" с четырями условиями?

для чего хотите переделать запрос именно на регистр? что сейчас не устраивает?
7. Intercititude 08.05.20 17:01 Сейчас в теме
(5) То что другие документы могут менять сумму. Отсюда и решение на регистр перейти.
9. ZergKRSK 129 08.05.20 17:02 Сейчас в теме
(7) очевидно тогда что четырех условий не хватит
12. Intercititude 08.05.20 17:16 Сейчас в теме
(9) Даже если переделать на регистр имеете ввиду ?
Вот сейчас в ступоре, либо к существующему запросы добавить условия, либо на регистр переходить полностью. Но не уверен что на регистре связки такие возможно сделать.
14. YannikAlx 43 08.05.20 17:52 Сейчас в теме
(7) Непонятно как-то документы поменяют суммы - а что движения по регистрам не изменятся?

Вы же Используете фильтр документ.проведен

Зачем все-таки переходить на регистр, если все работает?
15. Intercititude 08.05.20 17:59 Сейчас в теме
(14)подразумевается что и другие документы могут менять суммы Заказов и Реализации. К примеру "закрытие заказов покупателя",есть ещё и другие.
16. VictorRGB2 13 08.05.20 18:20 Сейчас в теме
смею предположить, что раз обычные формы, заказ и реализация, то это нечто типа УТ 10.3
если так или похоже, то одним регистром заказов не обойтись, да и нужно ли?
продажи надо будет брать с регистра продаж

примерно так (при переводе на регистры), схема по условиям
1. реализация с продаж с условием что основание (сделка) есть и это заказ, связка с заказом по основанию, заказ с заказов (под вопросом)
2. реализация с продаж с условием что основание (сделка) пусто (или это не заказ, ту смотреть по требованиям)
3. заказы из документов, без связанного документа реализации (тут не помню точно как в регистре заказов отображаются записи по заказам с отгрузкой, если можно вычленить с регистра, то брать с регистра)
4. вариация пункта 3, только со связанным документом реализации
17. Intercititude 12.05.20 10:45 Сейчас в теме
(16) Да. 10.3
Разумеется регистр продаж необходим.
То есть вы считаете что в принципе на регистры эти условия переделать возможно?
Не совсем пойму как учитывать по регистрам ВидПрихода.
18. VictorRGB2 13 12.05.20 12:17 Сейчас в теме
(17) в принципе можно переделать на регистры в ключевых данных по продажам, по заказам честно не помню как там ведется учет, а 10.3 под рукой нет
точно при проведении заказа в регистр пишется приход под заказ, а вот пишется расход или запись аннлуируется при проведении реализации по заказу или при отмене заказа, вот это не скажу точно, надо смотреть

(17)
как учитывать по регистрам ВидПрихода
зависит от того, что вы понимаете под ВидПрихода
19. Intercititude 12.05.20 12:22 Сейчас в теме
(18) Ну я вот начал делать.
1) Взял из регистра продажи только все реализации за период по контрагенту. Указав что основание заказ.
2) Взял из регистра заказы покупателей только все заказы за период по контрагенту. Указав что регистра Заказ покупателя.
3) Уже объединением играюсь с первыми двумя пунктами и получаю все 4 моих условия

Этого же достаточно по идее?
20. VictorRGB2 13 12.05.20 12:51 Сейчас в теме
(19) по идее да, основные данные из регистров получены, дальше или через объединения в запросе или результат запроса в цикле обработать и добавить недостающие данные
Intercititude; +1 Ответить
21. Intercititude 12.05.20 13:21 Сейчас в теме
(20) Смею спросить. Могу ли итоговый запрос Вам показать на корректность?
22. VictorRGB2 13 12.05.20 13:40 Сейчас в теме
(21) попробуйте
но т.к. конфы под рукой нет, то на 100% я не смогу, чисто теоретически
если устраивает такой вариант, кидайте
23. Intercititude 12.05.20 14:23 Сейчас в теме
(22)
ВЫБРАТЬ

РТУ.Регистратор,

СУММА(РТУ.Стоимость) КАК СуммаРТУ,

РТУ.Регистратор.Сделка КАК Сделка

ПОМЕСТИТЬ ВТ_РТУ

ИЗ

РегистрНакопления.Продажи КАК РТУ

ГДЕ

РТУ.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

И РТУ.Контрагент = &Контрагент

И РТУ.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг



СГРУППИРОВАТЬ ПО

РТУ.Регистратор,

РТУ.Регистратор.Сделка

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

СУММА(Заказы.СуммаВзаиморасчетов) КАК СуммаЗаказов,

Заказы.ЗаказПокупателя

ПОМЕСТИТЬ ВТ_Заказы

ИЗ

РегистрНакопления.ЗаказыПокупателей КАК Заказы

ГДЕ

Заказы.Регистратор ССЫЛКА Документ.ЗаказПокупателя

И Заказы.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

И Заказы.ЗаказПокупателя.Контрагент = &Контрагент



СГРУППИРОВАТЬ ПО

Заказы.ЗаказПокупателя

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

ВЫБОР

КОГДА Заказы.СуммаЗаказов <= ЕСТЬNULL(Реализации.СуммаРТУ, 0)

ТОГДА ЕСТЬNULL(Реализации.СуммаРТУ, 0)

ИНАЧЕ Заказы.СуммаЗаказов

КОНЕЦ КАК СуммаЗаПериод

ПОМЕСТИТЬ ВТ_ИТОГ

ИЗ

ВТ_РТУ КАК Реализации

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Заказы КАК Заказы

ПО Реализации.Регистратор.Сделка = Заказы.ЗаказПокупателя.Ссылка



ОБЪЕДИНИТЬ ВСЕ



ВЫБРАТЬ

Реализации.СуммаРТУ

ИЗ

ВТ_РТУ КАК Реализации

ГДЕ

Реализации.Регистратор.Сделка = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)



ОБЪЕДИНИТЬ ВСЕ



ВЫБРАТЬ

Заказы.СуммаЗаказов

ИЗ

ВТ_Заказы КАК Заказы

ГДЕ

НЕ Заказы.ЗаказПокупателя.Ссылка В

(ВЫБРАТЬ

реализации.Сделка

ИЗ

реализации)

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

СУММА(ВТ_ИТОГ.СуммаЗаПериод) КАК СуммаЗаПериод

ИЗ

ВТ_ИТОГ КАК ВТ_ИТОГ
Показать


Извиняюсь за формат кода, криво копирует с удаленки. На рабочем компе нету 10.3 для форматирования в консоли.

В общем получилось что из шапки моей темы пункт 3 и 4 скрестились.
Сумма получилась итоговая такая же как и в запросе из шапки, но думаю ньюансы есть, пока что не вижу их.
24. VictorRGB2 13 12.05.20 15:20 Сейчас в теме +0.22 $m
(23) на мой взгляд, теоретически все верно, тем более у вас подтверждается цифрами
25. Intercititude 22.05.20 12:27 Сейчас в теме
(24)Извините, проблема появилась, если регистры пустые, то вылазит null. Не могу избавиться от него, так как в последнем пакете запросов я группирую. Как сделать правильнее ?
26. VictorRGB2 13 22.05.20 15:31 Сейчас в теме
(25) 1. через ВЫБОР КОГДА, но в текущем случае вряли
2. поместить последний пакет во временную таблицу и уже по ней выбрать по условию НЕ ЕСТЬ NULL

думаю как-то так
27. Intercititude 24.05.20 14:52 Сейчас в теме
(26) выбрать по ней ? Что имеете ввиду
28. VictorRGB2 13 25.05.20 09:57 Сейчас в теме
(27) как-то так
ВЫБРАТЬ
   СУММА(ВТ_ИТОГ.СуммаЗаПериод) КАК СуммаЗаПериод
ИЗ
   ВТ_ИТОГ КАК ВТ_ИТОГ
ГДЕ 
   НЕ ВТ_ИТОГ.СуммаЗаПериод <> 0


вообще не понятно откуда null возникает, если записи с регистра берутся
нет записей, нет результата, нет null
29. Intercititude 25.05.20 17:16 Сейчас в теме
(28) Получилось разобраться. Дело в том, что просто суммирую одно поле в группировках(Сумма),а группировочного поля нету. Если добавить ссылку, то всё ок.
30. Intercititude 25.05.20 20:04 Сейчас в теме
(28) А ваше условие не отрабатывает..
И если я группирую по ссылке, то не отрабатывает Сумма :(

Хотел ещё спросить у Вас, а то что я сгруппировал реализации в первом подзапросе это корректно вообще?
31. VictorRGB2 13 26.05.20 10:14 Сейчас в теме
(30) вообще в первом запросе группировать нужно если только отгрузка была по нескольким заказам, но у вас скорее всего не так
группировать по ссылке особого смысла не имеет, т.к. ссылка уже есть уникальная вещь, но в принципе и не возбраняется
ну а по условию поиграться надо, может там не ноль а null, поэтому и не срабатывает

я бы попробовал заменить СУММА(РТУ.Стоимость) КАК СуммаРТУ на просто РТУ.Стоимость КАК СуммаРТУ
и СУММА(Заказы.СуммаВзаиморасчетов) КАК СуммаЗаказов на просто Заказы.СуммаВзаиморасчетов КАК СуммаЗаказов
это данные с регистра, это уже сумма расчетов по документу, а суммируете вы итоги позже
32. Intercititude 26.05.20 11:43 Сейчас в теме
(31) Попробую. Спасибо.

А равносильно по вашему мнению это?
ЕСТЬNULL(Вт_итог.сумма,0) Как СуммаЗаПериод

И

Если Пустая строка(суммаЗаПериод) тогда
Сумма ЗаПериод =0 конецесли
33. VictorRGB2 13 26.05.20 17:03 Сейчас в теме
(32) нет
NULL, ЕСТЬNUL, ЕСТЬ NULL, 0, пустая строка -
то все будут разные сравнения
NULL нельзя сравнить с 0, например
а пустую строку с NULL
34. Intercititude 26.05.20 17:13 Сейчас в теме
(33) Хм, но у меня отрабатывает. Так как в запросе я не смог избавиться от null всё-таки.
И сделал в коде так после выборки:
Если Пустая строка(суммаЗаПериод) тогда
СуммаЗаПериод =0 
конецесли


и всё отрабатывает корректно, если в выборке Null, то СуммеЗаПериод присваивается 0,как мне и надо.


И если я убираю группировки по ссылке и сумме в запросе к регистру Продажи, получая Реализации, то выводится две суммы.Так как в заказе и реализации две позиции номенклатуры.. Так что без группировки некорректно получается.

И как в итоге то быть ? я уже как только не пытался изменить запрос..
Как можно обойти Null правильно после выборки тогда ?!
35. VictorRGB2 13 26.05.20 18:33 Сейчас в теме
(34) да. это я затупил в 31, как-то не сообразил, что в документах может быть несколько строк
а по Null у вас уже решение готово ЕСТЬNULL(Вт_итог.сумма,0)
осталось только это поместить опять во временную и выбрать из нее данные еще раз, с условием Сумма <>0
36. Intercititude 26.05.20 18:35 Сейчас в теме
(35) Я так делал уже, всё равно null...
37. VictorRGB2 13 26.05.20 19:12 Сейчас в теме
(36) есть только демка, все нормально, никаких нулевых строк
ВЫБРАТЬ
	РТУ.Регистратор,
	СУММА(РТУ.Стоимость) КАК СуммаРТУ,
	РТУ.Регистратор.Сделка КАК Сделка
ПОМЕСТИТЬ ВТ_РТУ
ИЗ
	РегистрНакопления.Продажи КАК РТУ
ГДЕ
	РТУ.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
	И РТУ.Контрагент = &Контрагент
	И РТУ.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг

СГРУППИРОВАТЬ ПО
	РТУ.Регистратор,
	РТУ.Регистратор.Сделка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СУММА(Заказы.СуммаВзаиморасчетов) КАК СуммаЗаказов,
	Заказы.ЗаказПокупателя
ПОМЕСТИТЬ ВТ_Заказы
ИЗ
	РегистрНакопления.ЗаказыПокупателей КАК Заказы
ГДЕ
	Заказы.Регистратор ССЫЛКА Документ.ЗаказПокупателя
	И Заказы.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
	И Заказы.ЗаказПокупателя.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
	Заказы.ЗаказПокупателя
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЫБОР
		КОГДА втЗаказы.СуммаЗаказов <= ЕСТЬNULL(втРеализации.СуммаРТУ, 0)
			ТОГДА ЕСТЬNULL(втРеализации.СуммаРТУ, 0)
		ИНАЧЕ втЗаказы.СуммаЗаказов
	КОНЕЦ КАК СуммаЗаПериод
ПОМЕСТИТЬ ВТ_ИТОГ
ИЗ
	ВТ_РТУ КАК втРеализации
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Заказы КАК втЗаказы
		ПО втРеализации.Регистратор.Сделка = втЗаказы.ЗаказПокупателя.Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	втРеализации.СуммаРТУ
ИЗ
	ВТ_РТУ КАК втРеализации
ГДЕ
	втРеализации.Регистратор.Сделка = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	втЗаказы.СуммаЗаказов
ИЗ
	ВТ_Заказы КАК втЗаказы
ГДЕ
	НЕ втЗаказы.ЗаказПокупателя.Ссылка В
				(ВЫБРАТЬ
					втРеализации.Сделка
				ИЗ
					ВТ_РТУ КАК втРеализации)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СУММА(ВТ_ИТОГ.СуммаЗаПериод) КАК СуммаЗаПериод
ИЗ
	ВТ_ИТОГ КАК ВТ_ИТОГ
Показать
38. Intercititude 26.05.20 19:20 Сейчас в теме
(37) Ну это же мой же и запрос.
Данных точно нету ?
Может в конфе дело. Ут 10.3 у меня.
39. VictorRGB2 13 26.05.20 19:26 Сейчас в теме
(38) демка 10.3
данные есть
выводит одну строку по выбранным параметрам, собственно как и должен по запросу
нужно на данных ковырять, загнать запрос в обработку и выполняя отдельные пакеты смотреть что в результате
так сложно сказать в какой момент и откуда возникает null
вот проверил на демке, все ок, другой 10.3 нет
40. Intercititude 26.05.20 19:32 Сейчас в теме
(39) Странные дела. Я по порядку и проверял. Говорю же после объединения как только делаю СУММА(ВТ_ИТОГ.СуммаЗаПериод) КАК СуммаЗаПериод
то сразу вылазит null.. а если добавить поле группировки,всё ок.
Но я не знаю как в объединениях добавить поля(ссылки) для группировки, там разные ссылки...
41. Intercititude 27.05.20 13:40 Сейчас в теме
(39) Не по теме вопрос, но возможно Вы как более опытный человек подскажете.
Когда я делаю в объединениях первый запрос( Связка Заказ и Реализации) то выбираю сумму по условию, как оказалось оно не корректно,так как участвует ещё документ закрытие заказа покупателя и непонятно какую сумму брать из-за этого...
Что можете посоветовать ? Спасибо заранее.
42. VictorRGB2 13 27.05.20 15:11 Сейчас в теме
(41) эхх... давно я 10.3 не ковырял )
по идее закрытие заказов обнуляет количество и сумму по резерву. а значит обнуляет эти ресурсы в регистре ЗаказыПокупателя
при этом подразумевается, что закрыть заказ с проведенной отгрузкой по идее нельзя, и если такое есть, то это ошибка в данных
т.о. получается, что с регистра ЗаказыПокупателя надо брать не все данные, а только те, что не равны ноль по количеству, например, отсекая тем самым как раз закрытые заказы
43. Intercititude 27.05.20 15:26 Сейчас в теме
(42) Оёй, звучит страшно :)
А в моём запросе конкретно в связке как то это сделать для моей поставленной задачи( получения суммы за период ).
Потому что я как кроме создать новый регистр ничего не придумал...
44. VictorRGB2 13 27.05.20 15:41 Сейчас в теме
(43) навскидку если
ВЫБРАТЬ
    СУММА(Заказы.СуммаВзаиморасчетов) КАК СуммаЗаказов,
    Заказы.ЗаказПокупателя
ПОМЕСТИТЬ ВТ_Заказы
ИЗ
    РегистрНакопления.ЗаказыПокупателей КАК Заказы
ГДЕ
    Заказы.Регистратор ССЫЛКА Документ.ЗаказПокупателя
    И Заказы.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    И Заказы.ЗаказПокупателя.Контрагент = &Контрагент
    И Заказы.Количество <> 0

СГРУППИРОВАТЬ ПО
    Заказы.ЗаказПокупателя
Показать
45. Intercititude 27.05.20 18:23 Сейчас в теме
(44) Не правильно поняли меня думаю.
Приложил файл, где сделан отбор по одному заказу покупателя в регистре заказ покупателя.
Заказ сделан на сумму 5242(приход), Реализация на 4717,82(расход). Закрытие на 1048,40(расход)
В итоге по моему условию взялась сумма 5242,а должна быть 4717,82.
К примеру если суммы будут одинаковые 5242 и 5242, то и будет 5242, хотя по факту 0.
Может так, что и реализация на сумму больше, чем заказ и снова непонятно как быть...

Подскажите, если бонусом отправлю вам $ здесь.
Прикрепленные файлы:
1.mxl
2.txt
46. VictorRGB2 13 27.05.20 19:11 Сейчас в теме +0.14 $m
(45) или вы сами запутались или я
я в таких случаях беру карандаш и начинаю рисовать
начальные условия - что могу получить их условий - что должен получить в результате
и так для всех вариантов начальных условий

опишите задачу подробно
судя по всему из суммы заказа нужно вычесть закрытие (связь по заказу) и получить результирующую сумму заказа, которую потом сравнить с суммой реализации (связь по заказу)
Intercititude; +1 Ответить
47. Intercititude 28.05.20 12:23 Сейчас в теме
(46) Задача следующая:
1) Есть документ "Согласованная сумма" В которой указывается дата начала и дата конца. Так же контрагент и сумма.
2) В итоге при проведении заказа, если СуммаЗаПериод(Которая и берёт мой запрос) + СуммаТекущегоПроводимого заказа > Согласованной суммы, то не проводим.
Собственно и всё.

Всё учитывается нормально, но вот эти связки с Заказом и реализацией не совсем правильно учитываются по моему условию, не знаю что даже и делать...

судя по всему из суммы заказа нужно вычесть закрытие (связь по заказу) и получить результирующую сумму заказа, которую потом сравнить с суммой реализации (связь по заказу)

По поводу этого:
1) Это же получается только одно условие я могу обойти таким способом, но есть же и другие случаи, или я ошибаюсь?
2) Как получить в моём же запросе сумму закрытия ? хм
48. Intercititude 28.05.20 13:11 Сейчас в теме
(46)Вы правильно описали, но помогите как в моём запросе вычитать сумму закрытия из заказа и после сравнивать по моему условию...
Разве эта сумма по заказу(заказ - закрытие) уже не должна сразу вылазить ?
То есть закрытие появляется только когда номенклатурная сетка разница, но как это исключить в запросе...
49. VictorRGB2 13 28.05.20 13:14 Сейчас в теме
(48) в моей демке нет таких данных, этому если устроит чисто теоретический вариант, покопаюсь
не устроит - или нужны данные или помочь не могу
50. Intercititude 28.05.20 13:20 Сейчас в теме
(49) Извините не предупредил,но у меня Ут 10.3 отраслевая ( ут алкогольной продукцией).
51. Intercititude 28.05.20 13:24 Сейчас в теме
(49)Вот скриншот. Взят регистр Заказы покупателей,без условия:
Заказы.Регистратор ССЫЛКА Документ.ЗаказПокупателя

Только отбор по дате и контрагенту. Заказ покупателя один и тот же у каждой строки.
В итоге вот результат.

Как вы и сказали,надо из суммызаказа вычесть закрытие, после сравнить эту сумму с реализацией по условию как раз которое меня уже есть в запросе при связке заказа и реализации
Прикрепленные файлы:
52. VictorRGB2 13 28.05.20 13:53 Сейчас в теме
(51) чисто теоретически
втЗаказы - запрос к Заказы по регистратору Заказ, в результате ЗаказСумма, ЗаказСсылка

втЗаказыЗакрытые - запрос к Заказы по регистратору ЗакрытиеЗаказа, в результате ()минус) - ЗаказЗакрытиеСумма, ЗаказСсылка

втЗаказы и втЗаказыЗакрытые соединяем по ЗаказСсылка и суммируем по сумме, за счет знака минус в втЗаказыЗакрытые сумма заказа уменьшится

остальное у вас уже реализовано
Intercititude; +1 Ответить
54. Intercititude 28.05.20 14:07 Сейчас в теме
(52) А-аа,ну значит правильно я Вас понял.
Выходит в (53) мой запрос корректен?
Не уверен во внутреннем соединении правда.
55. VictorRGB2 13 28.05.20 14:08 Сейчас в теме
(54) оно меня тоже смущает
надо проверять на данных

я бы вынес это соединение в отдельную вт
Intercititude; +1 Ответить
56. Intercititude 28.05.20 14:10 Сейчас в теме
(55) Имеете ввиду вынести в отдельную ВТ и сделать полное соединение вместо внутреннегго?

А условие когда я вычитаю ЕСТЬNULL(СуммаЗакрытия,0) правильно ли ?
57. VictorRGB2 13 28.05.20 15:29 Сейчас в теме
(56) нет соединить по внутреннему или по левому
полное нельзя, получите все закрытие заказов отдельными строками без соединения, просто добавятся

условие ЕСТЬNULL(СуммаЗакрытия,0) правильно
Intercititude; +1 Ответить
58. Intercititude 28.05.20 16:46 Сейчас в теме
(57) Соединил по внутреннему.
После эту ВТ_СуммаЗакрытия

Я добавляю в подзапрос где связка и реализация. И делаю же полное соединение по заказу с заказами?
59. VictorRGB2 13 28.05.20 18:23 Сейчас в теме
(58) да
и там же делаете сравнение суммы заказа (уже с учтенным закрытием) и суммы реализации
53. Intercititude 28.05.20 13:53 Сейчас в теме
(49) В общем, смастерил так:
Правильно ли это будет по Вашему мнению ?
ВЫБРАТЬ

РТУ.Регистратор,

СУММА(РТУ.Стоимость) КАК СуммаРТУ,

РТУ.Регистратор.Сделка КАК Сделка

ПОМЕСТИТЬ ВТ_РТУ

ИЗ

РегистрНакопления.Продажи КАК РТУ

ГДЕ

РТУ.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

И РТУ.Контрагент = &Контрагент

И РТУ.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг



СГРУППИРОВАТЬ ПО

РТУ.Регистратор,

РТУ.Регистратор.Сделка

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

СУММА(Заказы.СуммаВзаиморасчетов) КАК СуммаЗаказов,

Заказы.ЗаказПокупателя

ПОМЕСТИТЬ ВТ_Заказы

ИЗ

РегистрНакопления.ЗаказыПокупателей КАК Заказы

ГДЕ

Заказы.Регистратор ССЫЛКА Документ.ЗаказПокупателя

И Заказы.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

И Заказы.ЗаказПокупателя.Контрагент = &Контрагент



СГРУППИРОВАТЬ ПО

Заказы.ЗаказПокупателя

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

ЗаказыПокупателей.СуммаВзаиморасчетов,

ЗаказыПокупателей.ЗаказПокупателя

ПОМЕСТИТЬ ВТ_Закрытие

ИЗ

РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателей

ГДЕ

ЗаказыПокупателей.ЗаказПокупателя.Контрагент = &Контрагент

И ЗаказыПокупателей.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

И ЗаказыПокупателей.Регистратор ССЫЛКА Документ.ЗакрытиеЗаказовПокупателей

;



////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

ВЫБОР

КОГДА Заказы.СуммаЗаказов - ЕСТЬNULL(ВТ_Закрытие.СуммаВзаиморасчетов, 0) <= ЕСТЬNULL(Реализации.СуммаРТУ, 0)

ТОГДА ЕСТЬNULL(Реализации.СуммаРТУ, 0)

ИНАЧЕ Заказы.СуммаЗаказов - ЕСТЬNULL(ВТ_Закрытие.СуммаВзаиморасчетов, 0)

КОНЕЦ КАК Поле1

ПОМЕСТИТЬ ВТ_ИТОГ

ИЗ

ВТ_РТУ КАК Реализации

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Заказы КАК Заказы

ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Закрытие КАК ВТ_Закрытие

ПО Заказы.ЗаказПокупателя = ВТ_Закрытие.ЗаказПокупателя

ПО Реализации.Регистратор.Сделка = Заказы.ЗаказПокупателя.Ссылка
Показать
Оставьте свое сообщение

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