Имя: Пароль:
1C
1С v8
Ошибки в группировках СКД
0 brato4karik
 
08.04.13
12:18
Добрый день всем посетителям. Замечаю ошибку при использовании группировок в СКД.

Запрос для отчета вот такой:


ВЫБРАТЬ
   &НачалоПериода КАК Период,
   ЯКлиентСейлзСрезПоследних.Клиент,
   ЯКлиентСейлзСрезПоследних.Сейлз
ПОМЕСТИТЬ ВсеКлиенты
ИЗ
   РегистрСведений.ЯКлиентСейлз.СрезПоследних(&НачалоПериода, ) КАК ЯКлиентСейлзСрезПоследних

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   ЯКлиентСейлз.Период,
   ЯКлиентСейлз.Клиент,
   ЯКлиентСейлз.Сейлз
ИЗ
   РегистрСведений.ЯКлиентСейлз КАК ЯКлиентСейлз
ГДЕ
   ЯКлиентСейлз.Период МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВсеКлиенты.Период,
   ВсеКлиенты.Клиент,
   ВсеКлиенты.Сейлз,
   МИНИМУМ(ВсеКлиенты1.Период) КАК Период1
ПОМЕСТИТЬ ПериодыКлиентовДоВычисления
ИЗ
   ВсеКлиенты КАК ВсеКлиенты
       ЛЕВОЕ СОЕДИНЕНИЕ ВсеКлиенты КАК ВсеКлиенты1
       ПО ВсеКлиенты.Клиент = ВсеКлиенты1.Клиент
           И ВсеКлиенты.Период < ВсеКлиенты1.Период

СГРУППИРОВАТЬ ПО
   ВсеКлиенты.Период,
   ВсеКлиенты.Клиент,
   ВсеКлиенты.Сейлз
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПериодыКлиентовДоВычисления.Период,
   ЕСТЬNULL(ДОБАВИТЬКДАТЕ(ПериодыКлиентовДоВычисления.Период1, ДЕНЬ, -1), &КонецПериода) КАК Период1,
   ПериодыКлиентовДоВычисления.Клиент,
   ПериодыКлиентовДоВычисления.Сейлз
ПОМЕСТИТЬ ПериодыКлиентов
ИЗ
   ПериодыКлиентовДоВычисления КАК ПериодыКлиентовДоВычисления
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЯЦФОСотрудникаСрезПоследних.Сотрудник,
   ЯЦФОСотрудникаСрезПоследних.ЦФО,
   ЯЦФОСотрудникаСрезПоследних.Период,
   ЯЦФОСотрудникаСрезПоследних.ПричинаИзмененияСостояния
ПОМЕСТИТЬ СрезСотрудникЦФО
ИЗ
   РегистрСведений.ЯЦФОСотрудника КАК ЯЦФОСотрудникаСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   &Сотрудник КАК Сотрудник,
   ЯЦФО.Ссылка КАК ЦФО
ПОМЕСТИТЬ ЦФОПозователя
ИЗ
   Справочник.ЯЦФО КАК ЯЦФО
ГДЕ
   ЯЦФО.Ссылка В ИЕРАРХИИ
           (ВЫБРАТЬ
               СрезСотрудникЦФО.ЦФО
           ИЗ
               СрезСотрудникЦФО КАК СрезСотрудникЦФО
           ГДЕ
               СрезСотрудникЦФО.Сотрудник = &Сотрудник)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦФОПозователя.Сотрудник КАК Пользователь,
   ЦФОПозователя.ЦФО,
   СрезСотрудникЦФО.Сотрудник КАК Сотрудники,
   СрезСотрудникЦФО.Период,
   СрезСотрудникЦФО.ПричинаИзмененияСостояния
ПОМЕСТИТЬ аа
ИЗ
   ЦФОПозователя КАК ЦФОПозователя
       ЛЕВОЕ СОЕДИНЕНИЕ СрезСотрудникЦФО КАК СрезСотрудникЦФО
       ПО ЦФОПозователя.ЦФО = СрезСотрудникЦФО.ЦФО
ГДЕ
   ВЫБОР
           КОГДА &РуководительЦФО
               ТОГДА 1 = 1
           ИНАЧЕ СрезСотрудникЦФО.Сотрудник = &Сотрудник
       КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   аа.Пользователь,
   аа.ЦФО,
   аа.Сотрудники,
   ЕСТЬNULL(МИНИМУМ(аа1.Период), ДАТАВРЕМЯ(3999, 12, 31)) КАК КонецПривязки,
   аа.Период КАК НачалоПривязки,
   аа.ПричинаИзмененияСостояния
ПОМЕСТИТЬ ПериодыПодчинения
ИЗ
   аа КАК аа
       ЛЕВОЕ СОЕДИНЕНИЕ аа КАК аа1
       ПО аа.Сотрудники = аа1.Сотрудники
           И аа.Период < аа1.Период
ГДЕ
   аа.ПричинаИзмененияСостояния <> &ПричинаИзмененияСостояния

СГРУППИРОВАТЬ ПО
   аа.Пользователь,
   аа.ЦФО,
   аа.Период,
   аа.Сотрудники,
   аа.ПричинаИзмененияСостояния
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПериодыПодчинения.Пользователь,
   ПериодыПодчинения.ЦФО,
   ПериодыПодчинения.Сотрудники,
   ПериодыПодчинения.НачалоПривязки,
   ВЫБОР
       КОГДА ПериодыПодчинения.НачалоПривязки <= &НачалоПериода
           ТОГДА &НачалоПериода
       ИНАЧЕ ПериодыПодчинения.НачалоПривязки
   КОНЕЦ КАК НачалоПривязки1,
   ПериодыПодчинения.КонецПривязки,
   ВЫБОР
       КОГДА ПериодыПодчинения.КонецПривязки >= &КонецПериода
           ТОГДА &КонецПериода
       ИНАЧЕ ПериодыПодчинения.КонецПривязки
   КОНЕЦ КАК КонецПривязки1,
   ПериодыПодчинения.ПричинаИзмененияСостояния
ПОМЕСТИТЬ ПериодыПодчиненияДляОтчета
ИЗ
   ПериодыПодчинения КАК ПериодыПодчинения
ГДЕ
   ПериодыПодчинения.КонецПривязки >= &НачалоПериода
   И ПериодыПодчинения.НачалоПривязки <= &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПериодыПодчиненияДляОтчета.Пользователь,
   ПериодыПодчиненияДляОтчета.ЦФО,
   ПериодыПодчиненияДляОтчета.Сотрудники КАК Сотрудники,
   ПериодыПодчиненияДляОтчета.НачалоПривязки1,
   ПериодыПодчиненияДляОтчета.КонецПривязки1,
   ПериодыКлиентов.Период,
   ПериодыКлиентов.Период1,
   ПериодыКлиентов.Клиент
ПОМЕСТИТЬ ПериодыКлиентовПодчинения
ИЗ
   ПериодыПодчиненияДляОтчета КАК ПериодыПодчиненияДляОтчета
       ЛЕВОЕ СОЕДИНЕНИЕ ПериодыКлиентов КАК ПериодыКлиентов
       ПО ПериодыПодчиненияДляОтчета.Сотрудники = ПериодыКлиентов.Сейлз
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПериодыКлиентовПодчинения.Пользователь,
   ПериодыКлиентовПодчинения.ЦФО,
   ПериодыКлиентовПодчинения.Сотрудники,
   ПериодыКлиентовПодчинения.Период КАК Период,
   ПериодыКлиентовПодчинения.Период1 КАК Период1,
   ПериодыКлиентовПодчинения.Клиент КАК Клиент,
   ЯКлиентДоговор.Договор КАК Договор
ПОМЕСТИТЬ ПериодыКлиентовПодчиненияВСЕ
ИЗ
   ПериодыКлиентовПодчинения КАК ПериодыКлиентовПодчинения
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЯКлиентДоговор КАК ЯКлиентДоговор
       ПО ПериодыКлиентовПодчинения.Клиент = ЯКлиентДоговор.Клиент

ИНДЕКСИРОВАТЬ ПО
   Период,
   Период1,
   Клиент,
   Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЯПартнерыАгенты.Договор,
   ЯПартнерыАгенты.НачалоПериода КАК НачалоПериодаПартнера,
   ВЫБОР
       КОГДА ЯПартнерыАгенты.КонецПериода = ДАТАВРЕМЯ(1, 1, 1)
           ТОГДА ДАТАВРЕМЯ(3999, 1, 1)
       ИНАЧЕ ЯПартнерыАгенты.КонецПериода
   КОНЕЦ КАК КонецПериодаПатнера,
   ЯПартнерыАгенты.Привлечение,
   ЯПартнерыАгенты.Обслуживание,
   ЯПартнерыАгенты.ДоговорКонтрагента
