По теме из базы знаний
- Добавление расшифровки в стандартные и добавленные внешние отчеты со стандартной формой отчета на СКД
- Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)
- Как в СКД по щелчку на какой-либо ячейке в отчете получить значение другой ячейки
- Отчеты с общей формой отчета. Типовые сценарии
- Использование типовой общей формы отчета для нетиповых отчетов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Пока получилось только с помощью формы, которую я сам добавил в отчет.
Кнопка вызова отчета:
В форме отчета:
Кнопка вызова отчета:
&НаКлиенте
Процедура НайтиДелаАрхива(Команда)
СсылкаЗаявки = Элементы.Список.ТекущиеДанные.Ссылка;
ПараметрыОткрытия = Новый Структура("ЗаявкаВАрхивНаСсылка", СсылкаЗаявки);
ОткрытьФорму("Отчет.МестоположениеДел.Форма", ПараметрыОткрытия, ЭтаФорма, Истина);
КонецПроцедуры
В форме отчета:
&НаСервере
Процедура ПередЗагрузкойВариантаНаСервере(Настройки)
ПараметрЗаявкаВАрхивНаСсылка = ЭтаФорма.Параметры.ЗаявкаВАрхивНаСсылка;
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Ссылка", ПараметрЗаявкаВАрхивНаСсылка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СкомпоноватьРезультат();
КонецПроцедуры
Показать
//Общий модуль Клиент
Процедура СКДНастройкиУстановитьПараметр(Настройки,Параметр,Значение,Использовать=Истина) Экспорт
Если ТипЗнч(Настройки)=Тип("НастройкиКомпоновкиДанных") Тогда
Элементы=Настройки.ПараметрыДанных.Элементы;
Иначе
Элементы=Настройки.Элементы;
КонецЕсли;
Для каждого Пар Из Элементы Цикл
Если ""+Пар.Параметр=Параметр Тогда
Пар.Использование=Использовать;
Пар.Значение=Значение;
Возврат;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СКДОтчетОткрыть(ИмяОтчета, ПараметрыОтчета) Экспорт
Настройки=КфСерверВызов.СКДНастройки("ИмяОтчета");
ПользовательскиеНастройки=КфСерверВызов.СКДПользовательскиеНастройки("ИмяОтчета");
ФиксированныеНастройки=КфСерверВызов.СКДФиксированныеНастройки("ИмяОтчета");
Для каждого Параметр Из ПараметрыОтчета Цикл
СКДНастройкиУстановитьПараметр(Настройки,Параметр.Ключ,Параметр.Значение);
СКДНастройкиУстановитьПараметр(ПользовательскиеНастройки,Параметр.Ключ,Параметр.Значение);
СКДНастройкиУстановитьПараметр(ФиксированныеНастройки,Параметр.Ключ,Параметр.Значение);
КонецЦикла;
ПараметрыФормы=Новый Структура("СформироватьПриОткрытии,ФиксированныеНастройки,ПользовательскиеНастройки,Настройки",
Истина,ФиксированныеНастройки,ПользовательскиеНастройки,Настройки);
Уникальность=ТекущаяДата();
ОткрытьФорму("Отчет."+ИмяОтчета+".Форма",ПараметрыФормы,,Уникальность,,,,РежимОткрытияОкнаФормы.Независимый);
КонецПроцедуры
Показать
//Общий модуль СерверВызов
Функция СКДНастройки(Отчет) Экспорт
О=Отчеты[Отчет].Создать();
Возврат О.КомпоновщикНастроек.Настройки;
КонецФункции
Функция СКДПользовательскиеНастройки(Отчет) Экспорт
О=Отчеты[Отчет].Создать();
Возврат О.КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
Функция СКДФиксированныеНастройки(Отчет) Экспорт
О=Отчеты[Отчет].Создать();
Возврат О.КомпоновщикНастроек.ФиксированныеНастройки;
КонецФункции
Показать
(9) Эти процедуры размещены в общих модулях (клиент, сервер+вызов сервера). Вызывать не требуется в общих модулях. Вызывайте, например, в процедуре .НайтиДелаАрхива.
Пример:
В модуле формы:
В общем модуле КФКлиент30 (исправил ошибки в процедуре):
Пример:
В модуле формы:
&НаКлиенте
Процедура Команда1(Команда)
ТестОткрытияОтчета();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьПодразделение(Наименование)
Возврат Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(Наименование);
КонецФункции
&НаКлиенте
Процедура ТестОткрытияОтчета()
ИмяОтчета="ПТПЗаПроизвольныйПериод";
ПараметрыОтчета=Новый Структура;
Период=Новый СтандартныйПериод();
Период.Вариант=ВариантСтандартногоПериода.ПроизвольныйПериод;
Период.ДатаНачала='20180101';
Период.ДатаОкончания=КонецМесяца(Период.ДатаНачала);
ПараметрыОтчета.Вставить("Период",Период);
ПараметрыОтчета.Вставить("БезПредложений",Истина);
ПараметрыОтчета.Вставить("Подразделение1",ПолучитьПодразделение("ОКС"));
КФКлиент30.СКДОтчетОткрыть(ИмяОтчета, ПараметрыОтчета);
КонецПроцедуры
ПоказатьВ общем модуле КФКлиент30 (исправил ошибки в процедуре):
Процедура СКДОтчетОткрыть(ИмяОтчета, ПараметрыОтчета) Экспорт
Настройки=КфСерверВызов.СКДНастройки(ИмяОтчета);
ПользовательскиеНастройки=КфСерверВызов.СКДПользовательскиеНастройки(ИмяОтчета);
ФиксированныеНастройки=КфСерверВызов.СКДФиксированныеНастройки(ИмяОтчета);
Для каждого Параметр Из ПараметрыОтчета Цикл
СКДНастройкиУстановитьПараметр(Настройки,Параметр.Ключ,Параметр.Значение);
СКДНастройкиУстановитьПараметр(ПользовательскиеНастройки,Параметр.Ключ,Параметр.Значение);
СКДНастройкиУстановитьПараметр(ФиксированныеНастройки,Параметр.Ключ,Параметр.Значение);
КонецЦикла;
ПараметрыФормы=Новый Структура("СформироватьПриОткрытии,ФиксированныеНастройки,ПользовательскиеНастройки,Настройки",
Истина,ФиксированныеНастройки,ПользовательскиеНастройки,Настройки);
Уникальность=ТекущаяДата();
ОткрытьФорму("Отчет."+ИмяОтчета+".Форма",ПараметрыФормы,,Уникальность,,,,РежимОткрытияОкнаФормы.Независимый);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот