Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:23

Запрос двоит

Автор DeLi-Новичек, 08 июн 2015, 14:16

0 Пользователей и 1 гость просматривают эту тему.

DeLi-Новичек

Добрый день!

Подскажите новечку.
Запрос объединяет 2 временные таблицы с данными.

Пример:
Таблица 1
поставщик 1 - менеджер 1
поставщик 2 - менеджер 2
поставщик 3 - менеджер 1

Таблица 2
менеджер 1 - зарплата 30000
менеджер 2 - зарплата 30000

Таблица 3 (Итог - объединяющая)
поставщик 1 - менеджер 1 - зарплата 60000
поставщик 2 - менеджер 2 - зарплата 30000
поставщик 3 - менеджер 1 - зарплата 60000

Старалась чтоб было понятно суть проблемы.
Дублирует суммы во всех строках.
Как избавится от этого?

cska-fanat-kz

хорошо хоть не предложили догадаться какой текст запроса...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

дфтын


DeLi-Новичек

Вопрос снят.
Говорят если долго мучатся, что-нибудь получится!
Дфтын, спасибо за информацию.

mixqn

DeLi-Новичек, и все же на будущее: прикладывайте сразу текст запроса, иначе сложно что-либо подсказать

DeLi-Новичек

Помогите пожалуйста с отчетом.

Данные за один месяц выводит хорошо, а если делаешь за квартал, то он не считаем сумму по зарплате и страховым взносам. Выводит первое значение и все.


ВЫБРАТЬ
фс_РасчетПоПутевымЛистамРаботникиОрганизации.Машина КАК Машина,
фс_РасчетПоПутевымЛистамРаботникиОрганизации.Сотрудник,
СУММА(ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов1, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов2, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов3, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов4, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов5, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов6, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов7, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов8, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов9, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов10, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов11, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов12, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов13, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов14, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов15, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов16, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов17, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов18, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов19, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов20, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов21, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов22, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов23, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов24, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов25, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов26, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов27, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов28, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов29, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов30, 0) + ЕСТЬNULL(фс_РасчетПоПутевымЛистамРаботникиОрганизации.Часов31, 0)) КАК ОтработаноЧасов
ПОМЕСТИТЬ Время
ИЗ
Документ.фс_РасчетПоПутевымЛистам.РаботникиОрганизации КАК фс_РасчетПоПутевымЛистамРаботникиОрганизации
ГДЕ
фс_РасчетПоПутевымЛистамРаботникиОрганизации.Ссылка.ПериодРасчета МЕЖДУ &ДатаНачала И &ДатаОкончания

СГРУППИРОВАТЬ ПО
фс_РасчетПоПутевымЛистамРаботникиОрганизации.Машина,
фс_РасчетПоПутевымЛистамРаботникиОрганизации.Сотрудник
;

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

СГРУППИРОВАТЬ ПО
ЕСНОсновныеНачисления.Сотрудник,
ЕСНОсновныеНачисления.ПериодДействия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Время.Машина,
СУММА(Время.ОтработаноЧасов) КАК ОтработаноЧасов,
СУММА(Зарплата.Результат) КАК Результат
ПОМЕСТИТЬ СуммаИЧасыПоМашине
ИЗ
Время КАК Время
ЛЕВОЕ СОЕДИНЕНИЕ Зарплата КАК Зарплата
ПО Время.Сотрудник.Физлицо = Зарплата.Сотрудник.Физлицо

СГРУППИРОВАТЬ ПО
Время.Машина
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Время.Машина,
СУММА(ВЫБОР
КОГДА СуммаИЧасыПоМашине.ОтработаноЧасов = 0
ТОГДА 0
КОГДА СуммаИЧасыПоМашине.Результат = 0
ТОГДА 0
ИНАЧЕ ЕСТЬNULL(СуммаИЧасыПоМашине.Результат / СуммаИЧасыПоМашине.ОтработаноЧасов, 0)
КОНЕЦ) КАК Поле1
ПОМЕСТИТЬ МашинаЧас
ИЗ
Время КАК Время
ЛЕВОЕ СОЕДИНЕНИЕ СуммаИЧасыПоМашине КАК СуммаИЧасыПоМашине
ПО Время.Машина.Ссылка = СуммаИЧасыПоМашине.Машина.Ссылка

СГРУППИРОВАТЬ ПО
Время.Машина
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СтраховыеВзносыИсчисленные.ФизЛицо,
СтраховыеВзносыИсчисленные.Период,
ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРСтраховая, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРСтраховаяЕНВД, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРНакопительная, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРНакопительнаяЕНВД, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ФСС, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ФССЕНВД, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ФФОМС, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ФФОМСЕНВД, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ТФОМС, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ТФОМСЕНВД, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ФССНесчастныеСлучаи, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРПоДополнительномуТарифу, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРНаДоплатуКПенсииШахтерам, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаПодземныхИВредныхРаботах, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаПодземныхИВредныхРаботахОпасный, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный1, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный2, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный3, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный4, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаТяжелыхИПрочихРаботах, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахОпасный, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный1, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный2, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный3, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный4, 0) + ЕСТЬNULL(СтраховыеВзносыИсчисленные.ПФРСтраховаяСПревышения, 0) КАК СтраховыеНачисления
ПОМЕСТИТЬ СтраховыеВзносы
ИЗ
РегистрНакопления.СтраховыеВзносыИсчисленные КАК СтраховыеВзносыИсчисленные
ГДЕ
СтраховыеВзносыИсчисленные.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
;

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

СГРУППИРОВАТЬ ПО
фс_ОбъектыЗатрат.ОбъектЗатрат,
фс_ОбъектыЗатрат.НалоговаяЗапись,
фс_ОбъектыЗатрат.КоррСчет
;

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

СГРУППИРОВАТЬ ПО
фс_ОбъектыЗатрат.ОбъектЗатрат,
фс_ОбъектыЗатрат.НалоговаяЗапись,
фс_ОбъектыЗатрат.КоррСчет
;

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

СГРУППИРОВАТЬ ПО
уатПервоначальныеСведенияТС.сгатКолонна,
уатПервоначальныеСведенияТС.ОсновноеСредство,
Зарплата.ПериодДействия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Время.Машина,
Время.ОтработаноЧасов
ПОМЕСТИТЬ ВремяМашина
ИЗ
Время КАК Время
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Время.Машина,
СУММА(СтраховыеВзносы.СтраховыеНачисления) КАК СтраховыеНачисления
ПОМЕСТИТЬ СтраховыеМашина
ИЗ
Время КАК Время
ЛЕВОЕ СОЕДИНЕНИЕ СтраховыеВзносы КАК СтраховыеВзносы
ПО Время.Сотрудник.Физлицо.Ссылка = СтраховыеВзносы.ФизЛицо.Ссылка

СГРУППИРОВАТЬ ПО
Время.Машина
;

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

СГРУППИРОВАТЬ ПО
уатПервоначальныеСведенияТС.сгатКолонна,
уатПервоначальныеСведенияТС.Модель.ТипТС,
уатПервоначальныеСведенияТС.ОсновноеСредство

Добавлено: 19 июн 2015, 14:48



за 1 месяц

за 3 месяца

mixqn

DeLi-Новичек, картинки добавьте как вложения

DeLi-Новичек

Простите, добавила.

mixqn

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

DeLi-Новичек

Спасибо, нашла ошибку!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск