|
СКД нужна помощь гуру | ☑ | ||
---|---|---|---|---|
0
xantimans
26.11.13
✎
10:22
|
Всем привет!
У меня следующая ситуация. Попросили меня переделать отчет "Расчетная ведомость организация", чтоб она отражала перемещения сотрудников по подразделениям в течении расчетного месяца(грубо говоря аванс чел получал числясь в одном подразделении, а зп в конце месяца оставшуюся в другом, у подразделений разные ИФНС). Запросы я переделал, отчет работает идеально до момента наложения условий, если я формирую отчет по конкретным сотрудникам, то в результат мне выводится вся стуктура подразделений с суммами и итоги общие считаются по всей компании. Если выбираю и подразделение и сотрудника, выводится норм но общий итог по всему подразделению. |
|||
1
х86
26.11.13
✎
10:27
|
(0)конкретно пропиши отборы в тексте запроса с помощью {}
|
|||
2
xantimans
26.11.13
✎
10:35
|
(0)да вроде все прописал вот код из "Взаиморасчетов":
ВЫБРАТЬ РАЗРЕШЕННЫЕ Взаиморасчеты.Организация КАК Организация, ВЫБОР КОГДА Взаиморасчеты.Организация.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ТОГДА Взаиморасчеты.Организация ИНАЧЕ Взаиморасчеты.Организация.ГоловнаяОрганизация КОНЕЦ КАК ГоловнаяОрганизация, Взаиморасчеты.Физлицо КАК ФизЛицо, ВЫБОР КОГДА Взаиморасчеты.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезКассу) И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL ТОГДА "Через кассу " КОГДА Взаиморасчеты.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезБанк) И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL ТОГДА "Перечислено в банк " КОГДА НЕ ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL ТОГДА "Задепонировано" ИНАЧЕ "Способ выплаты не указан " КОНЕЦ + ВЫБОР КОГДА (Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.ПлановыйАванс) ИЛИ Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.АвансЗаПервуюПоловинуМесяца)) И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL ТОГДА "(аванс)" КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.Зарплата) И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL ТОГДА "(под расчет)" КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.ПустаяСсылка) И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL И Взаиморасчеты.СуммаВзаиморасчетов > 0 ТОГДА "(не указано)" КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.ПустаяСсылка) И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL И Взаиморасчеты.СуммаВзаиморасчетов < 0 ТОГДА "(погашено задолженности)" КОГДА ВзаиморасчетыСДепонентамиОрганизаций.Регистратор ЕСТЬ NULL ТОГДА "(межрасчет)" ИНАЧЕ "" КОНЕЦ КАК ИмяВидаРасчета, "А" КАК ПриоритетВидаРасчета, НАЧАЛОПЕРИОДА(Взаиморасчеты.Период, МЕСЯЦ) КАК ПериодРегистрации, "Всего выплачено" КАК Группа, 5 КАК ПриоритетГруппы, Взаиморасчеты.СуммаВзаиморасчетов КАК Результат, Взаиморасчеты.Регистратор КАК Регистратор, Взаиморасчеты.Ведомость КАК Ведомость ПОМЕСТИТЬ Взаиморасчеты ИЗ РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК Взаиморасчеты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСДепонентамиОрганизаций КАК ВзаиморасчетыСДепонентамиОрганизаций ПО (ВзаиморасчетыСДепонентамиОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)) И (ВзаиморасчетыСДепонентамиОрганизаций.Ведомость = Взаиморасчеты.Ведомость) И (ВзаиморасчетыСДепонентамиОрганизаций.Физлицо = Взаиморасчеты.Физлицо) ГДЕ Взаиморасчеты.Период МЕЖДУ &НачалоПериода И &КонецПериода И Взаиморасчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И Взаиморасчеты.СуммаВзаиморасчетов <> 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Взаиморасчеты.ФизЛицо, Взаиморасчеты.Регистратор.Дата ПОМЕСТИТЬ ФизЛицоДата ИЗ Взаиморасчеты КАК Взаиморасчеты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ФизЛицоДата.РегистраторДата, ФизЛицоДата.ФизЛицо, МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период ПОМЕСТИТЬ ДатыПереходаВПодразделения ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ ФизЛицоДата КАК ФизЛицоДата ПО РаботникиОрганизаций.Сотрудник.Физлицо = ФизЛицоДата.ФизЛицо ГДЕ РаботникиОрганизаций.Период <= ФизЛицоДата.РегистраторДата СГРУППИРОВАТЬ ПО ФизЛицоДата.РегистраторДата, ФизЛицоДата.ФизЛицо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДатыПереходаВПодразделения.РегистраторДата, ДатыПереходаВПодразделения.ФизЛицо, РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение ПОМЕСТИТЬ Подразделения ИЗ ДатыПереходаВПодразделения КАК ДатыПереходаВПодразделения ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ПО ДатыПереходаВПодразделения.Период = РаботникиОрганизаций.Период И ДатыПереходаВПодразделения.ФизЛицо = РаботникиОрганизаций.Сотрудник.Физлицо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Взаиморасчеты.Организация, Взаиморасчеты.ГоловнаяОрганизация, Подразделения.Подразделение КАК ПодразделениеОрганизации, Взаиморасчеты.ФизЛицо, Взаиморасчеты.ИмяВидаРасчета, Взаиморасчеты.ПриоритетВидаРасчета, Взаиморасчеты.ПериодРегистрации, Взаиморасчеты.Группа, Взаиморасчеты.ПриоритетГруппы, Взаиморасчеты.Результат, Взаиморасчеты.Регистратор, Взаиморасчеты.Ведомость ИЗ Взаиморасчеты КАК Взаиморасчеты ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения КАК Подразделения ПО Взаиморасчеты.ФизЛицо = Подразделения.ФизЛицо И Взаиморасчеты.Регистратор.Дата = Подразделения.РегистраторДата {ГДЕ Взаиморасчеты.ФизЛицо.*, Взаиморасчеты.Организация.*, Подразделения.Подразделение.* КАК ПодразделениеОрганизации} |
|||
3
xantimans
26.11.13
✎
10:40
|
(2)->(1)
|
|||
4
xantimans
26.11.13
✎
10:52
|
апну
|
|||
5
catena
26.11.13
✎
11:01
|
Попробуй
Взаиморасчеты.ФизЛицо.* как ФизЛицо, По крайней мере построитель страдает самостоятельным придумыванием псевдонимов. |
|||
6
xantimans
26.11.13
✎
12:39
|
Проблема решилась переписанием кода с
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК ПериодРегистрации ПОМЕСТИТЬ Дни ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РАЗЛИЧНЫЕ КОНЕЦПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период, РаботникиОрганизаций.Сотрудник, Дни.ПериодРегистрации ПОМЕСТИТЬ ДатыПереходаВПодразделения ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ Дни КАК Дни ПО РаботникиОрганизаций.Период <= Дни.ПериодРегистрации СГРУППИРОВАТЬ ПО Дни.ПериодРегистрации, РаботникиОрганизаций.Сотрудник ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ДатыПереходаВПодразделения.ПериодРегистрации КАК ПериодРегистрации, РаботникиОрганизаций.Сотрудник.Физлицо КАК ФизЛицо, РаботникиОрганизаций.ПодразделениеОрганизации ПОМЕСТИТЬ ФизЛицоПодразделение ИЗ ДатыПереходаВПодразделения КАК ДатыПереходаВПодразделения ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ПО ДатыПереходаВПодразделения.Период = РаботникиОрганизаций.Период И ДатыПереходаВПодразделения.Сотрудник = РаботникиОрганизаций.Сотрудник И (РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ УдержанияРаботниковОрганизации.ОбособленноеПодразделение КАК Организация, УдержанияРаботниковОрганизации.Организация КАК ГоловнаяОрганизация, УдержанияРаботниковОрганизации.ФизЛицо КАК ФизЛицо, УдержанияРаботниковОрганизации.ВидРасчета.Наименование КАК ИмяВидаРасчета, "А" + УдержанияРаботниковОрганизации.ВидРасчета.Код КАК ПриоритетВидаРасчета, "Всего удержано" КАК Группа, 4 КАК ПриоритетГруппы, УдержанияРаботниковОрганизации.Результат КАК Результат, УдержанияРаботниковОрганизации.ПериодРегистрации КАК ПериодРегистрации, УдержанияРаботниковОрганизации.Регистратор КАК Регистратор, НЕОПРЕДЕЛЕНО КАК Ведомость, ФизЛицоПодразделение.ПодразделениеОрганизации КАК ПодразделениеОрганизации ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизации ВНУТРЕННЕЕ СОЕДИНЕНИЕ ФизЛицоПодразделение КАК ФизЛицоПодразделение ПО УдержанияРаботниковОрганизации.ПериодРегистрации = ФизЛицоПодразделение.ПериодРегистрации И УдержанияРаботниковОрганизации.ФизЛицо = ФизЛицоПодразделение.ФизЛицо ГДЕ УдержанияРаботниковОрганизации.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода И УдержанияРаботниковОрганизации.Результат <> 0 {ГДЕ УдержанияРаботниковОрганизации.ФизЛицо.* КАК ФизЛицо, УдержанияРаботниковОрганизации.ОбособленноеПодразделение.* КАК Организация, ФизЛицоПодразделение.ПодразделениеОрганизации.* КАК ПодразделениеОрганизации } на ВЫБРАТЬ РАЗРЕШЕННЫЕ УдержанияРаботниковОрганизации.ОбособленноеПодразделение КАК Организация, УдержанияРаботниковОрганизации.Организация КАК ГоловнаяОрганизация, УдержанияРаботниковОрганизации.ФизЛицо КАК ФизЛицо, УдержанияРаботниковОрганизации.ВидРасчета.Наименование КАК ИмяВидаРасчета, "А" + УдержанияРаботниковОрганизации.ВидРасчета.Код КАК ПриоритетВидаРасчета, "Всего удержано" КАК Группа, 4 КАК ПриоритетГруппы, УдержанияРаботниковОрганизации.Результат КАК Результат, УдержанияРаботниковОрганизации.ПериодРегистрации КАК ПериодРегистрации, УдержанияРаботниковОрганизации.Регистратор КАК Регистратор, НЕОПРЕДЕЛЕНО КАК Ведомость ПОМЕСТИТЬ Удержания ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизации ГДЕ УдержанияРаботниковОрганизации.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода И УдержанияРаботниковОрганизации.Результат <> 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Удержания.ФизЛицо, Удержания.Регистратор.Дата ПОМЕСТИТЬ ФизЛицоДата ИЗ Удержания КАК Удержания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ФизЛицоДата.РегистраторДата, ФизЛицоДата.ФизЛицо, МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период ПОМЕСТИТЬ ДатыПереходаВПодразделения ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ ФизЛицоДата КАК ФизЛицоДата ПО РаботникиОрганизаций.Сотрудник.Физлицо = ФизЛицоДата.ФизЛицо ГДЕ РаботникиОрганизаций.Период <= ФизЛицоДата.РегистраторДата СГРУППИРОВАТЬ ПО ФизЛицоДата.РегистраторДата, ФизЛицоДата.ФизЛицо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДатыПереходаВПодразделения.РегистраторДата, ДатыПереходаВПодразделения.ФизЛицо, РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение ПОМЕСТИТЬ Подразделения ИЗ ДатыПереходаВПодразделения КАК ДатыПереходаВПодразделения ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ПО ДатыПереходаВПодразделения.Период = РаботникиОрганизаций.Период И ДатыПереходаВПодразделения.ФизЛицо = РаботникиОрганизаций.Сотрудник.Физлицо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Удержания.Организация, Удержания.ГоловнаяОрганизация, Удержания.ФизЛицо, Удержания.ИмяВидаРасчета, Удержания.ПриоритетВидаРасчета, Удержания.Группа, Удержания.ПриоритетГруппы, Удержания.Результат, Удержания.ПериодРегистрации, Удержания.Регистратор, Удержания.Ведомость, Подразделения.Подразделение ИЗ Удержания КАК Удержания ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения КАК Подразделения ПО Удержания.ФизЛицо = Подразделения.ФизЛицо И Удержания.Регистратор.Дата = Подразделения.РегистраторДата {ГДЕ Удержания.ФизЛицо.* КАК ФизЛицо, Удержания.Организация.* КАК Организация, Подразделения.Подразделение.* КАК ПодразделениеОрганизации} Правда я не понял в чем прикол для СКД, результат в запросах одинаковый |
|||
7
CHerypga
26.11.13
✎
12:46
|
(6) Есть такая обработка Консоль отчетов СКД вроде называется. Работает под управляемыми формами. Я бы предложил загнать оба отчета туда и посмотреть какой запрос получается после того как над ним поработает СКД
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |