Каталог решений - Отчет по документу «Расходная накладная», конфигурация 1С:УНФ

Отчет по документу «Расходная накладная», конфигурация 1С:УНФ

Отчет по документу «Расходная накладная», конфигурация 1С:УНФ

В наличии

Внешний отчет, который открывается из документа «Расходная накладная», в качестве параметра в отчет передается ссылка на документ, в самом отчете необходимо видеть информацию из самого документа и информацию по остаткам номенклатуры.

Категория:

Описание

В данном примере я покажу свое решение вот такой задачи — необходимо создать  внешний отчет, который будет открываться из документа "Расходная накладная", в качестве параметра в отчет передается ссылка на документ, в  отчете необходимо видеть информацию из  самого документа (артикул, номенклатура, количество в документе) и информацию по остаткам номенклатуры ( остаток на складе списания, остатки на всех складах и итоги по всем складам). Данные по остаткам необходимо получать на дату документа (Граница.Исключая).

1. Создаем внешний отчет, в свойствах обязательно указываем "Хранилище вариантов отчетов" и в модуле объекта прописываем необходимые функции и процедуры для регистрации  внешнего отчета:

 

Функция СведенияОВнешнейОбработке() Экспорт
	
	НаименованиеОтчета="Анализ по остаткам";
	
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив();
	МассивНазначений.Добавить("Документ.РасходнаяНакладная");  // указываем вид документа
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Вид", "Отчет");
	ПараметрыРегистрации.Вставить("ОпределитьНастройкиФормы","Истина");
	ПараметрыРегистрации.Вставить("Наименование", НаименованиеОтчета);
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	ПараметрыРегистрации.Вставить("Информация", НаименованиеОтчета); 
	ПараметрыРегистрации.Вставить("ВерсияБСП", "3.1.7.235");
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд,
	НаименованиеОтчета,
	"1",
	"ОткрытиеФормы",
	Ложь,"");
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); 
	Возврат ПараметрыРегистрации;
	
КонецФункции

Функция ПолучитьТаблицуКоманд() 
	
	Команды = Новый ТаблицаЗначений;
	Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
	Возврат Команды; 
	
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор; 
	
КонецПроцедуры 

 

2.  Здесь же, в модуле объекта внешнего отчета, прописываем процедуру определения настройки формы:

 

Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт 
	
Настройки.ФормироватьСразу = Истина;
Настройки.РазрешеноИзменятьВарианты = Истина;
Настройки.События.ПриСозданииНаСервере = Истина;   

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

 

3.  В экспортной процедуре  "ПриСозданииНаСервере"  получим ссылку на документ и передадим ее в параметр "Ссылка" в СКД. Так как данные по остаткам нам нужны на дату документа (Граница.Исключая), в этой же процедуре в параметр "Период" в СКД передадим необходимое значение:

Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
	
	ОбъектыНазначения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Форма.Параметры, "ОбъектыНазначения");     
	Документ = ОбъектыНазначения[0]; //Получаем ссылку на документ   
	Если ОбъектыНазначения <> Неопределено Тогда
		Форма.ФормаПараметры.Отбор.Вставить("Ссылка", Документ); 
		//Данные по остаткам будем получать на дату документа, Граница.Исключая
		Граница = Новый Граница(Документ.Дата, ВидГраницы.Исключая);
		Форма.ФормаПараметры.Отбор.Вставить("Период", Граница);
	КонецЕсли;
    
КонецПроцедуры

 

4.  Создаем вычисляемое поле "Разница", рассчитываем по формуле: ОстатокНаСкладеСписания  — КоличествоВДокументе (по всем настройкам в СКД смотрим скриншоты).

5.  Указываем ресурсы и  на закладке "Параметры" делаем необходимые настройки.

6.  В настройках СКД создаем таблицу, в качестве строки  укажем группировку по полю "Номенклатура", в выбранных полях группировки сгруппируем поля "Номенклатура" и "Артикул", для того чтобы эти поля находились в разных колонках.

7. В колонки таблицы добавим необходимые группировки и настроим условное оформление.

has been added to your cart:
Оформление заказа