Имя: Пароль:
1C
1С v8
Запрос. Временная таблица.
0 Ghost1830
 
28.11.22
11:00
Есть временная таблица и Запрос пакета 2, в котором берутся данные из Временной таблицы и делается расчет. Есть столбцы Номенклатура, Количество(расход за период), Дней Продажи.
Расчет пока убрала из выводимых полей, с ним проблем нет. Только в столбце "Количество" итоги считает неправильно. А расшифровывает верно. Он в итоги почему-то не считает одинаковые значения.
Например, было списание товара:
1. 502кг
2. 506кг
3. 502кг.
В расшифровке считает верно 1510кг, а в общей таблице выводит 1008кг. Т.е. если значение повторяется, он не суммируется в общий котёл.
В чем причина этого?
Итоги нормально заведены. Что могла пропустить?
https://ibb.co/Hp452bC
https://ibb.co/mG9pk5M
https://ibb.co/bRGg3pg
1 НафНаф
 
28.11.22
11:03
где-то стоит РАЗЛИЧНЫЕ
2 Kesim
 
28.11.22
13:19
(0) не надо группировать по количеству
3 mikecool
 
28.11.22
13:55
(1) или взят минимум-максимум при расчете ресурсов
4 Ghost1830
 
28.11.22
14:48
(1) Проверяла в конструкторе запросов,даже в коде поиск сделала, не там Различные
5 Ghost1830
 
28.11.22
14:50
(2) группировки нет, есть итоги. А Без итогов он ничего не выведет
6 Ghost1830
 
28.11.22
14:51
(3) эм....ну если будет минимум-максимум, он мне даст либо 502,либо 506.а мне то сумма нужна....странный совет)А в временной таблице итоги(минимум,максимум) не устанавливаются
7 Said_We
 
28.11.22
15:33
(6) "если будет минимум-максимум, он мне даст либо 502,либо 506" - это смотря как группировать. Можно получить и 502 и 506 в единственном экземпляре для каждого значения.

A, B
-------------
1, 1
1, 1
1, 4
1, 7
1, 7
2, 4
2, 1
2, 1

select a,b from t group by a,b

даст аналогичный результат как запрос:

select DISTINCT a,b from t

A, B
-------------
1, 1
1, 4
1, 7
2, 4
2, 1

В (0) нет информации о тексте запроса и вообще вопрос не задан. Какой-то "угадайка". Всё что угодно может быть. Не понятно какой ответ Вы ждете.
8 Жан Пердежон
 
28.11.22
16:32
(0) скриншоты нельзя было еще меньше сделать, чтобы вообще ничего понятно не было? По-хорошему, вместо этих обрезков надо было текст запроса опубликовать.
9 Жан Пердежон
 
28.11.22
16:33
Это чтобы хотя бы убедиться, что дело в запросе, а не в настройках СКД
10 Ghost1830
 
28.11.22
17:43
(9)это не скд,а универсальный отчет
11 Ghost1830
 
