1С 8.x Управляемое приложение 1С 7.7. Бухучет Статьи Ссылки
1С 8.x arrow 1С 8.x arrow УПП arrow Регламентированная отчетность УПП. Как прикрепить внешний отчет из другого релиза
Регламентированная отчетность УПП. Как прикрепить внешний отчет из другого релиза Печать

Задача

Есть релиз 1.2.22.3 , необходимо перенести фомы баланса (1,2,3,4,5)  из релиза 1.2.37

 

Решение

1) Сохраняем регламентный отчет, как внешний и изменяем у него имя для того, чтобы при загрузке в справочник регламентных отчетов он воспринимался именно, как новый объект. 

Например, РегламентированныйОтчетФорма3_2010 

 

2) Комментируем во внешнем отчете ряд процедур (несколько снижается функциональность, но непосредственно на формирование и выгрузку не влияет)

РегламентированнаяОтчетность.ПередПечатьюРегламентированногоОтчета(ЭтаФорма, Отказ);
РегламентированнаяОтчетность.ПередЗаполнениемРегламентированногоОтчета(ЭтаФорма, Отказ);
 РегламентированнаяОтчетность.ПрорисоватьПодменюПечать

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


3)В модуле формы изменяем вызовы в процедуре ПрорисоватьПодменюПечать() на  ПрорисоватьПодменюПечатьРегл() - убираем вызовы РегламентированнаяОтчетность.ПрорисоватьПодменюПечать()

 

4) Сама процедура ПрорисоватьПодменюПечатьРегл()

 Процедура ПрорисоватьПодменюПечатьРегл(Форма, ДействиеВстроеннаяПечать = Неопределено, ДействиеПечатьМЧБ = Неопределено, ПринудительнаяПрорисовкаКнопокВстроеннойПечати = Ложь) Экспорт
 
 ПоследовательностьКнопок = Новый Массив;
 ПоследовательностьКнопок.Добавить("ПечататьСразу");
 ПоследовательностьКнопок.Добавить("ПоказатьБланк");
 ПоследовательностьКнопок.Добавить("Разделитель");
 ПоследовательностьКнопок.Добавить("ПечататьМашиночитаемыйБланк");
 ПоследовательностьКнопок.Добавить("ПоказатьМашиночитаемыйБланк");
 
 // находим панель действий
 КоманднаяПанельДействий = Форма.ЭлементыФормы.Найти("КоманднаяПанельДействий");
 Если КоманднаяПанельДействий = Неопределено Тогда
  Возврат;
 КонецЕсли;
 
 // находим подменю печати
 ПодменюПечати = КоманднаяПанельДействий.Кнопки.Найти("ПодменюПечати");
 Если ПодменюПечати = Неопределено Тогда
  Возврат;
 КонецЕсли;
 
 // если встроенная печать предусмотрена в отчете или не предусмотрена внешняя
 Если ПринудительнаяПрорисовкаКнопокВстроеннойПечати ИЛИ ДействиеВстроеннаяПечать <> Неопределено Тогда
  
  Если ПринудительнаяПрорисовкаКнопокВстроеннойПечати ИЛИ (СвойствоОпределено(Форма, "мПечатьБезШтрихкодаРазрешена") И Форма.мПечатьБезШтрихкодаРазрешена = Истина) Тогда
   
  Если ПодменюПечати.Кнопки.Найти("ПечататьСразу") = Неопределено Тогда
  ПодменюПечати.Кнопки.Добавить("ПечататьСразу", ТипКнопкиКоманднойПанели.Действие, "Печатать сразу", ДействиеВстроеннаяПечать);
  КонецЕсли;
   
  Если ПодменюПечати.Кнопки.Найти("ПоказатьБланк") = Неопределено Тогда
  ПодменюПечати.Кнопки.Добавить("ПоказатьБланк", ТипКнопкиКоманднойПанели.Действие, "Показать бланк", ДействиеВстроеннаяПечать);
  КонецЕсли;
   
  Иначе
   
  КнопкаПечататьСразу = ПодменюПечати.Кнопки.Найти("ПечататьСразу");
  Если КнопкаПечататьСразу <> Неопределено Тогда
  ПодменюПечати.Кнопки.Удалить(КнопкаПечататьСразу);
  КонецЕсли;
   
  КнопкаПоказатьБланк = ПодменюПечати.Кнопки.Найти("ПоказатьБланк");
  Если КнопкаПоказатьБланк <> Неопределено Тогда
  ПодменюПечати.Кнопки.Удалить(КнопкаПоказатьБланк);
  КонецЕсли;
   
  КонецЕсли;
  
 КонецЕсли;
 
 // если внешняя печать не предусмотрена в отчете
 Если ДействиеПечатьМЧБ <> Неопределено Тогда
  
  Если ПодменюПечати.Кнопки.Найти("ПечататьМашиночитаемыйБланк") = Неопределено Тогда
  ПодменюПечати.Кнопки.Добавить("ПечататьМашиночитаемыйБланк", ТипКнопкиКоманднойПанели.Действие, "Печатать сразу бланк формы с двухмерным штрихкодом PDF417", ДействиеПечатьМЧБ);
  КонецЕсли;
  
  Если ПодменюПечати.Кнопки.Найти("ПоказатьМашиночитаемыйБланк") = Неопределено Тогда
  ПодменюПечати.Кнопки.Добавить("ПоказатьМашиночитаемыйБланк", ТипКнопкиКоманднойПанели.Действие, "Показать бланк формы с двухмерным штрихкодом PDF417", ДействиеПечатьМЧБ);
  КонецЕсли;
  
 Иначе
  
  КнопкаПечататьМашиночитаемыйБланк = ПодменюПечати.Кнопки.Найти("ПечататьМашиночитаемыйБланк");
  Если КнопкаПечататьМашиночитаемыйБланк <> Неопределено Тогда
  ПодменюПечати.Кнопки.Удалить(КнопкаПечататьМашиночитаемыйБланк);
  КонецЕсли;
  
  КнопкаПоказатьМашиночитаемыйБланк = ПодменюПечати.Кнопки.Найти("ПоказатьМашиночитаемыйБланк");
  Если КнопкаПоказатьМашиночитаемыйБланк <> Неопределено Тогда
  ПодменюПечати.Кнопки.Удалить(КнопкаПоказатьМашиночитаемыйБланк);
  КонецЕсли;
  
 КонецЕсли;
 
 // добавляем разделитель, если его нет
 Если ПодменюПечати.Кнопки.Количество() > 2 И ДействиеПечатьМЧБ <> Неопределено И ДействиеВстроеннаяПечать <> Неопределено Тогда
  
  Разделитель = ПодменюПечати.Кнопки.Найти("Разделитель");
  Если Разделитель = Неопределено Тогда
  ПодменюПечати.Кнопки.Вставить(2, "Разделитель", ТипКнопкиКоманднойПанели.Разделитель);
  //Иначе
  // ИндексРазделителя = ПодменюПечати.Кнопки.Индекс(Разделитель);
  // ПодменюПечати.Кнопки.Сдвинуть(Разделитель, 2 - ИндексРазделителя);
  КонецЕсли;
  
 КонецЕсли;
 
 // сортируем кнопки
 НомерСледующейКнопки = 0;
 Для ИндексКнопки = 0 По ПоследовательностьКнопок.Количество() - 1 Цикл
  
  ТекКнопка = ПодменюПечати.Кнопки.Найти(ПоследовательностьКнопок[ИндексКнопки]);
  Если ТекКнопка = Неопределено Тогда
  Продолжить;
  КонецЕсли;
  
  ПодменюПечати.Кнопки.Сдвинуть(ТекКнопка, НомерСледующейКнопки - ПодменюПечати.Кнопки.Индекс(ТекКнопка));
  
  НомерСледующейКнопки = НомерСледующейКнопки + 1;
  
 КонецЦикла;
 
 Для Каждого ЭлКнопка Из ПоследовательностьКнопок Цикл
 КонецЦикла;
 
