Доброе время суток, помогите, пожалуйста, разобраться с запросом. Только начинаю осваивать 1С. Когда выводятся данные о пособиях, о больничном, о начислениях, они дублируются. То есть например выбран диапазон в 2 месяца, за эти 2 месяца было 2 разных суммы больничного, но в табл. строках отображается одна и таже сумма. Есть предположение почему такая путаница. Проблема в цикле, но это не точно

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Начисления.ПериодРегистрации КАК ПериодРегистрации,
    | Начисления.ВидРасчета КАК ВидРасчета,
    | Начисления.Результат КАК Результат
    |ИЗ
    | РегистрРасчета.Начисления КАК Начисления
    |ГДЕ
    | Начисления.ПериодРегистрации МЕЖДУ &Дата1 И &Дата2
    | И Начисления.Сотрудник = &Сотрудник
    |ИТОГИ
    | СУММА(Результат)
    |ПО
    | ОБЩИЕ,
    | ПериодРегистрации ПЕРИОДАМИ(МЕСЯЦ, , ),
    | ВидРасчета";
    Запрос.УстановитьПараметр("Дата1", НачалоМесяца(НачалоПериода));
    Запрос.УстановитьПараметр("Дата2", КонецМесяца(КонецПериода));
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаОбщийИтог = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    ВыборкаОбщийИтог.Следующий();

    ОбластьТаблицаИтог.Параметры.СуммаНачисления = ВыборкаОбщийИтог.Результат;

    ВыборкаПериодРегистрации = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаПериодРегистрации.Следующий() Цикл
    ОбластьТаблица.Параметры.МесяцНачисления = Формат(ВыборкаПериодРегистрации.ПериодРегистрации,"ДФ='MMMM yyyy'");
    ВыборкаВидРасчета = ВыборкаПериодРегистрации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаВидРасчета.Следующий() Цикл
    Сообщить(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ);
    Сообщить(ВыборкаВидРасчета.Результат);
    Если ЗначениеЗаполнено(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) Тогда
    Если СокрЛП(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) = "2300" Тогда
    ОбластьТаблица.Параметры.НачисленияБольничный = ВыборкаВидРасчета.Результат;
    Иначе
    ОбластьТаблица.Параметры.Начисления = ВыборкаВидРасчета.Результат;
    КонецЕсли;
    Иначе
    ОбластьТаблица.Параметры.НачисленияПособия = ВыборкаВидРасчета.Результат;
    КонецЕсли;
    КонецЦикла;
    ТабличныйДокумент.Вывести(ОбластьТаблица);
    КонецЦикла;
```
---
Дело в том, что именно в цикле параметры НАЧИСЛЕНИЙ записывали по одному обходу, проблему решило инициализация доп.переменных и суммирование внутри цикла

```1c
    СчБ = 0;
    СчНачис = 0;
    СчПособия = 0;
    ВыборкаВидРасчета = ВыборкаПериодРегистрации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаВидРасчета.Следующий() Цикл
    Если ЗначениеЗаполнено(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) Тогда
    Если СокрЛП(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) = "2300" Тогда
    сЧб = сЧб+ВыборкаВидРасчета.Результат;
    Иначе
    СчНачис = СчНачис+ВыборкаВидРасчета.Результат;
    КонецЕсли;
    Иначе
    СчПособия = СчПособия+ВыборкаВидРасчета.Результат;
    КонецЕсли;
    КонецЦикла;
    ОбластьТаблица.Параметры.НачисленияБольничный = сЧб;
    ОбластьТаблица.Параметры.Начисления = СчНачис;
    ОбластьТаблица.Параметры.НачисленияПособия = СчПособия;
    ТабличныйДокумент.Вывести(ОбластьТаблица);
    КонецЦикла;
```
---
Нужна выборка детальных записей внутри выборки по видам расчетов, а сама выборка по видам расчета должна иметь обход по группировкам.
---
как то так?

```1c
    Пока ВыборкаПериодРегистрации.Следующий() Цикл
    ОбластьТаблица.Параметры.МесяцНачисления = Формат(ВыборкаПериодРегистрации.ПериодРегистрации,"ДФ='MMMM yyyy'");
    ВыборкаВидРасчета = ВыборкаПериодРегистрации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаВидРасчета.Следующий() Цикл
    ВыборкаДетальныхЗаписей = ВыборкаВидРасчета.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаДетальныхЗаписей.Следующий() Цикл
    Если ЗначениеЗаполнено(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) Тогда
    Если СокрЛП(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) = "2300" Тогда
    ОбластьТаблица.Параметры.НачисленияБольничный = ВыборкаВидРасчета.Результат;
    Иначе
    ОбластьТаблица.Параметры.Начисления = ВыборкаВидРасчета.Результат;
    КонецЕсли;
    Иначе
    ОбластьТаблица.Параметры.НачисленияПособия = ВыборкаВидРасчета.Результат;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    ТабличныйДокумент.Вывести(ОбластьТаблица);
    КонецЦикла;
```
---
Так, но выборка детальных записей должна иметь прямой обход.
---
Прямой обход, то есть -
```1c
    ВыборкаДетальныхЗаписей = ВыборкаВидРасчета.Выбрать();
