Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 июн 2025, 12:11

Как можно сформировать отчет скд с параметрами текущего документа?

Автор sumsnary, 03 июн 2025, 11:43

0 Пользователей и 1 гость просматривают эту тему.

sumsnary

При формировании отчета нужно передать параметры текущего документа во внешний отчет на скд, и на основе этих параметров должен формироваться отчет, как это можно реализовать, пробую параметры формы передавать и форму открывать, но параметры не заполняются &НаКлиенте
Процедура СформироватьОтчет(Команда)
    Если Не СсылкаНаОбработку() Тогда
        Возврат;
    КонецЕсли;
   
    ПараметрыФормы = Новый Структура();
    ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
    ПараметрыФормы.Вставить("ДатаС", Период);
    ПараметрыФормы.Вставить("ДатаПо", Период);
    ПараметрыФормы.Вставить("Организация", Объект.Организация);
    ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
   
    КлючВарианта = ПолучитьКлючВариантаОтчета();
    Если КлючВарианта <> Неопределено Тогда
        ПараметрыФормы.Вставить("КлючВарианта", КлючВарианта);
    КонецЕсли;
        ОткрытьФорму("ВнешнийОтчет.ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП.Форма", ПараметрыФормы);       
       
 
КонецПроцедуры

&НаСервере
Функция ПолучитьКлючВариантаОтчета()
    СписокВариантов = ХранилищеВариантовОтчетов.ПолучитьСписок("ВнешнийОтчет.ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП");
    Если СписокВариантов.Количество() = 0 Тогда
        Возврат Неопределено;
    КонецЕсли;
   
    Возврат СписокВариантов[0].Значение;
КонецФункции

&НаСервере
Функция СсылкаНаОбработку()
    ОтчетСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Отчет о распределении использованных диафрагм на выпуск ВП");
    Если ОтчетСсылка.Пустая() Тогда
        Сообщить("Не удалось найти отчет 'Отчет о распределении использованных диафрагм на выпуск ВП'");
        Возврат Ложь;
    КонецЕсли;
   
    ДвоичныеДанные = ОтчетСсылка.ХранилищеОбработки.Получить();
    АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
   
    ВнешниеОтчеты.Подключить(АдресХранилища, "ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП");
   
    Возврат Истина;
КонецФункции

sali

вам нужно сделать внешний отчет по каким-то документам?
заходите в Файл - > новый Внешний отчет и создаете что вам нужно

Максим75

sumsnary, а где в самой форме отчета обработка передаваемых параметров при открытии его формы?
там надо ПриСозданииНаСервере переданные параметры куда-то запихать на самой форме (возможно на форме есть реквизиты, каким это все можно присвоить).
Ну а потом при выполнении отчета на скд необходимо параметрам отчета (или отборам) программно присвоить и выполнить отчет.

вот о-о-очень примерно что надо сделать:

так где вызываете отчет что-то типа такого
Стр = Новый Структура();
   Стр.Вставить("Док",Объект.Ссылка);
   Стр.Вставить("ДатаН",Объект.НачПериода);
   Стр.Вставить("ДатаК",Объект.КонПериода);
   Стр.Вставить("КолвоСтрок",Объект.КолвоМесяцевСреднее);
   
   ОткрытьФорму("Отчет.Отчет1.Форма.ФормаОтчета",Стр,Объект);

в самом отчете
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   // Вставить содержимое обработчика.
         
   СтандартнаяОбработка = Ложь;
   
   КомпоновщикНастроек = Отчет.КомпоновщикНастроек;
   Настройки = КомпоновщикНастроек.Настройки;
   
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ВыбСсылка",Параметры.Док);
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала",Параметры.ДатаН);
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаОкончания",Параметры.ДатаК);
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КолвоСтрокДляВыбора",Параметры.КолвоСтрок);
   
   //   Сообщить("Создали на сервере");
КонецПроцедуры

sumsnary

Максим75, Смотрите,так должно получиться? Процедура СформироватьОтчет(Команда)
    Если Не СсылкаНаОбработку() Тогда
        Возврат;
    КонецЕсли;
   
   Стр = Новый Структура();
   Стр.Вставить("Ссылка",Объект.Ссылка);
   Стр.Вставить("ДатаС",Период);
   Стр.Вставить("ДатаПо",Период);
   Стр.Вставить("Организация",Объект.Организация);
   Стр.Вставить("Подразделение",Объект.Подразделение);
   
   ОткрытьФорму("ВнешнийОтчет.ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП.Форма",Стр,Объект);
   
   //КлючВарианта = ПолучитьКлючВариантаОтчета();
   //Если КлючВарианта <> Неопределено Тогда
   //    ПараметрыФормы.Вставить("КлючВарианта", КлючВарианта);
   //КонецЕсли;
      //ОткрытьФорму("ВнешнийОтчет.ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП.Форма", ПараметрыФормы);       
       
   //ОткрытьФорму("ВнешнийОтчет.ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП.Форма",Стр,Объект);

КонецПроцедуры Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
         
          СтандартнаяОбработка = Ложь;
         
         
         Настройки = КомпоновщикНастроек.ПолучитьНастройки();
         
         Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Ссылка", Ссылка);
         Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаС", ДатаС);
         Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаПо", ДатаПо);
         Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация);
         Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Подразделение", Подразделение);
         
         КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
         
      КонецПроцедуры
Добавил в отчет реквизиты, или нужно обязательно Параметры.Ссылка и тд?

sumsnary

Максим75, только у меня предприятие теперь зависает при открытии отчета

sumsnary

sali, нет нужно передавать параметры текущего документа в отчет и на основе их формировать отчет

sumsnary

 Максим75, к сожалению не помогло пишет что не задано значение параметра

Максим75

Цитата: sumsnary от 03 июн 2025, 14:13Максим75, к сожалению не помогло пишет что не задано значение параметра
значит параметр не задан.
смотрите, у компоновщика есть три вида настроек - настройки, пользовательские и фиксированные. Вам надо именно в настройки записать нужные параметры. Почитайте в инете, много статей чем они отличаются друг от друга. Могу ошибаться, но  Настройки = КомпоновщикНастроек.ПолучитьНастройки() возвращает копию именно пользовательских настроек, а нужны просто настройки.
Вот сделайте как я Вам написал, я скопировал с работающего отчета.

sumsnary

Максим75, А то что управляемая или обычная форма как-то влияет?

Максим75

sumsnary,
Цитата: sumsnary от 03 июн 2025, 15:35Максим75, А то что управляемая или обычная форма как-то влияет?
нет.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск