8.х Запрос в консоли запросов и системе компоновки данных..

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем pathetique, 14 апр 2009.

  1. TopicStarter Overlay
    pathetique
    Offline

    pathetique Опытный в 1С

    Регистрация:
    21 янв 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Здавствуйте! Потребовалось немного изменить отчет "Свод начисленной зарплаты организаций" из УПП 8.1.
    Смысл такой что сальдо по каждому работнику надо считать как Сумма всех начислений(приход по регистру накопления "ВзаиморасчетыСРаботникамиОрганизаций") минус Сумма выписанная в платежках(ЗарплатаКВыплатеОрганизаций) по данному физлицу.

    Сальдо на начало считается на первое число каждого месяца из диапазона, указанного пользователем(&НачалоПериода - &КонецПериода).

    Я написал запрос, проверил в консоли запросов. Выводит НОРМАЛЬНО. сальдо на начало марта меньше рубля... Затем я засунул это в систему компоновки данных и .... вместо моих 0,78 там получилось 300 с чем-то тысяч 8-(((()))). Я парюсь уже несколько дней, сделал новую компоновку данных, убрал оттуда все группировки(оставил только детальные записи) и та же фигня... как объяснить что консоль запросов и запрос в СКД выводят разные результаты уразуметь не могу....

    Код:
    ВЫБРАТЬ
    ВЫБОР
    КОГДА ПериодыИСальдо.Сумма < 0
    ТОГДА -ПериодыИСальдо.Сумма
    ИНАЧЕ ПериодыИСальдо.Сумма
    КОНЕЦ КАК Результат,
    ПериодыИСальдо.Физлицо,
    ПериодыИСальдо.Организация,
    ПериодыИСальдо.Период КАК ПериодДействия,
    ВЫБОР
    КОГДА ПериодыИСальдо.Организация.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
    ТОГДА ПериодыИСальдо.Организация
    ИНАЧЕ ПериодыИСальдо.Организация.ГоловнаяОрганизация
    КОНЕЦ КАК ГоловнаяОрганизация,
    ВЫБОР
    КОГДА ПериодыИСальдо.Сумма < 0
    ТОГДА "Долг за работниками на начало месяца"
    ИНАЧЕ "Долг за организацией на начало месяца"
    КОНЕЦ КАК ВидРасчета,
    ВЫБОР
    КОГДА ПериодыИСальдо.Сумма < 0
    ТОГДА "А1"
    ИНАЧЕ "А2"
    КОНЕЦ КАК Порядок,
    "1.Сальдо на начало" КАК ВидДвижения,
    ВЫБОР
    КОГДА ПериодыИСальдо.Сумма < 0
    ТОГДА "Долг за работниками на начало месяца"
    ИНАЧЕ "Долг за организацией на начало месяца"
    КОНЕЦ КАК ВидРасчетаГруппа
    ИЗ
    (ВЫБРАТЬ
    СУММА(Сальдо.Сумма) КАК Сумма,
    Сальдо.Физлицо КАК Физлицо,
    Сальдо.Организация КАК Организация,
    Периоды.Период КАК Период
    ИЗ
    
    //Получаем список месяцев(1-е число каждого месяца) из выбранного периода
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК Период
    ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
    ГДЕ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода) КАК Периоды
    //Берем приходы за периоды до &ДатаНачала и в качестве периода ставим 1-е число предшествующего //ДН месяца
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ВзаиморасчетыСРаботникамиОрганизацийОбороты.СуммаВзаиморасчетовПриход КАК Сумма,
    ВзаиморасчетыСРаботникамиОрганизацийОбороты.Физлицо КАК Физлицо,
    ВзаиморасчетыСРаботникамиОрганизацийОбороты.Организация КАК Организация,
    ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -1) КАК Период
    ИЗ
    РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.Обороты(, ДОБАВИТЬКДАТЕ(&НачалоПериода, СЕКУНДА, -1), , ) КАК ВзаиморасчетыСРаботникамиОрганизацийОбороты
    
    ОБЪЕДИНИТЬ ВСЕ
    //Здесь берем суммы прихода за месяцы из выбранного периода			
    ВЫБРАТЬ
    ВзаиморасчетыСРаботникамиОрганизацийОбороты.СуммаВзаиморасчетовПриход,
    ВзаиморасчетыСРаботникамиОрганизацийОбороты.Физлицо,
    ВзаиморасчетыСРаботникамиОрганизацийОбороты.Организация,
    ВзаиморасчетыСРаботникамиОрганизацийОбороты.Период
    ИЗ
    РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ВзаиморасчетыСРаботникамиОрганизацийОбороты
    
    ОБЪЕДИНИТЬ ВСЕ
    //Берем суммы выплат за все предшествующие ДатеНачала периоды			
    ВЫБРАТЬ
    -(ЗарплатаКВыплатеОрганизацийЗарплата.Сумма + ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты),
    ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо,
    ЗарплатаКВыплатеОрганизаций.Организация,
    ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -1)
    ИЗ
    Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
    ПО ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка = ЗарплатаКВыплатеОрганизаций.Ссылка
    ГДЕ
    ЗарплатаКВыплатеОрганизаций.ПериодРегистрации < &НачалоПериода
    
    ОБЪЕДИНИТЬ ВСЕ
    //Суммы выплат за периоды из выбранного диапазона			
    ВЫБРАТЬ
    -(ЗарплатаКВыплатеОрганизацийЗарплата.Сумма + ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты),
    ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо,
    ЗарплатаКВыплатеОрганизаций.Организация,
    ЗарплатаКВыплатеОрганизаций.ПериодРегистрации
    ИЗ
    Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
    ПО ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка = ЗарплатаКВыплатеОрганизаций.Ссылка
    ГДЕ
    ЗарплатаКВыплатеОрганизаций.ПериодРегистрации >= &НачалоПериода
    И ЗарплатаКВыплатеОрганизаций.ПериодРегистрации < &КонецПериода) КАК Сальдо
    // т.к. считаем сальдо на начало месяца, начисления за сам месяц не нужны, только за предыдущие
    ПО Периоды.Период > Сальдо.Период
    
    
    СГРУППИРОВАТЬ ПО
    Сальдо.Организация,
    Сальдо.Физлицо,
    Периоды.Период) КАК ПериодыИСальдо
    
    Вроде запрос не сложный, но в консли запросов и СКД дает разные результаты. Как я понял главное - не правильно считает сальдо на дату начала в СКД! но почему - уже третий день не врублюсь. помогите разобраться :unsure:

Поделиться этой страницей