1. Создаем новую внешний отчет и указываем сведения в модуле объекта:
Функция СведенияОВнешнейОбработке() Экспорт
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить("Наименование", "Сводная по благотворительности (i)");
РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
РегистрационныеДанные.Вставить("Версия", "4.1");
РегистрационныеДанные.Вставить("Вид", "ДополнительныйОтчет");
РегистрационныеДанные.Вставить("Информация", "Сводная по благотворительности (i)");
ТаблицаКоманд = ПолучитьТаблицуСКомандами();
ДобавитьКоманду(ТаблицаКоманд,
"Сводная по благотворительности (i)",
1,
"ОткрытиеФормы",
Истина,
"");
РегистрационныеДанные.Вставить("Команды", ТаблицаКоманд);
Возврат РегистрационныеДанные;
КонецФункции
Функция ПолучитьТаблицуСКомандами()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление");
Команды.Колонки.Добавить("Идентификатор");
Команды.Колонки.Добавить("Использование");
Команды.Колонки.Добавить("ПоказыватьОповещение");
Команды.Колонки.Добавить("Модификатор");
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд,
Представление,
Идентификатор,
Использование,
ПоказыватьОповещение = Ложь,
Модификатор)
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
2. Создаём макет

3. Создаём форму отчета:

4. Создаём обработку кнопки "Сформировать":
&НаСервере
Процедура СформироватьНаСервере()
ТабДок.Очистить();
Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
// расчет выручки
//// тут запрос
Запрос.УстановитьПараметр("СчетДтСебестоимПродаж", ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД);
Запрос.УстановитьПараметр("СчетКтВыручки", ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("Организация", Организация);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ИтогоПродажиБезНДС = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ИтогоПродажиБезНДС = ИтогоПродажиБезНДС + ВыборкаДетальныеЗаписи.СуммаПродажиСНДС - ВыборкаДетальныеЗаписи.СуммаНДС ;
КонецЦикла;
ИтогоПродажиБезНДС = ИтогоПродажиБезНДС;
// вывод
ОбластьШапкаТаблицы1 = Макет.ПолучитьОбласть("ШапкаТаблицы1");
ОбластьШапкаТаблицы1.Параметры.Организация = Организация;
ОбластьШапкаТаблицы1.Параметры.НачалоПериода = НачалоПериода;
ОбластьШапкаТаблицы1.Параметры.КонецПериода = КонецПериода;
ОбластьШапкаТаблицы1.Параметры.ВыручкаБезНДССумма = ИтогоПродажиБезНДС;
ОбластьШапкаТаблицы1.Параметры.Процент = Процент;
ПроцентСумма = Процент * ИтогоПродажиБезНДС / 100;
ОбластьШапкаТаблицы1.Параметры.ПроцентСумма = ПроцентСумма;
ТабДок.Вывести(ОбластьШапкаТаблицы1);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.Период КАК Период,
| ХозрасчетныйДвиженияССубконто.Регистратор КАК Регистратор,
| ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма,
| ПРЕДСТАВЛЕНИЕ(ХозрасчетныйДвиженияССубконто.СубконтоДт1) КАК СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.Регистратор.Комментарий КАК РегистраторКомментарий,
| ПРЕДСТАВЛЕНИЕ(ХозрасчетныйДвиженияССубконто.Регистратор.Контрагент) КАК РегистраторКонтрагент
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
| ХозрасчетныйДвиженияССубконто.Организация = &Организация
| И ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &НачалоПериода И &КонецПериода
|
|УПОРЯДОЧИТЬ ПО
| Период";
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("Организация", Организация);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СтрокаИтого1 = 0;
ВыборкаДетальныеЗаписи.Сбросить();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.СубконтоДт1 = "Благотворительность, фин помощь принимаемые в НУ." Тогда
ОбластьСтрокаТаблицы1 = Макет.ПолучитьОбласть("СтрокаТаблицы1");
ОбластьСтрокаТаблицы1.Параметры.Дата = ВыборкаДетальныеЗаписи.Период;
// убираем часть после "от ......"
РегистраторСДата = "" + ВыборкаДетальныеЗаписи.Регистратор;
Позиция = Найти(РегистраторСДата, "от");
РегистраторБезДата = Лев(РегистраторСДата, Позиция - 1);
ОбластьСтрокаТаблицы1.Параметры.Документ = РегистраторБезДата;
Если ВыборкаДетальныеЗаписи.РегистраторКонтрагент = "" Тогда
ОбластьСтрокаТаблицы1.Параметры.Контрагент = ВыборкаДетальныеЗаписи.РегистраторКомментарий;
Иначе
ОбластьСтрокаТаблицы1.Параметры.Контрагент = ВыборкаДетальныеЗаписи.РегистраторКонтрагент;
КонецЕсли;
ОбластьСтрокаТаблицы1.Параметры.Сумма = ВыборкаДетальныеЗаписи.Сумма;
СтрокаИтого1 = СтрокаИтого1 + ВыборкаДетальныеЗаписи.Сумма;
ТабДок.Вывести(ОбластьСтрокаТаблицы1);
КонецЕсли;
КонецЦикла;
ОбластьСтрокаИтого1 = Макет.ПолучитьОбласть("СтрокаИтого1");
ОбластьСтрокаИтого1.Параметры.Итогосумма1 = СтрокаИтого1;
ТабДок.Вывести(ОбластьСтрокаИтого1);
ОбластьШапкаТаблицы2 = Макет.ПолучитьОбласть("ШапкаТаблицы2");
ТабДок.Вывести(ОбластьШапкаТаблицы2);
ВыборкаДетальныеЗаписи.Сбросить();
СтрокаИтого2 = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.СубконтоДт1 = "Благотворительность, фин помощь не принимаемые в НУ." Тогда
ОбластьСтрокаТаблицы2 = Макет.ПолучитьОбласть("СтрокаТаблицы2");
ОбластьСтрокаТаблицы2.Параметры.Дата = ВыборкаДетальныеЗаписи.Период;
// убираем часть после "от ......"
РегистраторСДата = "" + ВыборкаДетальныеЗаписи.Регистратор;
Позиция = Найти(РегистраторСДата, "от");
РегистраторБезДата = Лев(РегистраторСДата, Позиция - 1);
ОбластьСтрокаТаблицы2.Параметры.Документ = РегистраторБезДата;
Если ВыборкаДетальныеЗаписи.РегистраторКонтрагент = "" Тогда
ОбластьСтрокаТаблицы2.Параметры.Контрагент = ВыборкаДетальныеЗаписи.РегистраторКомментарий;
Иначе
ОбластьСтрокаТаблицы2.Параметры.Контрагент = ВыборкаДетальныеЗаписи.РегистраторКонтрагент;
КонецЕсли;
ОбластьСтрокаТаблицы2.Параметры.Сумма = ВыборкаДетальныеЗаписи.Сумма;
СтрокаИтого2 = СтрокаИтого2 + ВыборкаДетальныеЗаписи.Сумма;
ТабДок.Вывести(ОбластьСтрокаТаблицы2);
КонецЕсли;
КонецЦикла;
ОбластьСтрокаИтого2 = Макет.ПолучитьОбласть("СтрокаИтого2");
ОбластьСтрокаИтого2.Параметры.Итогосумма2 = СтрокаИтого2;
ТабДок.Вывести(ОбластьСтрокаИтого2);
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.ОстатокСумма = ПроцентСумма - СтрокаИтого1 ;
ТабДок.Вывести(ОбластьПодвал);
КонецПроцедуры
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
КонецПроцедуры
5. Загружаем и подключаем.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.188.17, 3.0.186.21
Вступайте в нашу телеграмм-группу Инфостарт