ПОМЕСТИТЬ ПартнерыАгенты
ИЗ
   РегистрСведений.ЯПартнерыАгенты КАК ЯПартнерыАгенты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ПериодыКлиентовПодчиненияВСЕ.ЦФО,
   ПериодыКлиентовПодчиненияВСЕ.Сотрудники,
   ПериодыКлиентовПодчиненияВСЕ.Клиент,
   ПериодыКлиентовПодчиненияВСЕ.Период КАК НачалоПодчинения,
   ПериодыКлиентовПодчиненияВСЕ.Период1 КАК КонецПодчинения,
   ПериодыКлиентовПодчиненияВСЕ.Договор КАК Договор,
   СУММА(ЕСТЬNULL(ЯОперационныеДоходы.ВеличинаВВалютеУчета, 0)) КАК GrossДоходы,
   СУММА(ВЫБОР
           КОГДА ЯОперационныеДоходы.Статья = &СТ106
               ТОГДА ЕСТЬNULL(ЯОперационныеДоходы.ВеличинаВВалютеУчета, 0)
           ИНАЧЕ 0
       КОНЕЦ) КАК Вознаграждение
ПОМЕСТИТЬ Доходы
ИЗ
   ПериодыКлиентовПодчиненияВСЕ КАК ПериодыКлиентовПодчиненияВСЕ
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЯОперационныеДоходы КАК ЯОперационныеДоходы
       ПО ПериодыКлиентовПодчиненияВСЕ.Договор = ЯОперационныеДоходы.Договор
           И (ЯОперационныеДоходы.ЦФОЗаказчик.БизнесНаправление = &БизнесНаправление)
           И ПериодыКлиентовПодчиненияВСЕ.Период <= ЯОперационныеДоходы.Период
           И ПериодыКлиентовПодчиненияВСЕ.Период1 >= ЯОперационныеДоходы.Период

СГРУППИРОВАТЬ ПО
   ЯОперационныеДоходы.Договор,
   ПериодыКлиентовПодчиненияВСЕ.ЦФО,
   ПериодыКлиентовПодчиненияВСЕ.Сотрудники,
   ПериодыКлиентовПодчиненияВСЕ.Период,
   ПериодыКлиентовПодчиненияВСЕ.Период1,
   ПериодыКлиентовПодчиненияВСЕ.Клиент,
   ПериодыКлиентовПодчиненияВСЕ.Договор

ИНДЕКСИРОВАТЬ ПО
   Договор,
   НачалоПодчинения,
   КонецПодчинения
;

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

ИНДЕКСИРОВАТЬ ПО
   Договор,
   КонецПодчинения,
   НачалоПодчинения
;

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

СГРУППИРОВАТЬ ПО
   Остатки.ЦФО,
   Остатки.Сотрудники,
   Остатки.Клиент,
   Остатки.НачалоПодчинения,
   Остатки.КонецПодчинения,
   Остатки.Договор,
   Остатки.GrossДоходы,
   Остатки.Вознаграждение,
   Остатки.АктивНаКонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Обороты.ЦФО,
   Обороты.Сейлз,
   Обороты.Клиент,
   Обороты.НачалоПодчинения,
   Обороты.КонецПодчинения,
   Обороты.Договор,
   Обороты.GrossДоходы,
   Обороты.Вознаграждение,
   Обороты.АктивНаКонецПериода,
   Обороты.ВыводыДенег,
   Обороты.ВводыДенег
ИЗ
   Обороты КАК Обороты






группировки используется на одном уровне(не иерархические), при выводе детальных записей сумма GrossДоходы одна(ну пусть будет 1700 000), выгрузил в  Excel проссумировав значения и убедился что итог правильный. Сформировал отчет с группировкой по любому изменения на выбор и сумма в поле GrossДоходы изменилась (к примеру 1680 000) периодически встречаю такую ошибку но не как не могу понять что ее порождает
Независимо от того, куда вы едете — это в гору и против ветра!