28.11.22
17:43
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    РАЗНОСТЬДАТ(&ДатаНачала, &ДатаКонца, ДЕНЬ) + 1 КАК ДнейПродажи,
                   |    ТоварыНаСкладахОбороты.Номенклатура,
                   |    ТоварыНаСкладахОбороты.КоличествоРасход КАК Количество,
                   |    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                   |    ТоварыНаСкладахОбороты.Регистратор,
                   |    0 КАК ВПути,
                   |    0 КАК Заказано
                   |ПОМЕСТИТЬ ВТ_Расчет
                   |{ВЫБРАТЬ
                   |    Номенклатура.*,
                   |    ДнейПродажи,
                   |    Количество,
                   |    КоличествоОстаток}
                   |ИЗ
                   |    РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ТоварыНаСкладахОбороты
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                   |        ПО ТоварыНаСкладахОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
                   |ГДЕ
                   |    (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ТребованиеНакладная
                   |            ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                   |            ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.СписаниеТоваров)
                   |{ГДЕ
                   |    ТоварыНаСкладахОбороты.Номенклатура.*}
                   |
                   |ОБЪЕДИНИТЬ
                   |
                   |ВЫБРАТЬ
                   |    0,
                   |    ЗаказыПоставщикамОстатки.Номенклатура,
                   |    0,
                   |    0,
                   |    ЗаказыПоставщикамОстатки.ЗаказПоставщику,
                   |    ЗаказыПоставщикамОстатки.КоличествоОстаток,
                   |    0
                   |{ВЫБРАТЬ
                   |    Номенклатура.*,
                   |    ВПути}
                   |ИЗ
                   |    РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
                   |ГДЕ
                   |    ЗаказыПоставщикамОстатки.ЗаказПоставщику.ТоварВПути = ИСТИНА
                   |{ГДЕ
                   |    ЗаказыПоставщикамОстатки.Номенклатура.*}
                   |
                   |ОБЪЕДИНИТЬ
                   |
                   |ВЫБРАТЬ
                   |    0,
                   |    ЗаказыПоставщикамОстатки.Номенклатура,
                   |    0,
                   |    0,
                   |    ЗаказыПоставщикамОстатки.ЗаказПоставщику,
                   |    0,
                   |    ЗаказыПоставщикамОстатки.КоличествоОстаток
                   |{ВЫБРАТЬ
                   |    Номенклатура.*,
                   |    Заказано}
                   |ИЗ
                   |    РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
                   |ГДЕ
                   |    ЗаказыПоставщикамОстатки.ЗаказПоставщику.ТоварВПути = ЛОЖЬ
                   |{ГДЕ
                   |    ЗаказыПоставщикамОстатки.Номенклатура.*}
                   |{УПОРЯДОЧИТЬ ПО
                   |    Номенклатура.*,
                   |    Регистратор.*}
                   |{ИТОГИ ПО
                   |    Номенклатура.*,
                   |    Регистратор}
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ВТ_Расчет.КоличествоОстаток - ВТ_Расчет.Заказано КАК РасчетныйЗаказ,
                   |    ВТ_Расчет.ДнейПродажи КАК ДнейПродажи,
                   |    ВТ_Расчет.Номенклатура,
                   |    ВТ_Расчет.Количество КАК Количество,
                   |    ВТ_Расчет.КоличествоОстаток КАК КоличествоОстаток,
                   |    ВТ_Расчет.Регистратор,
                   |    ВТ_Расчет.ВПути КАК ВПути,
                   |    ВТ_Расчет.Заказано КАК Заказано
                   |{ВЫБРАТЬ
                   |    ВТ_Расчет.Номенклатура.*,
                   |    ДнейПродажи,
                   |    Количество}
                   |ИЗ
                   |    ВТ_Расчет КАК ВТ_Расчет
                   |{ГДЕ
                   |    ВТ_Расчет.Номенклатура.*}
                   |{УПОРЯДОЧИТЬ ПО
                   |    ВТ_Расчет.Номенклатура.*,
                   |    Регистратор}
                   |ИТОГИ
                   |    МАКСИМУМ(РасчетныйЗаказ),
                   |    МАКСИМУМ(ДнейПродажи),
                   |    СУММА(Количество),
                   |    МАКСИМУМ(КоличествоОстаток),
                   |    СУММА(ВПути),
                   |    СУММА(Заказано)
                   |ПО
                   |    ОБЩИЕ
                   |{ИТОГИ ПО
                   |    ВТ_Расчет.Номенклатура.*,
                   |    ВТ_Расчет.Регистратор.*}";
12 Жан Пердежон
 
28.11.22
17:57
у тебя количество в итогах тупо множится на количество регистраторов по номенклатуре
13 mikecool
 
28.11.22
18:22
(6) а я не совет давал, а ванговал
14 Said_We
 
29.11.22
00:38
(11) Вот это я вообще не понял. Поправьте меня, если я не прав.
Если берутся не все обороты, а только по определенным регистраторам, то как это можно соединять с общим итоговым остатком, которые сформировались по регистру в целом не зависимо от регистратора?
Я даже не говорю про правильность соединения и прочее. Сама природа данных мне не понятна. Это всё равно что скрещивать мух и слонов.

                  |ИЗ
                   |    РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ТоварыНаСкладахОбороты
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                   |        ПО ТоварыНаСкладахОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
                   |ГДЕ
                   |    (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ТребованиеНакладная
                   |            ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                   |            ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.СписаниеТоваров)

Следующее замечание мелочь:
Во-первых почему "ОБЪЕДИНИТЬ", а не "ОБЪЕДИНИТЬ ВСЕ".

|ИЗ
                   |    РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
                   |ГДЕ
                   |    ЗаказыПоставщикамОстатки.ЗаказПоставщику.ТоварВПути = ИСТИНА

|ОБЪЕДИНИТЬ

ИЗ
                   |    РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
                   |ГДЕ
                   |    ЗаказыПоставщикамОстатки.ЗаказПоставщику.ТоварВПути = ЛОЖЬ

Во-вторых зачем объединять две выборки из одной таблицы. Это должна быть одна выборка из одной таблицы и поле выборки с условием:

Выбор когда ЗаказыПоставщикамОстатки.ЗаказПоставщику.ТоварВПути тогда ЗаказыПоставщикамОстатки.ЗаказПоставщику иначе 0 конец


В-третьих.
Текст задания полностью озвучьте пожалуйста и что за конфигурация. Есть подозрение, что не нужно вообще никакого отчета рисовать. В вашей типовой конфигурации может быть уже готовый отчет, который анализируют остатки товаров с учетом физических остатков, заказов от клиентов и заказов поставщикам.