КонецПроцедуры

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

 

Процедура ПроверитьОтчеты()

... 

 //Определим список отчетов, которые должны выгружаться в формате <> Перечисления.ПорядкиОкругленияОтчетности.Окр1
 ОтчетыСохраненныеСНевернымОркуглением = Новый СписокЗначений;
 ОтчетыБаланса = Новый СписокЗначений;
 ОтчетыБаланса.Добавить("РегламентированныйОтчетБаланс");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетБаланс_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма2");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма2_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма3");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма3_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма4");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма4_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма5");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма5_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма6");

...

 

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

 

 

 Процедура СформироватьТекстыВыгрузки(ПечатаемыеЛисты = Неопределено)

...

ОТВЕЧАЕТ ЗА ВЫГРУЗКУ ОТЧЕТА

//Определим список отчетов, которые должны выгружаться в формате <> Перечисления.ПорядкиОкругленияОтчетности.Окр1


 ОтчетыСохраненныеСНевернымОркуглением = Новый СписокЗначений;
 ОтчетыБаланса = Новый СписокЗначений;
 ОтчетыБаланса.Добавить("РегламентированныйОтчетБаланс");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетБаланс_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма2");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма2_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма3");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма3_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма4");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма4_2010");//<БИОСТАР>
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма5");
 ОтчетыБаланса.Добавить("РегламентированныйОтчетФорма5_2010");//<БИОСТАР>

 ...

 

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

 

6) Внести новый внешний регламентный отчет в справочник РегламентныеОтчеты