```
 ????
---
Да. Это есть прямой обход выборки.
В текущем запросе менять ничего не нужно.
---
Один черт, уже всю голову сломал(
---
Заметил неточность, уже после того как ответил:

```1c
    Пока ВыборкаПериодРегистрации.Следующий() Цикл
    ОбластьТаблица.Параметры.МесяцНачисления = Формат(ВыборкаПериодРегистрации.ПериодРегистрации,"ДФ='MMMM yyyy'");
    ВыборкаВидРасчета = ВыборкаПериодРегистрации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаВидРасчета.Следующий() Цикл
    ВыборкаДетальныхЗаписей = ВыборкаВидРасчета.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаДетальныхЗаписей.Следующий() Цикл
    Если ЗначениеЗаполнено(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) Тогда
    Если СокрЛП(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) = "2300" Тогда
    ОбластьТаблица.Параметры.НачисленияБольничный = ВыборкаДетальныхЗаписей.Результат;
    Иначе
    ОбластьТаблица.Параметры.Начисления = ВыборкаДетальныхЗаписей.Результат;
    КонецЕсли;
    Иначе
    ОбластьТаблица.Параметры.НачисленияПособия = ВыборкаДетальныхЗаписей.Результат;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    ТабличныйДокумент.Вывести(ОбластьТаблица);
    КонецЦикла;
```

Еще стоит подумать о том, нужны ли итоги по виду расчета.
На мой взгляд - не нужны, поэтому вид расчета можно убрать из итогов в запросе и убрать одну выборку по видам расчета с обходом по группировкам.
---
убрать одну выборку по видам расчета с обходом по группировкам.
Каким образом это сделать?
---
Если итоги по видам расчетов убраны в запросе, то вот так:

```1c
    Пока ВыборкаПериодРегистрации.Следующий() Цикл
    ОбластьТаблица.Параметры.МесяцНачисления = Формат(ВыборкаПериодРегистрации.ПериодРегистрации,"ДФ='MMMM yyyy'");
    ВыборкаДетальныхЗаписей = ВыборкаПериодРегистрации.Выбрать();
    Пока ВыборкаДетальныхЗаписей.Следующий() Цикл
    Если ЗначениеЗаполнено(ВыборкаДетальныхЗаписей.ВидРасчета.КодДоходаНДФЛ) Тогда
    Если СокрЛП(ВыборкаДетальныхЗаписей.ВидРасчета.КодДоходаНДФЛ) = "2300" Тогда
    ОбластьТаблица.Параметры.НачисленияБольничный = ВыборкаДетальныхЗаписей.Результат;
    Иначе
    ОбластьТаблица.Параметры.Начисления = ВыборкаДетальныхЗаписей.Результат;
    КонецЕсли;
    Иначе
    ОбластьТаблица.Параметры.НачисленияПособия = ВыборкаДетальныхЗаписей.Результат;
    КонецЕсли;
    КонецЦикла;
    ТабличныйДокумент.Вывести(ОбластьТаблица);
    КонецЦикла;
```
---
вид расчета можно убрать из итогов в запросе убрал, добавилась ещё одна сумма в консоли сообщений, но на результат отображения данных никак не повлияло
---
И должен ли я что-то в самом запросе менять?
---
Дело в том, что именно в цикле параметры НАЧИСЛЕНИЙ записывали по одному обходу, проблему решило инициализация доп.переменных и суммирование внутри цикла

```1c
    СчБ = 0;
    СчНачис = 0;
    СчПособия = 0;
    ВыборкаВидРасчета = ВыборкаПериодРегистрации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаВидРасчета.Следующий() Цикл
    Если ЗначениеЗаполнено(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) Тогда
    Если СокрЛП(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) = "2300" Тогда
    сЧб = сЧб+ВыборкаВидРасчета.Результат;
    Иначе
    СчНачис = СчНачис+ВыборкаВидРасчета.Результат;
    КонецЕсли;
    Иначе
    СчПособия = СчПособия+ВыборкаВидРасчета.Результат;
    КонецЕсли;
    КонецЦикла;
    ОбластьТаблица.Параметры.НачисленияБольничный = сЧб;
    ОбластьТаблица.Параметры.Начисления = СчНачис;
    ОбластьТаблица.Параметры.НачисленияПособия = СчПособия;
    ТабличныйДокумент.Вывести(ОбластьТаблица);
    КонецЦикла;
```
---
Попробуй так

```1c
    Пока ОБЩИЙРЕзультат.Следующий() цикл
    ОбщаяИтоговаСумма = ВыборкаПериодРегистрации.Результат;

    ВыборкаПериодРегистрации = ОБЩИЙРЕзультат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаПериодРегистрации.Следующий() Цикл

    ОбластьТаблица.Параметры.МесяцНачисления = Формат(ВыборкаПериодРегистрации.ПериодРегистрации,"ДФ='MMMM yyyy'");
    ВыборкаВидРасчета = ВыборкаПериодРегистрации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаВидРасчета.Следующий() Цикл
    Если ЗначениеЗаполнено(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) Тогда
    Если СокрЛП(ВыборкаВидРасчета.ВидРасчета.КодДоходаНДФЛ) = "2300" Тогда
    ОбластьТаблица.Параметры.НачисленияБольничный = ВыборкаВидРасчета.Результат;
    Иначе
    ОбластьТаблица.Параметры.Начисления = ВыборкаВидРасчета.Результат;
    КонецЕсли;
    Иначе
    ОбластьТаблица.Параметры.НачисленияПособия = ВыборкаВидРасчета.Результат;
    КонецЕсли;
    КонецЦикла;
    ТабличныйДокумент.Вывести(ОбластьТаблица);
    КонецЦикла;
    КонецЦикла;
```
---
Либо убери общие итоги, они не используются в цикле

```1c
    "ПО
    // | ОБЩИЕ,
    | ПериодРегистрации ПЕРИОДАМИ(МЕСЯЦ, , ),
```
---
Если делаю без общих итогов, то так
---
А в изначальном варианте получается так