Удвоение итогов при выводе в табличной части
Здраствуйте, изучаю 1С но ещё не скажу что прям во всем разбираюсь. Поэтому обращаюсь с помощью может сможет кто-нибудь помочь или даст ссылку на статью где бы я мог вычитать информацию.
Существует печатная формат в ней я вывожу итоге по таблице по двум значениям: Пополнения и Удержания. С пополнениями никаких проблем а вот при сложении Удержаний сумма почему-то ещё умножается на 2.
Существует печатная формат в ней я вывожу итоге по таблице по двум значениям: Пополнения и Удержания. С пополнениями никаких проблем а вот при сложении Удержаний сумма почему-то ещё умножается на 2.
//Получить макет
Макет = Документы.НачислениеЗПСотрудника.ПолучитьМакет("Макет");
//Получение областей из макета
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаТаблицыНач = Макет.ПолучитьОбласть("ШапкаТаблицыНач");
ОбластьСтрокаТаблицыНач = Макет.ПолучитьОбласть("СтрокаТаблицыНач");
ОбластьПодвалНач = Макет.ПолучитьОбласть("ПодвалНач");
ОбластьШапкаТаблицыУд = Макет.ПолучитьОбласть("ШапкаТаблицыУд");
ОбластьСтрокаТаблицыУд = Макет.ПолучитьОбласть("СтрокаТаблицыУд");
ОбластьПодвалУд = Макет.ПолучитьОбласть("ПодвалУд");
//Заполнение параметров и вывод областей в табличный документ
//шапка
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеЗПСотрудника.Организация.Наименование КАК Организация,
| НачислениеЗПСотрудника.Поликлиника.Наименование КАК Поликлиника,
| НачислениеЗПСотрудника.Сотрудник.Наименование КАК Сотрудник,
| НачислениеЗПСотрудника.ПериодДок.Наименование КАК ПериодДок,
| НачислениеЗПСотрудника.ПериодДатаНачала КАК ПериодДатаНачала,
| НачислениеЗПСотрудника.ПериодДатаКонца КАК ПериодДатаКонца
|ИЗ
| Документ.НачислениеЗПСотрудника КАК НачислениеЗПСотрудника
|ГДЕ
| НачислениеЗПСотрудника.Ссылка = &СсылкаНаДокумент";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьШапка.Параметры.Организация = ВыборкаДетальныеЗаписи.Организация;
ОбластьШапка.Параметры.Поликлиника = ВыборкаДетальныеЗаписи.Поликлиника;
ОбластьШапка.Параметры.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
ОбластьШапка.Параметры.ПериодДок = Формат(ВыборкаДетальныеЗаписи.ПериодДок,"ДФ=MMMM.yyyy");
ОбластьШапка.Параметры.ПериодДатаНачала = Формат(ВыборкаДетальныеЗаписи.ПериодДатаНачала,"ДФ=dd.MM.yyyy");
ОбластьШапка.Параметры.ПериодДатаКонца = Формат(ВыборкаДетальныеЗаписи.ПериодДатаКонца, "ДФ=dd.MM.yyyy");
ТабДок.Вывести(ОбластьШапка);
КонецЦикла;
//шапка таблицы Нач
ТабДок.Вывести(ОбластьШапкаТаблицыНач);
//Строка таблицы Начисления
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеЗПСотрудникаНачисленияЗП.Отделение.Наименование КАК Отделение,
| НачислениеЗПСотрудникаНачисленияЗП.Должность.Наименование КАК Должность,
| НачислениеЗПСотрудникаНачисленияЗП.СуммаН КАК Сумма
|ИЗ
| Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
|ГДЕ
| НачислениеЗПСотрудникаНачисленияЗП.Ссылка.Ссылка = &СсылкаНаДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачислениеЗПСотрудникаНачисленияДополнительные.Отделение.Наименование,
| НачислениеЗПСотрудникаНачисленияДополнительные.Должность.Наименование,
| НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН
|ИЗ
| Документ.НачислениеЗПСотрудника.НачисленияДополнительные КАК НачислениеЗПСотрудникаНачисленияДополнительные
|ГДЕ
| НачислениеЗПСотрудникаНачисленияДополнительные.Ссылка.Ссылка = &СсылкаНаДокумент";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьСтрокаТаблицыНач.Параметры.Отделение = ВыборкаДетальныеЗаписи.Отделение;
ОбластьСтрокаТаблицыНач.Параметры.Должность = ВыборкаДетальныеЗаписи.Должность;
ОбластьСтрокаТаблицыНач.Параметры.СуммаНачисления = ВыборкаДетальныеЗаписи.Сумма;
//
ТабДок.Вывести(ОбластьСтрокаТаблицыНач);
КонецЦикла;
//подвал нач
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаНачисленияЗП.СуммаН) КАК СальдоКонецН,
| NULL КАК СальдоКонецУ
|ИЗ
| Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
|ГДЕ
| НачислениеЗПСотрудникаНачисленияЗП.Ссылка = &СсылкаНаДокумент";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьПодвалНач.Параметры.СальдоКонецН = ВыборкаДетальныеЗаписи.СальдоКонецН;
ТабДок.Вывести(ОбластьПодвалНач);
КонецЦикла;
//шапка таблицы Уд
ТабДок.Вывести(ОбластьШапкаТаблицыУд);
//Строка таблицы Уд
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеЗПСотрудникаУдержания.Удержание.Наименование КАК ВидОперации,
| НачислениеЗПСотрудникаУдержания.СуммаУ КАК СуммаУ,
| НачислениеЗПСотрудникаУдержания.Отделение.Наименование КАК ОтделениеУ,
| НачислениеЗПСотрудникаУдержания.Должность.Наименование КАК ДолжностьУ
|ИЗ
| Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
|ГДЕ
| НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачислениеЗПСотрудникаВыплатыУдержанияБелые.ВыпУд,
| НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып,
| NULL,
| NULL
|ИЗ
| Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьСтрокаТаблицыУд.Параметры.ОтделениеУ = ВыборкаДетальныеЗаписи.ОтделениеУ;
ОбластьСтрокаТаблицыУд.Параметры.ДолжностьУ = ВыборкаДетальныеЗаписи.ДолжностьУ;
ОбластьСтрокаТаблицыУд.Параметры.ВидОперации = ВыборкаДетальныеЗаписи.ВидОперации;
ОбластьСтрокаТаблицыУд.Параметры.СуммаУдержания = ВыборкаДетальныеЗаписи.СуммаУ;
//
ТабДок.Вывести(ОбластьСтрокаТаблицыУд);
КонецЦикла;
//подвал уд
//!!!Почему-то значение помиммо складывания умножаются на 2
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып + НачислениеЗПСотрудникаУдержания.СуммаУ) КАК СальдоКонецУ
|ИЗ
| Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания,
| Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые
|ГДЕ
| НачислениеЗПСотрудникаУдержания.Ссылка = &СсылкаНаДокумент";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьПодвалУд.Параметры.СальдоКонецУ = ВыборкаДетальныеЗаписи.СальдоКонецУ;
ТабДок.Вывести(ОбластьПодвалУд);
КонецЦикла;
ПоказатьПрикрепленные файлы:
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
в последнем запросе у вас данные тянутся из двух таблиц удержания и удержания белые.
между ними не указано соединение. это в корне не верно. и система начинает мультиплицировать все строки.
в следствии чего ваши строики задваиваются и далее суммы
между ними не указано соединение. это в корне не верно. и система начинает мультиплицировать все строки.
в следствии чего ваши строики задваиваются и далее суммы
(2) Ага, получилось. Пересчитал по по двум разным запросам и всё получилось
ЗапросСуммаВыплат = Новый Запрос;
ЗапросСуммаВыплат.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып) КАК СуммаВып
|ИЗ
| Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые
|ГДЕ
| НачислениеЗПСотрудникаВыплатыУдержанияБелые.Ссылка.Ссылка = &СсылкаНаДокумент";
ЗапросСуммаВыплат.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапросаСуммаВыплат = ЗапросСуммаВыплат.Выполнить();
ВыборкаСуммаВыплат = РезультатЗапросаСуммаВыплат.Выбрать();
Если ВыборкаСуммаВыплат.Следующий() Тогда
СуммаВыплат = ВыборкаСуммаВыплат.СуммаВып;
КонецЕсли;
// Запрос для суммы удержаний
ЗапросСуммаУдержаний = Новый Запрос;
ЗапросСуммаУдержаний.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаУдержания.СуммаУ) КАК СуммаУ
|ИЗ
| Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
|ГДЕ
| НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент";
ЗапросСуммаУдержаний.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапросаСуммаУдержаний = ЗапросСуммаУдержаний.Выполнить();
ВыборкаСуммаУдержаний = РезультатЗапросаСуммаУдержаний.Выбрать();
Если ВыборкаСуммаУдержаний.Следующий() Тогда
СуммаУдержаний = ВыборкаСуммаУдержаний.СуммаУ;
КонецЕсли;
// Подвал уд
СальдоКонецУ = СуммаВыплат + СуммаУдержаний;
ОбластьПодвалУд.Параметры.СальдоКонецУ = СальдоКонецУ;
ТабДок.Вывести(ОбластьПодвалУд);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот