Валовая прибыль из документа "Реализация товаров и услуг" для оценки эффективности продажи


Чтобы не формировать несколько отчетов, выставляя фильтры по организации/складам/номенклатуре/документу-регистратору и не сводить потом всю эту информацию воедино, пытаясь оценить эффективность и рентабельность продаж по конкретному документу реализации, предлагаю встроить в документ вызов типового отчета по валовой прибыли с уже настроенными фильтрами. Доработка разрабатывалась для УПП 1.3, но может быть встроена и в УТ 10.3.  Может, кому пригодится.
Собственно, из формы документа предлагается вызывать типовой отчет по валовой прибыли с установленным фильтром на регистр по регистратору.

Предполагается, что кнопку для вызова прилагаемой процедуры сумеете встроить сами 🙂

// Обработчик события "Действие" кнопки "ВаловаяПрибыльПоДокументу"

// командной панели формы. Вызывает одноименный отчет .

//

Процедура ДействияФормыВаловаяПрибыльПоДокументу(Кнопка)

 

 Попытка

  ИмяОтчета = "ВаловаяПрибыль";  

  

  ОтчетОбъект = Отчеты[ИмяОтчета].Создать();

  

  ФормаОтчета = ОтчетОбъект.ПолучитьФорму();

  Попытка

   ФормаОтчета.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;

  Исключение  

  КонецПопытки;

  ФормаОтчета.УниверсальныйОтчет.ВариантОформления = СтандартноеОформление.Камень;

  

  ОтчетОбъект.УстановитьНачальныеНастройки();

  ОтчетОбъект.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь;

  

  ФормаОтчета.УниверсальныйОтчет.ДатаНач = Дата;

  ФормаОтчета.УниверсальныйОтчет.ДатаКон = Дата;

  ФормаОтчета.УниверсальныйОтчет.ОтрицательноеКрасным    = Истина;

  ФормаОтчета.УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Ложь;

  ФормаОтчета.УниверсальныйОтчет.ВыводитьОбщиеИтоги      = Истина;

  

  //Если СтандартныеНастройки Тогда   

  // ОтчетОбъект.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Истина;

  // ФормаОтчета.Открыть(); 

  // ФормаОтчета.УниверсальныйОтчет.ДатаНач = НачалоДня(НачалоПериода);

  // ФормаОтчета.УниверсальныйОтчет.ДатаКон = КонецДня(КонецПериода);

  // ФормаОтчета.ОбновитьОтчет();  

  // Возврат;

  //КонецЕсли;

  

 Исключение

  Предупреждение("Отчет не обнаружен. Возможно у Вас его нет или он не включен в состав программы.");

  Возврат;

 КонецПопытки;

 

 //Если ИмяОтчета = "ВаловаяПрибыль" тогда

  ФормаОтчета.Открыть(); 

  

  Отборы = ФормаОтчета.ЭтотОбъект.УниверсальныйОтчет.ПостроительОтчета.Отбор;

  Сч = 0;

  Пока Сч < Отборы.Количество() Цикл

   Отборы[Сч].Использование = Ложь;

   Сч = Сч+1;

  КонецЦикла;

  

  ПостроительОтчета = ФормаОтчета.УниверсальныйОтчет.ПостроительОтчета;

  УниверсальныйОтчет = ФормаОтчета.УниверсальныйОтчет;

  

  ПостроительОтчета.ВыбранныеПоля.Очистить();

  ПостроительОтчета.Порядок.Очистить();                                                                

  ПостроительОтчета.ИзмеренияСтроки.Очистить();

  ПостроительОтчета.ИзмеренияКолонки.Очистить(); 

  

  

  // Добавление показателей

  // Необходимо вызывать для каждого добавляемого показателя.

  ВалютаУпр = глЗначениеПеременной("ВалютаУправленческогоУчета");

  // УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>);

  УниверсальныйОтчет.ДобавитьПоказатель("Количество", "Ед. хранения", Ложь, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

  УниверсальныйОтчет.ДобавитьПоказатель("КоличествоБазовыхЕдиниц", "Базовых ед.", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

  УниверсальныйОтчет.ДобавитьПоказатель("КоличествоЕдиницОтчетов", "Ед. отчетов", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

  

  УниверсальныйОтчет.ДобавитьПоказатель("СтоимостьБезНДС", "Без НДС", Ложь, "ЧЦ=15; ЧДЦ=2", "СтоимостьПродажи", "Стоимость продажи (" + ВалютаУпр + ")");

  УниверсальныйОтчет.ДобавитьПоказатель("НДС", "НДС", Ложь, "ЧЦ=15; ЧДЦ=2", "СтоимостьПродажи");

  УниверсальныйОтчет.ДобавитьПоказатель("Стоимость", "С НДС", Истина, "ЧЦ=15; ЧДЦ=2", "СтоимостьПродажи");

  

  УниверсальныйОтчет.ДобавитьПоказатель("Себестоимость", "Себестоимость  (" + ВалютаУпр + ")", Ложь, "ЧЦ=15; ЧДЦ=2");

  

  УниверсальныйОтчет.ДобавитьПоказатель("ВаловаяПрибыль", "Валовая прибыль (" + ВалютаУпр + ")", Истина, "ЧЦ=15; ЧДЦ=2");

  

  УниверсальныйОтчет.ДобавитьПоказатель("Эффективность", "Эффективность, %", Истина, "ЧЦ=15; ЧДЦ=2");

  УниверсальныйОтчет.ДобавитьПоказатель("Рентабельность", "Рентабельность, %", Ложь, "ЧЦ=15; ЧДЦ=2");
  // Добавление предопределенных группировок строк отчета.

  // Необходимо вызывать для каждой добавляемой группировки строки.

  // УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>);

  УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Регистратор");

  УниверсальныйОтчет.ДобавитьИзмерениеСтроки("ЗаказПокупателя");

  УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");

   

  

  

  Если ПостроительОтчета.Отбор.Найти("Регистратор")=неопределено тогда

   ПостроительОтчета.Отбор.Добавить(ПостроительОтчета.ДоступныеПоля.Регистратор.ПутьКДанным);

  КонецЕсли;

  ПостроительОтчета.Отбор.Регистратор.Использование = Истина;

  ПостроительОтчета.Отбор.Регистратор.ВидСравнения  = ВидСравнения.Равно;

  ПостроительОтчета.Отбор.Регистратор.Значение      = ЭтотОбъект.Ссылка;

  

  ФормаОтчета.ОбновитьОтчет();

  //ФормаОтчета.ЭлементыФормы.ПолеТабличногоДокументаРезультат.ПоказатьУровеньГруппировокСтрок(0);

  

 //КонецЕсли;

 

КонецПроцедуры

1 Comment

  1. Merlin12042009

    Браво! Вы оказываете неоценимую помощь начинающим программистам, причем бесплатно.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *