Каталог решений - Доработка типового отчета на СКД с помощью расширения

Доработка типового отчета на СКД с помощью расширения

Доработка типового отчета на СКД с помощью расширения

В наличии

Доработка типового отчета на СКД в БП 3.0 с помощью расширения конфигурации.
Пример, как можно внести изменения в типовой отчет «Бухгалтерии предприятия» 3.0 без снятия конфигурации с поддержки.
Описан пошаговый алгоритм действий и способы решения возникающих при этом проблем.

Категория:

Описание

Итак, что мы имеем? Поставлена задача доработать типовой отчет "Продажи" в конфигурации "Бухгалтерия предприятия 3.0".

Необходимо сделать так, чтобы этот отчет выводил помимо двух показателей "Количество" и "Сумма" третий показатель — "Вес".

Разработка и тестирование производились на релизе На релизе 3.0.99.21 конфигурации "Бухгалтерия предприятия".

Что нам для этого нужно? С чего начать?

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

Идем дальше. Добавляем в конфигурацию расширение. Меню -Конфигурация — Расширение конфигурации.

 

 

Назовем его "АдаптацияОтчетаПродажи". Префикс — "Старт_". Назначение — "Адаптация".

 

 

Снимем признак "Безопасный режим" в расширении.

 

 

Найдем в конфигурации нужный нам отчет "Продажи" и добавим его в расширение.

 

 

Также нам необходимо заимствовать в расширение следующие реквизиты отчета:
НачалоПериода, КонецПериода, Периодичность, РазмещениеДополнительныхПолей, ПоказательКоличество, ПоказательСумма.

Последние два реквизита — это признаки включения в отчет соответствующих показателей.
Поскольку нам необходимо добавить в отчет вывод нашего показателя "Вес", добавим еще один реквизит — ПоказательВес.

Добавим также еще один очень важный реквизит — ТекущаяСхемаКомпоновкиДанных. Тип реквизита Строка(80).
Комментарий "Наименование текущей используемой схемы компоновки данных".
Этот реквизит присутствует в некоторых других отчетах конфигурации, но в отчете "Продажи" его нет.
Зачем он нужен? Расскажу позже.

 

 

Также необходимо заимствовать в отчет табличные части Группировка и ДополнительныеПоля, а также их реквизиты Использование, Представление, ТипГруппировки.

Кроме этого, заимствуем форму отчета. Нам понадобится ее изменить.

Также добавляем макет — Схему компоновки данных. Для этого просто копируем в расширение макет "СхемаКомпоновкиДанных" типового отчета "Прдажи", и даем ему имя Старт_СхемаКомпоновкиДанных.
Почему мы именно копируем макет СКД, а не заимствуем его из отчета конфигурации?
Потому что расширения в 1С пока не умеют работать с заимствованной схемой компоновки.

Что делаем дальше? Подправим немного нашу заимствованную форму отчета.
Находим в элементах формы группу "ГруппаПоказатели". Видим что в этой группе есть элементы ПоказательКоличество и ПоказательСумма. Нам нужно здесь же разместить элемент ПоказательВес, связанный с добавленным нами ранее реквизитом отчета.
В правом верхнем окне формы раскрываем ветку реквизита Отчет, и… очень удивляемся.
Мы не видим там наш добавленный ранее реквизит отчета ПоказательВес. Что же делать?

 

 

Многих новичков, только начинающих работать с расширениями, этот вопрос ставит в тупик.

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

 

 

После этого мы сможем вывести наш добавленный реквизит на форму.

 

 

Добавим обработчик события "ПриИзменении" для элемента ПоказательВес.

  &НаКлиенте
  Процедура Старт_ПоказательВесПриИзмененииПосле(Элемент)
  
  	Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
  		ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "НеАктуальность");
  	КонецЕсли;
  
  КонецПроцедуры

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

 

 

Такой тип вызова позволит нам использовать новые возможности расширений, описанные здесь.
Эти возможности доступны в релизах платформы начиная с 8.3.15.1489.
Они позволяют нам вносить "точечные" изменения в типовой код за счет использования инструкция препроцессора
#Вставить и #КонецВставить, #Удалить и #КонецУдалить.

Итак, измененный код процедуры УстановитьНастройкиПоУмолчанию() будет выглядеть следующим образом:

  &НаСервере
  &ИзменениеИКонтроль("УстановитьНастройкиПоУмолчанию")
  Процедура Старт_УстановитьНастройкиПоУмолчанию()
  
  	БухгалтерскиеОтчетыВызовСервера.УстановитьНастройкиПоУмолчанию(ЭтотОбъект);
  
  	Отчет.ПоказательСумма = Истина;
  	Отчет.ПоказательКоличество = Истина;
  	#Вставка
  	Отчет.ПоказательВес = Истина;
  	#КонецВставки
  
  КонецПроцедуры

Также нам потребуется внести изменения в функцию ПодготовитьПараметрыОтчетаНаСервере() модуля формы.
Делаем это также как и в предыдущем случае. Измененный код функции будет выглядеть следующим образом:

 

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