gifts2017

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

Опубликовал Николай Степанов (Tapochki-tmn) в раздел Программирование - Работа с интерфейсом

Чтобы не формировать несколько отчетов, выставляя фильтры по организации/складам/номенклатуре/документу-регистратору и не сводить потом всю эту информацию воедино, пытаясь оценить эффективность и рентабельность продаж по конкретному документу реализации, предлагаю встроить в документ вызов типового отчета по валовой прибыли с уже настроенными фильтрами. Доработка разрабатывалась для УПП 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. Светлана Куприянова (Merlin12042009) 13.08.14 12:25
Браво! Вы оказываете неоценимую помощь начинающим программистам, причем бесплатно.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа