Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите Пожалуйста Исправить Запрос  (Прочитано 6781 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ivan3333567
Новенький

ru
Offline Offline

« : 05-02-2014 12:28 » 

Есть код. В колонке количество пишет вместо 5шт -15. Помогите найти ошибку:
Код: (1C v8)
        Функция ВыполнитьЗапросПоТЧ(Шапка)

                ЗапросПоТоварам = Новый Запрос();
                ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент",                                             СсылкаНаОбъект);
                ЗапросПоТоварам.УстановитьПараметр("ДатаДокумента",                                               Шапка.ДатаДокумента);
                ЗапросПоТоварам.УстановитьПараметр("СчетУчетаСпецодеждыЗабалансовый",                             ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный);
                ЗапросПоТоварам.УстановитьПараметр("СчетУчетаСпецоснасткиЗабалансовый",                           ПланыСчетов.Хозрасчетный.СпецоснасткаВЭксплуатацииВспомогательный);
                ЗапросПоТоварам.УстановитьПараметр("СчетУчетаИнвентаряИХозяйственныхПринадлежностейЗабалансовый", ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации);
               
                ЗапросПоТоварам.Текст =
                "ВЫБРАТЬ РАЗЛИЧНЫЕ
                |       ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
                |       ТребованиеНакладнаяМатериалы.Номенклатура КАК ТоварНаименование,
                |       СУММА(ТребованиеНакладнаяМатериалы.Количество) КАК Количество,
                |       ТребованиеНакладнаяМатериалы.Себестоимость КАК Себестоимость,
                |       ТребованиеНакладнаяМатериалы.Номенклатура.Код КАК НоменклатурныйНомер,
                |       ТребованиеНакладнаяМатериалы.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
                |       ТребованиеНакладнаяМатериалы.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
                |       СУММА(ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.Сумма, 0)) КАК СуммаПервоначальнойСтоимости,
                |       СУММА(ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.Сумма, 0)) / СУММА(ЕСТЬNULL(ТребованиеНакладнаяМатериалы.Количество, 0)) КАК Цена,
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетДт.Код, "
""") КАК СчетДт,
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетКт.Код, "
""") КАК СчетКт
                |ИЗ
                |       Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
                |               ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , Регистратор = &ТекущийДокумент) КАК ХозрасчетныйДвиженияССубконто
                |               ПО ТребованиеНакладнаяМатериалы.Номенклатура = ХозрасчетныйДвиженияССубконто.СубконтоКт1
                |ГДЕ
                |       ТребованиеНакладнаяМатериалы.Ссылка = &ТекущийДокумент
                |       И ХозрасчетныйДвиженияССубконто.Регистратор = &ТекущийДокумент
                |
                |СГРУППИРОВАТЬ ПО
                |       ТребованиеНакладнаяМатериалы.Номенклатура,
                |       ТребованиеНакладнаяМатериалы.Себестоимость,
                |       ТребованиеНакладнаяМатериалы.Номенклатура.Код,
                |       ТребованиеНакладнаяМатериалы.Номенклатура.БазоваяЕдиницаИзмерения.Код,
                |       ТребованиеНакладнаяМатериалы.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетДт.Код, "
"""),
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетКт.Код, "
"""),
                |       ТребованиеНакладнаяМатериалы.Номенклатура
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |
                |ВЫБРАТЬ РАЗЛИЧНЫЕ
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура,
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура,
                |       СУММА(ТребованиеНакладнаяМатериалыЗаказчика.Количество),
                |       0,
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура.Код,
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура.БазоваяЕдиницаИзмерения.Код,
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
                |       ХозрасчетныйДвиженияССубконто.Сумма,
                |       0,
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетДт.Код, "
"""),
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетКт.Код, "
""")
                |ИЗ
                |       (ВЫБРАТЬ РАЗЛИЧНЫЕ
                |               ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура КАК Номенклатура,
                |               ТребованиеНакладнаяМатериалыЗаказчика.Ссылка.ПодразделениеЗатрат КАК Подразделение,
                |               СУММА(ТребованиеНакладнаяМатериалыЗаказчика.Количество) КАК Количество
                |       ИЗ
                |               Документ.ТребованиеНакладная.МатериалыЗаказчика КАК ТребованиеНакладнаяМатериалыЗаказчика
                |       ГДЕ
                |               ТребованиеНакладнаяМатериалыЗаказчика.Ссылка = &ТекущийДокумент
                |      
                |       СГРУППИРОВАТЬ ПО
                |               ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура,
                |               ТребованиеНакладнаяМатериалыЗаказчика.Ссылка.ПодразделениеЗатрат) КАК ТребованиеНакладнаяМатериалыЗаказчика
                |               ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , Регистратор = &ТекущийДокумент) КАК ХозрасчетныйДвиженияССубконто
                |               ПО ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура = ХозрасчетныйДвиженияССубконто.СубконтоКт1
                |
                |СГРУППИРОВАТЬ ПО
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура,
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура.Код,
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура.БазоваяЕдиницаИзмерения.Код,
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
                |       ХозрасчетныйДвиженияССубконто.Сумма,
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетДт.Код, "
"""),
                |       ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.СчетКт.Код, "
"""),
                |       ТребованиеНакладнаяМатериалыЗаказчика.Номенклатура"
;
               
                ВыборкаСтрокТовары = ЗапросПоТоварам.Выполнить().Выгрузить();
               
                Возврат ВыборкаСтрокТовары;

        КонецФункции // ВыполнитьЗапросПоТЧ()

    Ответить с цитированием Ответить с цитированием
 

Вот без понятия что тут делать=(
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 06-02-2014 14:31 » new

У тебя в запросе используется "ЛЕВОЕ СОЕДИНЕНИЕ" (left join) и суммируешь ты по полю левой таблицы.
Таким образом если соединению будет соответсвовать несколько строк - то количество у тебя будет умножено на то же количество строк (в твоем случае: 3)
т.е. для таблицы Документ.ТребованиеНакладная.Материалы по колонке Номенклатура существует 3 записи в таблице РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто
Что делать - есть разные варианты, в зависимости от задачи.
1) Можно количество получать из РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто (если оно там есть)
2) Можно ТребованиеНакладнаяМатериалы.Количество не суммировать, а вынести в поля группировки
3) ... Можно еще что-то придумать, но нужно задачу знать
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines